【问题标题】:Identify point inside a polygon (inclusive of point lying on boundaries and edges)识别多边形内的点(包括位于边界和边缘上的点)
【发布时间】:2018-08-08 11:07:53
【问题描述】:

我正在使用 turf.js 来查找多边形内的一个点,我发现问题持续存在于几个用例中,其中一个用例如下所述用例(即对于点 (X=32.8,Y=40 ). 我还绘制了 turf.booleanPointInPolygon 显示为假的图像以供参考。 Image of Graph plot

var turf = require("@turf/turf");

var pt = turf.point([32.8,40]);
var poly = turf.polygon([[

 [ 7.2  ,           160.0],
[38.3,              30.0],
[65.1   ,           30.0],
[62.3   ,           96.0],
[18.4   ,           325.0],
[7.6    ,           380.0],
[7.5    ,           307.0],
[7.4    ,           234.0],
[7.2    ,           160.0]

]]);

var bool = turf.booleanPointInPolygon(pt, poly, {ignoreBoundary: false});
//bool = false, even though the point is inside the polygon

无法识别多边形内的点,这是 turf.js 的故障。 如何向 turf.js 报告。请任何人帮忙解决这个问题。

【问题讨论】:

  • 你能解释一下它是怎么错的吗?我还附上了一张图像,其中该点正好位于多边形内,并且 turf.booleanPointInPolygon 显示为假。请解释一下。

标签: javascript turfjs


【解决方案1】:

我使用 javascript 中的Math.log(x) 将笛卡尔 x 轴数组、y 轴数组和要找到的点转换为对数比例,然后再输入 turf.js 以创建多边形和要在其中找到的点。它现在可以正确渲染。主要缺陷是我以对数比例绘制坐标,并通过传递笛卡尔数据(在发送到草皮之前将其转换为对数比例)来寻求草皮解决方案

【讨论】:

    【解决方案2】:

    您的点不在多边形内。 turf.js 中没有错误。您可能被骗了,因为您绘制的图表完全错误。

    这是您的多边形在图表上的样子。你看到你的点 (J) 显然在外面:

    【讨论】:

    • 嘿,你能告诉我你用来绘图的工具是什么吗?我也将其绘制为对数图,而不是简单的 XvsY 图
    • 知道了。 Turf 正在使用典型的 XvsY 散点图,但我的表示呈现为对数图。您能否为此提出任何解决方案。我找不到任何合适的方法来查找多边形内的点(现在我必须检查以对数刻度表示的 polgon)
    • 您好,我找到了解决方案。在输入到 turf.js 以创建多边形和要找到的点之前,我使用 JavaScript 中的 Math.log(x) 将笛卡尔 x 轴数组、y 轴数组和要找到的点转换为对数比例。它现在可以正确渲染。主要缺陷是我以对数比例绘制坐标,并通过传递笛卡尔数据(在发送到草皮之前将其转换为对数比例)来寻求草皮解决方案
    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 2019-10-03
    • 2021-05-22
    • 2020-05-26
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多