从 featureCollection turf.js 中删除功能

问题描述 投票:0回答:2

我有一个

featureCollection
。每个元素都有
properties
,其中又包含条目
arr
arr
包含
[]
["a",.... n]
。我想删除
featureCollection
中的每个元素,其中
arr.length !== 0
.

我该如何在

turf.js
(版本5.1.6)中做到这一点? 有固有的功能吗?或者我必须使用简单的
dict
突变,原生于
JS

javascript geospatial geojson turfjs
2个回答
2
投票

从 TurfJS v5.1.6 开始,TurfJS 中没有通过特征属性过滤特征集合的功能。

对于这类事情,只需使用本机 JavaScript 函数,例如@Rajesh 建议的数组过滤方法

var matchingFeatures = featureCollection.features.filter(function (feature){ 
   return feature.properties.arr.length === 0 
})

0
投票

您可以使用

featureReduce
featureCollection
(来自
@turf/meta
@turf/helpers
)有效地实现这一目标

  Feature,
  Geometries,
  Properties,
  featureCollection,
} from "@turf/helpers";
import { featureReduce } from "@turf/meta";

export function filterGeo(input: any, func: (feature: any) => boolean): any {
  featureCollection(
    featureReduce(
      input,
      (arr, cur) => {
        if (func(cur)) {
          arr.push(cur);
        }
        return arr;
      },
      [] as Array<Feature<Geometries, Properties>>
    )
  );
}

const filtered = filterGeo(featureCollection, feature => (
  feature.properties.arr.length === 0
));
© www.soinside.com 2019 - 2024. All rights reserved.