问题标签 [point-in-polygon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
650 浏览

algorithm - 快速点-(> 100.000.000)-in-polygon-(> 10.000)-test 的索引

问题

我正在使用 openstreetmap-data 并想测试它们所在的多边形中的点特征。总共有 10.000 个多边形和 100.000.000 个点。我可以将所有这些数据保存在内存中。多边形通常有 1000 个点,因此进行多边形中的点测试非常昂贵。

主意

我可以用 R-Tree 索引所有多边形,允许我只检查边界框被命中的多边形。

可能的新问题

由于多边形相互接触(想想​​行政边界),在不止一个多边形的边界框中有很多点,因此迫使许多点在多边形测试。

问题

你有什么比使用 R-Tree 更好的建议吗?

0 投票
0 回答
255 浏览

c# - 多边形中的点*在地图上*

我正在使用 Visual Studio 2010,包括参考动态数据显示图。我通过在点之间绘制 DragglePoints 和 Segments 来绘制地图多边形。我找到了一个代码,它发现点(x,y)是否在多边形中,但在地图上它不起作用。

和函数 PointInPolygon:

无论我在多边形内部还是外部单击, 这里c总是返回为。and and and被赋予了一个完美的变量——关于地图的值。falsepoints[i].Position.Ypoints[i].Position.XpointClicked.Position.YpointClicked.Position.X

0 投票
1 回答
1772 浏览

java - 计算鼠标位置是否在菱形多边形的范围内

我在面板上绘制了一个菱形,我正在尝试计算鼠标位置是否在其范围内。问题在于钻石,它需要四个坐标组成四条线来创建形状。钻石

最简单的方法是在钻石的边界内创建/拟合一个正方形,但我想考虑外面的剩余三角形区域。我最初以为我试图计算两点之间的斜率,并通过将斜率添加到方程中来确定鼠标的 x 和 y 是否与线相交,但事实证明,当涉及到线时,这要困难得多假设菱形的中心不为零,则构成 TOP->RIGHT、RIGHT->BOTTOM 和 BOTTOM->LEFT。

是否有更简单的实现来检查鼠标的 x,y 是否在菱形的范围内?

0 投票
1 回答
197 浏览

algorithm - 点在带有分区的任意多边形内

假设我有一个多边形。它可以是凸面的,也可以不是凸面的,没关系,但它没有孔。它还具有“内部”顶点和边,这意味着它是分区的。

当我想检查一个点是否在那种多边形内时,是否有任何流行/已知的算法或标准程序?

我问是因为在这种情况下绕组数和光线投射不准确

提前致谢

0 投票
4 回答
5482 浏览

postgresql - POSTGIS:找到多边形内的所有点

我有一个包含点的表

我希望找到每个多边形中包含的所有点。即结果应该看起来像

我设法逐点检查并确定它是否在使用ST_CoveredBy(thePoint, aPolygon). 基于此,天真的解决方案是在所有点和多边形上进行嵌套循环,但肯定有一种更有效和正确的方法来实现这一点。

0 投票
1 回答
362 浏览

java - opengis多边形中的点

我有一个给定的 opengis-Polygon (org.opengis.geometry.coordinate.Polygon),我需要一种方法来确定给定点是否在该多边形跨越的区域内。到目前为止,我使用:polygon.getBoundary().getMbRegion().contains(point). 只要多边形没有“倾斜”就可以正常工作,因为它会检查最大和最小纬度和经度并将它们与点的坐标进行比较。polygon.getSurface()我会直观地使用它为我返回 null ,polygon.getBoundary()否则只会让我访问多边形边界上的点。我想尝试的另一件事是实现光线投射算法。但要实现这一点,我还没有找到在 opengis/GeoTools 中创建射线的可能性。

感谢您提前提供任何答案!

0 投票
1 回答
411 浏览

point-in-polygon - 不相交多边形中的点

我想检查给定点是否位于多边形内。
我已经使用光线投射研究了多边形方法中的点,但我不确定在给定多边形不相交的情况下它将如何工作。例如,如果多边形的中心有一个“洞”。在这种情况下如何使用此功能?
在此处输入图像描述

0 投票
1 回答
404 浏览

r - 根据包含它的多边形标记一个点(纽约市公民地理空间数据)

我有纽约市 5449 棵树的经度和纬度,以及 55 个不同的邻里制表区 (NTA) 的 shapefile。每个 NTA 在 shapefile 中都有一个唯一的 NTACode,我需要在 long/lat 表中附加第三列,告诉我每棵树属于哪个 NTA(如果有)。

我已经在stackoverflow上使用其他多边形点线程取得了一些进展,尤其是这个查看多个多边形的线程,但是在尝试使用gContains时我仍然遇到错误并且不知道如何检查/标记不同多边形的每棵树(我猜是某种 sapply 或 for 循环?)。

下面是我的代码。数据/shapefile 可以在这里找到:http: //bit.ly/1BMJubM

我们正在检查的 NTA 是这些(在 GIS 中可视化):http ://bit.ly/1A3jEcE

0 投票
1 回答
3993 浏览

python - 使用 Shapely 查找多边形的最大内接矩形

我试图在六个多边形内定位数百万个点。这是我的代码:

我已经阅读了其他问题,这些问题涉及使用 shapely 提高多边形内点查询的性能。他们建议使用 Rtree。但是,这似乎对于有许多多边形(一个问题中为36,000,另一个问题中为100,000)并且不希望全部循环的情况很有用。

如您所见,我已经设置了一个边界框。这是我的形状设置代码:

检查另一个非常简化的 shape 版本是否有用,即由最大的内接矩形(或三角形)组成的版本?

检查匀称的文档,似乎没有这个功能。也许一些设置simplify()?当然,我总是想确保新的简化形状不会超出原始形状的范围,因此我不必调用contains()实际形状。我还认为我想让新的简化形状尽可能简单,以提高速度。

任何其他建议也值得赞赏。谢谢!

编辑:在等待回复时,我想到了创建满足我要求的简化形状的想法:

以下是我在测试每个点时使用它的方式:

这并不完美,因为在完成必要的操作后,形状并不像它可能的那么简单intersection()。然而,这种方法已经使处理时间减少了 60%。在我的测试中,简单多边形用于 85% 的点查询。

编辑 2:GIS StackExchange 上的另一个相关问题: Python 效率 — 需要有关如何以更有效的方式使用 OGR 和 Shapely 的建议。这涉及大约 3,000 个多边形中的 150 万个点。

0 投票
1 回答
1032 浏览

json - 斯威夫特:多边形中的点?如何检查用户的位置是否在 Geo-JSON 多边形内?

我有一个用户的位置坐标。鉴于该位置位于其中一个多边形中,我如何使用 Swift 或 Objective-C 通过 OBJECTID 返回它落在哪个多边形中?

我使用的示例 JSON 多边形数据如下所示: