草皮-获取一个点范围内的geojson的所有功能

时间:2019-04-29 09:02:56

标签: geojson calculation turfjs

我有一个带有几个功能的geojson,例如。街道的网格,并希望获取所有在特定点周围一定半径内的街道和其他要素。

我该如何用草皮做到这一点?我当时想遍历所有点,并将距离与turf.distance(from, to, options);进行比较。

但是也许有更好的方法。

这是在后台有地图的基础,但是我想在不使用任何地图框架的情况下进行计算。

在此示例中,它应返回街道特征+最近距离。

enter image description here

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您可以将要查找的特征视为点(而不是直线),则快速而优雅的解决方案是使用geokdbush

基于其文档,它正在对地理空间最近邻搜索使用快速实现。

例如(假设圆心在[centerLong, centerLat]上)

const KDBush = require('kdbush');
import * as geokdbush from 'geokdbush';

getLong = (p) => p.geometry.coordinates[0];
getLat = (p) => p.geometry.coordinates[1];

//build an index from all interesting (point) features  
const geoIndex = new KDBush(interestingFeaturesGeoJson.features, getLong, getLat);

//find the nearest ones to a specific point
const nearestPoints = geokdbush.around(geoIndex, centerLong, centerLat, 
        maxFeaturesToReturn, radiusInKm);