如何使用 ArcGIS Esri 地图中的自定义条件过滤要素图层属性?
How to filter a feature layer attributes using custom criteria in ArcGIS Esri map?
我在 Angular
应用程序内将一个地块图层集成到我的 Esri 地图中。现在我想过滤并仅显示满足以下条件的特定地块。
building_area等于0,Number_of_units同样等于0。
如何根据这些条件筛选要素图层?
.ts
const parcelLayer = new FeatureLayer({
url: this.featureLayerUrl,
});
const esriLayers = [parcelLayer,ageLayer];
const map = new Map({
basemap: 'topo-vector',
layers: esriLayers
});
const view = new MapView({
container,
map: map,
zoom: 4,
center: [-97.63, 38.34],
});
const createEsriPopupTemplate = function(layer) {
const config = {
fields: layer.fields.map(field => (
{
name: field.name,
type: field.type,
alias: formatName(field.alias)
}
)),
title: formatName(layer.title)
};
return popupUtils.createPopupTemplate(config);
}
for (const layer of esriLayers) {
view.whenLayerView(layer).then(function (layerView) {
const popupTemplate = createEsriPopupTemplate(layer)
if (!popupTemplate) {
console.log("FeatureLayer has no fields.")
} else {
layer.popupTemplate = popupTemplate;
}
});
}
您可以使用 FeatureLayer
definitionExpression
属性 来实现您的目标。
ArcGIS JS API - FeatureLayer definitionExpression
此 属性 允许您过滤将向服务器请求的要素,并因此显示在地图中。这是一种非常强大的过滤层数据以进行分析、查看和性能的方法。
在你的情况下这应该有效,
const parcelLayer = new FeatureLayer({
url: this.featureLayerUrl,
definitionExpression: "building_area=0 AND Number_of_units=0"
});
我在 Angular
应用程序内将一个地块图层集成到我的 Esri 地图中。现在我想过滤并仅显示满足以下条件的特定地块。
building_area等于0,Number_of_units同样等于0。
如何根据这些条件筛选要素图层?
.ts
const parcelLayer = new FeatureLayer({
url: this.featureLayerUrl,
});
const esriLayers = [parcelLayer,ageLayer];
const map = new Map({
basemap: 'topo-vector',
layers: esriLayers
});
const view = new MapView({
container,
map: map,
zoom: 4,
center: [-97.63, 38.34],
});
const createEsriPopupTemplate = function(layer) {
const config = {
fields: layer.fields.map(field => (
{
name: field.name,
type: field.type,
alias: formatName(field.alias)
}
)),
title: formatName(layer.title)
};
return popupUtils.createPopupTemplate(config);
}
for (const layer of esriLayers) {
view.whenLayerView(layer).then(function (layerView) {
const popupTemplate = createEsriPopupTemplate(layer)
if (!popupTemplate) {
console.log("FeatureLayer has no fields.")
} else {
layer.popupTemplate = popupTemplate;
}
});
}
您可以使用 FeatureLayer
definitionExpression
属性 来实现您的目标。
ArcGIS JS API - FeatureLayer definitionExpression
此 属性 允许您过滤将向服务器请求的要素,并因此显示在地图中。这是一种非常强大的过滤层数据以进行分析、查看和性能的方法。
在你的情况下这应该有效,
const parcelLayer = new FeatureLayer({
url: this.featureLayerUrl,
definitionExpression: "building_area=0 AND Number_of_units=0"
});