问题标签 [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 投票
1 回答
2115 浏览

vb.net - 使用 Raycasting 算法进行具有纬度/经度坐标的 Point-In-Polygon 测试

我已经成功使用 DotSpatial.Contains 函数来测试我的每个点(180 万)是否位于我的 shapefile 中。但是,该算法非常慢,因为我正在测试大量点和非常复杂的多边形。这是一个例子: http: //picload.org/image/igararl/pointshapesel.png

图像中德国的边界是我的shapefile,用于选择点(简化,但仍然是14.000个顶点),红色矩形是我的180万个点所在的区域。

为了对空间纬度/经度坐标进行更快的多边形点测试,我遇到了光线投射算法: http ://alienryderflex.com/polygon/

我将代码翻译成 VB.Net,它运行没有错误,但它没有找到任何点/shapefile 的交集。我知道纬度/经度坐标的困难 - 但在德国地区,纬度/经度坐标与标准笛卡尔坐标系相匹配。

这是我的(该)代码。出于速度的原因,我首先声明了全局变量:

然后我将我的 Shapefile 顶点添加到 polyCorners 列表中(这有效):

在实际搜索之前,我按照作者的建议调用 precalc_values() :

最后,我为每个 lat/lng 点调用 pointInPolygon():

所有变量似乎都正确填充,数组包含我的多边形角,并且从第一个点到最后一个点准确检查点列表。它在 20 秒内运行了 180 万个点的完整列表(相比之下,使用 DotSpatial.Contains 函数需要 1 小时 30 分钟)。任何人都知道为什么它没有找到任何相交点?

0 投票
3 回答
7343 浏览

python - 在python中查找点是否在3D多边形中

我试图找出一个点是否在 3D 多边形中。我使用了另一个我在网上找到的脚本来处理许多使用光线投射的 2D 问题。我想知道如何将其更改为适用于 3D 多边形。我不会看有很多凹面或孔或任何东西的非常奇怪的多边形。这是python中的2D实现:

任何帮助将不胜感激!谢谢你。

0 投票
1 回答
134 浏览

c - 多边形中的点 - 错误的算法

我有一个算法的 C 代码,用于检查给定点是否在多边形内。它应该是正确的,我还在各个地方看到这个代码。然而,当我使用它时,它并不能完美地工作——大约 20% 的答案是错误的。

也许我的主要功能有问题。有人可以给我一个主要功能来检查这个算法吗?


这是我的主要功能

0 投票
1 回答
400 浏览

python - 如何检查pointsD是否在多边形python 2.7的线内(无导入)

我在这里看到了一个可靠的算法,可以检查一个点是否在多边形内。

好吧,我用点和多边形检查了它:

point_inside_polygon(0.3,0.5,[(0.5,0),(1,0.5),(0.5,1),(0,0.5)]) point_inside_polygon(0.3,1,[(0.5,0),(1,0.5),(0.5,1),(0,0.5)])

当然输出是正确的:

然后我尝试自己使用它,我可以做的最微小的改变使它适合我的程序:

当我尝试时:

输出错误:假,真。

帮助?

0 投票
1 回答
1661 浏览

c++ - 确定多边形与边界框相交的有效方法

我有一组多边形,我需要检查它们是否与给定的边界框(矩形)相交。我正在做的是,我正在获取多边形的每个顶点并检查它是否在边界框内。

这种接近的方式花费了太多时间。我想要另一种比这更快的算法。我试图在谷歌上搜索答案,但找不到任何东西。我尝试在 github 上查找 mysql st_intersects() 函数的代码,但我再次找不到该函数代码。

我知道有很多算法,但是因为我是这个领域的新手,所以我找不到算法,所以我使用了上述方法。

0 投票
1 回答
455 浏览

mysql - MySQL的多边形函数中的点

我将 GPS 信息存储在多个 MySQL 表中,结构如下
:(在 Ubuntu Server 14.04.1 上运行 MySQL Server 版本 5.5.43)

event_number, 时间, 纬度, 经度
1, 12:52:50, 40.5401, -86.5715
1, 12:52:51, 40.5404, -86.5707
1, 12:52:52, 40.5406, -86.5699
1, 12:52:53 , 40.5409, -86.5691
1, 12:52:54, 40.5411, -86.5683
1, 12:52:55, 40.5414, -86.5676
2, 13:22:35, 40.9723, -85.1755
2, 13:26:36, 40. , -85.1759
2, 13:22:37, 40.9728, -85.1762
2, 13:22:38, 40.9731, -85.1766
2, 13:22:39, 40.9734, -85.1770
2, 13:22:40, 40.9737, - 85.1773

每个表代表一个单独的车辆,每个表中有数百个单独的“行程”。

目标是通过测试每小时有多少车辆到达边界框来找到泊松分布的 lambda。虽然有几种算法可以确定一个点是否在多边形内,但我只关心车辆进入边界区域的初始时间。

我愿意接受任何建议。理想情况下,我想在 MySQL 中创建一个函数,它可以计算每小时进入边界区域的车辆数量。

0 投票
1 回答
656 浏览

python - 以二进制表示的交叉数/绕组数多边形测试(Python)

我正在尝试实现主要围绕布尔运算构建的绕组数或交叉数测试。布尔值的要求是由于底层数据集的方法和效率,使得将变量委托给除布尔值之外的计数是次优的。

交叉数似乎最容易实现(我认为),因为它本质上是二进制的(偶数(0)与奇数(1)),其中每一侧的交叉数测试的结果可以xor与之前的结果相结合,例如在下面给出的代码中,xyz我们评估的坐标在哪里。代码最后改编自http://geomalgorithms.com/a03-_inclusion.html

结果:对于整个图像,二进制流导致这些图像中的每个正方形都是一个步骤。显然有些不对劲,但我似乎无法弄清楚为什么它在绕过右下角后变得混乱......有什么想法吗?

视觉结果

0 投票
0 回答
90 浏览

php - 点内多边形奇怪的结果

我想确定坐标是否在多边形内,但是我得到了不在多边形内的额外结果。几乎就像它只检查纬度或经度是否在范围内,但不是同时检查两者。有任何想法吗??

0 投票
1 回答
9578 浏览

ios - 如何使用 MapKit 和 swift 绘制多边形叠加层

我正在尝试获取以下代码以在地图上绘制多边形,但由于某种原因它不起作用。我在这里做错了什么?

0 投票
3 回答
26892 浏览

leaflet - 确定一个点是否位于传单多边形内

假设我在下面的演示中使用传单绘制一个多边形:http: //leaflet.github.io/Leaflet.draw/

我的问题是如何确定给定点是否位于多边形内。