Turf booleanPointInPolygon始终返回False

2022-03-17 00:00:00 mapbox mapbox-gl-js javascript turfjs

我要检查点是否在多边形中:

if (turf.booleanPointInPolygon(pt, poly_coordinates)) {
    console.log("INSIDE");
} else {
    console.log("OUTSIDE");
}

JSON.stringify(console.log(Pt))显示:

{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[2.1362996,41.391026000000004]}}

JSON.stringify(console.log(poly_coordinates))显示:

[[[2.1666008868967594,41.420742231455876],[2.1423966327457435,41.39486355482066],[2.159906093195218,41.38185595077573],[2.1666008868967594,41.420742231455876]]]

注意:所有内容均采用经纬度格式。

为什么booleanPointInPolygon返回false?此特定情况只是一个示例点和一个可能位于多边形外部的示例多边形。但是,多边形是否包含整个世界并不重要,booleanPointInPolygon仍然为任何点返回false。


解决方案

如果这是您的代码,那么问题是poly_coordinates不是多边形,它只是一个多边形的坐标部分。

您应该有如下内容:

const poly = { type: 'Polygon', coordinates: poly_coordinates }
turf.booleanPointInPolygon(pt, poly)

相关文章