问题标签 [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.
algorithm - 快速点-(> 100.000.000)-in-polygon-(> 10.000)-test 的索引
问题
我正在使用 openstreetmap-data 并想测试它们所在的多边形中的点特征。总共有 10.000 个多边形和 100.000.000 个点。我可以将所有这些数据保存在内存中。多边形通常有 1000 个点,因此进行多边形中的点测试非常昂贵。
主意
我可以用 R-Tree 索引所有多边形,允许我只检查边界框被命中的多边形。
可能的新问题
由于多边形相互接触(想想行政边界),在不止一个多边形的边界框中有很多点,因此迫使许多点在多边形测试。
问题
你有什么比使用 R-Tree 更好的建议吗?
c# - 多边形中的点*在地图上*
我正在使用 Visual Studio 2010,包括参考动态数据显示图。我通过在点之间绘制 DragglePoints 和 Segments 来绘制地图多边形。我找到了一个代码,它发现点(x,y)是否在多边形中,但在地图上它不起作用。
和函数 PointInPolygon:
无论我在多边形内部还是外部单击,
这里c
总是返回为。and and and被赋予了一个完美的变量——关于地图的值。false
points[i].Position.Y
points[i].Position.X
pointClicked.Position.Y
pointClicked.Position.X
java - 计算鼠标位置是否在菱形多边形的范围内
我在面板上绘制了一个菱形,我正在尝试计算鼠标位置是否在其范围内。问题在于钻石,它需要四个坐标组成四条线来创建形状。
最简单的方法是在钻石的边界内创建/拟合一个正方形,但我想考虑外面的剩余三角形区域。我最初以为我试图计算两点之间的斜率,并通过将斜率添加到方程中来确定鼠标的 x 和 y 是否与线相交,但事实证明,当涉及到线时,这要困难得多假设菱形的中心不为零,则构成 TOP->RIGHT、RIGHT->BOTTOM 和 BOTTOM->LEFT。
是否有更简单的实现来检查鼠标的 x,y 是否在菱形的范围内?
algorithm - 点在带有分区的任意多边形内
假设我有一个多边形。它可以是凸面的,也可以不是凸面的,没关系,但它没有孔。它还具有“内部”顶点和边,这意味着它是分区的。
当我想检查一个点是否在那种多边形内时,是否有任何流行/已知的算法或标准程序?
我问是因为在这种情况下绕组数和光线投射不准确
提前致谢
postgresql - POSTGIS:找到多边形内的所有点
我有一个包含点的表
我希望找到每个多边形中包含的所有点。即结果应该看起来像
我设法逐点检查并确定它是否在使用ST_CoveredBy(thePoint, aPolygon)
. 基于此,天真的解决方案是在所有点和多边形上进行嵌套循环,但肯定有一种更有效和正确的方法来实现这一点。
java - opengis多边形中的点
我有一个给定的 opengis-Polygon (org.opengis.geometry.coordinate.Polygon),我需要一种方法来确定给定点是否在该多边形跨越的区域内。到目前为止,我使用:polygon.getBoundary().getMbRegion().contains(point)
. 只要多边形没有“倾斜”就可以正常工作,因为它会检查最大和最小纬度和经度并将它们与点的坐标进行比较。polygon.getSurface()
我会直观地使用它为我返回 null ,polygon.getBoundary()
否则只会让我访问多边形边界上的点。我想尝试的另一件事是实现光线投射算法。但要实现这一点,我还没有找到在 opengis/GeoTools 中创建射线的可能性。
感谢您提前提供任何答案!
point-in-polygon - 不相交多边形中的点
我想检查给定点是否位于多边形内。
我已经使用光线投射研究了多边形方法中的点,但我不确定在给定多边形不相交的情况下它将如何工作。例如,如果多边形的中心有一个“洞”。在这种情况下如何使用此功能?
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
python - 使用 Shapely 查找多边形的最大内接矩形
我试图在六个多边形内定位数百万个点。这是我的代码:
我已经阅读了其他问题,这些问题涉及使用 shapely 提高多边形内点查询的性能。他们建议使用 Rtree。但是,这似乎对于有许多多边形(一个问题中为36,000,另一个问题中为100,000)并且不希望全部循环的情况很有用。
如您所见,我已经设置了一个边界框。这是我的形状设置代码:
检查另一个非常简化的 shape 版本是否有用,即由最大的内接矩形(或三角形)组成的版本?
检查匀称的文档,似乎没有这个功能。也许一些设置simplify()
?当然,我总是想确保新的简化形状不会超出原始形状的范围,因此我不必调用contains()
实际形状。我还认为我想让新的简化形状尽可能简单,以提高速度。
任何其他建议也值得赞赏。谢谢!
编辑:在等待回复时,我想到了创建满足我要求的简化形状的想法:
以下是我在测试每个点时使用它的方式:
这并不完美,因为在完成必要的操作后,形状并不像它可能的那么简单intersection()
。然而,这种方法已经使处理时间减少了 60%。在我的测试中,简单多边形用于 85% 的点查询。
编辑 2:GIS StackExchange 上的另一个相关问题: Python 效率 — 需要有关如何以更有效的方式使用 OGR 和 Shapely 的建议。这涉及大约 3,000 个多边形中的 150 万个点。
json - 斯威夫特:多边形中的点?如何检查用户的位置是否在 Geo-JSON 多边形内?
我有一个用户的位置坐标。鉴于该位置位于其中一个多边形中,我如何使用 Swift 或 Objective-C 通过 OBJECTID 返回它落在哪个多边形中?
我使用的示例 JSON 多边形数据如下所示: