我正在尝试遍历一系列多边形,以查看我的单点是否存在于其中一个多边形中。根据我的阅读,我需要导入 topojson,将其转换为 geojson 对象,然后遍历每个多边形检查点。这是我使用 D3、Topojson 和 Turf 所拥有的...
const point = turf.point([long, lat]);
d3.json('data/myAreas.json').then((myAreas) => {
const keys = Object.keys(myAreas.objects);
const geo = topojson.feature(myAreas, myAreas.objects[keys[0]]);
geo.features.forEach((area) => {
const searchWithin = turf.polygon([[area.geometry.coordinates[0]]]);
const ptsWithin = turf.pointsWithinPolygon(point, searchWithin);
console.log('ptsWithin?', ptsWithin);
});
});
当它到达时const searchWithin = turf.polygon([[area.geometry.coordinates[0]]]);
会引发以下错误......
Uncaught (in promise) Error: Each LinearRing of a Polygon must have 4 or more Positions.
我试过D3 d3.geoContain()
,但false
每次都扔。我对替代解决方案持开放态度,这些解决方案将检查纬度/经度坐标是否在 topojson 形状内。谢谢。