You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用$.getJSON函数筛选GeoJSON数据并赋值给geojson变量

解决GeoJSON数据筛选并赋值给geojson的问题

我来帮你搞定这个GeoJSON筛选的问题!你当前的代码只是提取了要素的properties,但没有对原始GeoJSON数据做筛选,也没把筛选后的结果赋值给geojson变量。下面我一步步给你讲怎么修改:

1. 先明确你的筛选条件

首先得确定你要保留哪些要素——比如是筛选properties里type为city的要素,还是人口大于某个数值的区域?先把筛选规则明确下来。

2. 筛选features并构建新的GeoJSON对象

GeoJSON的结构是固定的(通常是FeatureCollection类型,包含features数组),所以我们需要过滤features数组,然后重新组装成完整的GeoJSON对象,再赋值给geojson。

3. 修改后的代码示例

假设你的筛选条件是保留properties中type等于city的要素,修改后的代码如下:

// Fetch the GeoJSON file 
$.getJSON(config.geojson, function (rawData) { 
  // 定义你的筛选条件,根据实际需求修改!
  const shouldKeepFeature = (feature) => {
    // 这里可以加各种判断,比如多条件组合:
    // return feature.properties.type === 'park' && feature.properties.area > 10;
    return feature.properties && feature.properties.type === 'city';
  };

  // 筛选符合条件的要素数组
  const filteredFeatures = rawData.features.filter(shouldKeepFeature);
  // 如果你习惯用jQuery的方法,也可以换成$.grep:
  // const filteredFeatures = $.grep(rawData.features, shouldKeepFeature);

  // 构建筛选后的完整GeoJSON对象,保留原始的顶级属性(比如type、crs等)
  geojson = {
    ...rawData, // 复制原始GeoJSON的type、crs等属性
    features: filteredFeatures // 替换为筛选后的要素数组
  };

  // 如果你还需要提取筛选后的properties,继续保留这段代码
  features = $.map(geojson.features, function(feature) { 
    return feature.properties; 
  }); 

  // 把筛选后的GeoJSON添加到图层
  featureLayer.addData(geojson); 
  buildConfig();
});

关键说明

  • 一定要重新构建完整的GeoJSON对象,不能只把筛选后的features赋值给geojson——因为GeoJSON需要type等顶级属性才能被图层正确识别。
  • 把shouldKeepFeature里的判断逻辑换成你实际需要的筛选规则就行,比如数值比较、字符串匹配、多条件组合都可以。

内容的提问来源于stack exchange,提问作者Tanner A.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:54:25