问题标签 [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 回答
1540 浏览

matlab - 计算多边形上的像素数

我一直在拍摄图像并在其上绘制轮廓。我需要在三个类别中计算像素的数量和它们的位置(在 MATLAB 中)

  1. 曲线外的像素
  2. 曲线内的像素
  3. 曲线边界上的像素。

我曾尝试在 MATLAB 中使用 inpolygon。它可以计算内部和外部的像素,但不能计算边界上的像素。在边界上,它只计算那些直接通过小网格中心的那些。我还需要计算轮廓通过小网格的四个边缘中的任何一个的那些像素。

请帮忙。我提供了下面的代码。

如果图像显示不正确,请参考链接: 1.原始图像和轮廓 2.绿色 - 内部,红色 - 外部

可以看出,轮廓上的点没有用蓝色标记。事实上,count3 几乎总是给出输出 0。所以 inpolygon 在计算边界上的点时效率不高。

如何修改我的代码以便也计算这些像素?谢谢大家。

0 投票
0 回答
684 浏览

r - R:确定一个点是否位于由contourLines()生成的单独多边形组成的区域内

我正在使用 R 中的函数 contourLines() 根据概率密度估计记录轮廓的顶点。然后我测试一个点是否位于轮廓区域内。当仅从轮廓线创建一个区域(多边形)时,我可以轻松地进行此测试,但有时会创建多个多边形。我试图想出一种方法来确定一个点是否位于多个多边形轮廓内。

到目前为止,我的想法是计算生成的多边形数量并分别处理每个多边形。我在想我可以使用图论来确定生成的多边形的数量,因为在 2 个单独的多边形上的点之间不会有路径。

可能有更简单的方法。有什么建议么?

提前致谢,

HS

0 投票
1 回答
627 浏览

floating-point - 我可以使用什么线多边形裁剪算法来确保生成的端点始终在多边形内?

我有一个 2D 平面,划分为 n 边凸多边形。我正在使用WRF 的 PNPOLY 算法进行多边形包含,以确保一个点属于一个且仅属于一个多边形。

是否有一种算法可以用来将线段PO剪裁到平面中的给定多边形,假设pnpoly(O) == true, 这样pnpoly(P')将始终为真?

多边形段剪裁图

我当前的 clipToPoly 实现对线段和多边形的每个边缘进行线线相交测试,然后使用相交点(如本 SO 答案中所述),但这并不总是产生满足 PNPOLY 的点。

这是我对 PNPOLY 的实现:

我认为我对 Simplicity 的模拟,或者在使用浮点数正确处理边缘情况时如何处理 PNPOLY 的半开集了解不够。

例如:

这失败了,因为根据 PNPOLY 不包括 (1,1) (它位于集合的开放侧),但 clipToPoly 没有考虑到这一点。如果我知道它在集合的开放端,我想我可以用 epsilon 轻推它,但我更喜欢更稳定的解决方案。

另一个例子:

在这种情况下,clipToPoly 失败,因为O非常靠近多边形的边缘,由于浮点不精确,它甚至没有检测到相交。

有没有办法让 clipToPoly 的浮点不精确度与 PNPOLY 相匹配,以便两者保持一致?

0 投票
4 回答
5598 浏览

android - 使用android中的位置类指向多边形算法?

我有一组形成闭合路径(类似于多边形)的位置。有没有可能的方法来检查某个纬度和经度是否在封闭路径内?

0 投票
1 回答
790 浏览

c# - c#查找所有包含坐标的多边形的最佳方式/数据结构?

我有大约 10'000 个由纬度/经度点组成的多边形。每个多边形都有关于它是什么以及它包含什么的元数据。所有多边形都可以相互交叉。

我现在要做的是获取所有包含特定纬度/经度点的多边形。

什么是这样做的有效方法?有没有比遍历所有多边形并分别检查它们更快的方法?是否有某种智能索引数据结构,我可以在其中存储多边形,以便我可以在 C# 中进行这样的查询?

0 投票
1 回答
910 浏览

javascript - Javascript从坐标数组中的某个坐标找到最远的坐标

我知道中心坐标和多边形所有坐标的数组。如何使用 Javascript 找出哪个坐标是中心点的最远坐标?

边界中心:

纬度:-13.64714​​1573542923lng:109.75651876851946

4 个多边形路径的坐标:

“纬度:-9.10209673872643,液化天然气:108.10546875”

“纬度:-16.97274101999901,液化天然气:91.58203125”

“纬度:-17.644022027872722,液化天然气:120.234375”

“纬度:-8.407168163601074,液化天然气:120.41015625”

质心

0 投票
1 回答
8525 浏览

sql-server - SQL Server 的多边形算法中的点

我正在尝试编写一个 SQL 查询来确定给定点是否在多边形中。(我使用的是 SQL Server 2008 R2)。

我正在关注本教程(只需复制/粘贴它并更改一些表名),它几乎可以工作,但它根本不精确。例如,让我们考虑一个坐标为 : 的给定点。 如果你用 4 个顶点坐标在这个点周围画一个小多边形(一个近似的正方形):
P = 45.7664, 4.87383


S = 45.97215 4.693909, 45.687 4.674683, 45.73302 5.460205, 46.05227 5.366821, 45.97215 4.693909

下面链接中给出的过程回答了该点不在多边形中,而它是...这是输出(带有我自己的格式文本):(
错误输出
多边形 20 是上面的多边形)

但是,如果您将正方形放大(在我的测试中放大了 10 倍),则程序回答我的观点在正方形中。

所以,我正在寻找另一种更精确的算法。
这是我的 VERTICE 表,包含我的数据库的每个多边形的所有顶点坐标 顶点表

我需要检查所有多边形(有几千个),如果传入参数的给定点在多边形中(如果是,是哪个)。我可以自己做循环,但我错过了多边形算法中的正确点。

有人可以帮助我吗?非常感谢。

概括

对应的 SQL 小提琴:http ://sqlfiddle.com/#!3/0caa4/1

0 投票
1 回答
785 浏览

javascript - Android GoogleMaps,如何检查多边形内的点(纬度和经度)

关于多边形内的纬度和经度存在一些问题

但我的问题仍然没有得到任何答案

这是我的问题:

假设我们有一个看起来像矩形的多边形

(在实际问题中,它的形状不会像一个矩形,它可能有超过 2 个点,最多可能有 100 个点)

在哪里

(所有经纬度只有一个例子)

现在我有 4 点,应该有一个 4 点的多边形,并尝试从一个点到另一个点画一条线(多边形内不会有任何孔)

现在假设,我有 2 个用户

比方说

我需要一些算法或可以确定用户 A / B 的坐标是否在多边形内的东西

(如果用户的坐标在多边形内,则返回 true ,否则将返回 false 而不向用户显示任何内容)

供参考

我已经使用 javascript 对其进行了研究

这是我的 javascript

如你看到的

该代码包含 2 个函数(包含 LatLng 和 getBounds),使用这些函数,如果我的纬度和经度在多边形内,我可以轻松获得布尔值

像这个例子:

但那是javascript

现在在 android 中,我不知道是否有像google.maps.Polygongoogle.maps.LatLngBounds这样的东西,因为你可以看到这两个是我的 javascript 函数所必需的

或者有没有其他方法可以在不依赖这两个javascript函数的情况下做这样的事情?

0 投票
2 回答
3044 浏览

c# - C# 中的多边形碰撞测试/多边形重叠测试 - 不是多边形中的点

我正在测试以确定两个多边形是否重叠。我开发了第一个版本,它在多边形测试中做了一个简单的点(图 1)。但是,我希望改进该方法以处理多边形 A 的顶点不在多边形 B 中但它们的线段重叠的情况(图 B)。

任何帮助入门将不胜感激。

在此处输入图像描述

0 投票
1 回答
2144 浏览

gis - DotSpatial:将多边形特征转换为 System.Drawing.Region

我想用颜色绘制一个多边形区域。

我知道我可以Symbolizer这样做,但我希望该区域闪烁(在计时器中更改它的颜色)并且symbolizer为此目的使用似乎很慢。

我已经在使用Map.OnPaint事件来绘制一个点的彩色图像(在 a 中PointLayer)。

那么如何将多边形特征(在 a 中PolygonLayer)转换为,System.Drawing.Region以便可以使用 Graphics 类中的方法来绘制该区域?

提前致谢。