Я пытаюсь перебрать серию полигонов, чтобы увидеть, существует ли моя единственная точка в одном из этих полигонов. Из того, что я прочитал, мне нужно импортировать топойсон, преобразовать его в объект геойсон и пройтись по каждому полигону, проверяя точку. Вот что у меня есть, используя 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's d3.geoContain()
, но каждый раз получалось false
. Я открыт для альтернативных решений, которые проверят, находится ли координата широта / долгота в форме топойсона. Благодаря.