D3.js with Turf.js error:“未捕获(承诺中)错误:多边形的每个线性化必须有4个或更多位置。”

D3.js with Turf.js error:“未捕获(承诺中)错误:多边形的每个线性化必须有4个或更多位置。”,d3.js,topojson,turfjs,D3.js,Topojson,Turfjs,我试图在一系列多边形中循环,看看我的单个点是否存在于其中一个多边形中。根据我所读的内容,我需要导入topojson,将其转换为geojson对象,并循环检查每个多边形的点。下面是我使用D3、Topojson和Turf所得到的 const point = turf.point([long, lat]); d3.json('data/myAreas.json').then((myAreas) => { const keys = Object.keys(myAreas.objects);

我试图在一系列多边形中循环,看看我的单个点是否存在于其中一个多边形中。根据我所读的内容,我需要导入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=turp.polygon[[area.geometry.coordinates[0]];它抛出以下错误

Uncaught (in promise) Error: Each LinearRing of a Polygon must have 4 or more Positions.

我试过D3的D3.geoContain,但每次都抛出false。我对其他解决方案持开放态度,这些解决方案将检查纬度/液化天然气坐标是否在地形形状内。谢谢。

这就是我最终的工作,用turp.multiPolygon替换turp.polygon


所以这就是我最终的工作,用Turp.multiPolygon替换Turp.polygon

我也犯了同样的错误

后来我发现我没有充分嵌套我呈现给Turp.polygon的数组

从上面的示例中选取以下行

const searchWithin = turf.polygon([[area.geometry.coordinates[0]]]);
我认为这实际上应该是额外的[]括号:

const searchWithin = turf.polygon([[[area.geometry.coordinates[0]]]]);
以下是TurbJS网站的一个示例:

var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);
我也犯了同样的错误

后来我发现我没有充分嵌套我呈现给Turp.polygon的数组

从上面的示例中选取以下行

const searchWithin = turf.polygon([[area.geometry.coordinates[0]]]);
我认为这实际上应该是额外的[]括号:

const searchWithin = turf.polygon([[[area.geometry.coordinates[0]]]]);
以下是TurbJS网站的一个示例:

var poly = turf.polygon([[[0,29],[3.5,29],[2.5,32],[0,29]]]);

您没有使用searchWithin。您是否真的需要turp.polygon=turp.polygorea.geometry.coordinates的双[];对不起,凌晨3点的帖子,哈哈。我已经编辑了我原来的帖子。错误仍然存在。您没有使用SearchIn。您是否真的需要turp.polygon=turp.polygorea.geometry.coordinates的双[];对不起,凌晨3点的帖子,哈哈。我已经编辑了我原来的帖子。错误仍然存在。虽然没有得到错误,但结果多边形在我的情况下是不正确的。虽然没有得到错误,但在我的例子中,生成的多边形是不正确的。