相关疑难解决方法(0)

点多边形算法

我看到下面的算法用于检查点是否在此链接的给定多边形中:

int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i < nvert; j = i++) {
    if ( ((verty[i]>testy) != (verty[j]>testy)) &&
     (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
       c = !c;
  }
  return c;
}
Run Code Online (Sandbox Code Playgroud)

我试过这个算法,它实际上工作得很完美.但遗憾的是,在花了一些时间试图了解它之后,我无法理解它.

因此,如果有人能够理解这个算法,请向我解释一下.

谢谢.

c algorithm

58
推荐指数
4
解决办法
9万
查看次数

检查点是否在多边形内

我想检查一个点是否位于特定的多边形内.多边形是:

 polygon=   [ [-73.89632720118, 40.8515320489962],
              [-73.8964878416508, 40.8512476593594],
              [-73.8968799791431, 40.851375925454],
              [-73.8967188588015, 40.851660158514],
              [-73.89632720118, 40.8515320489962] ]
Run Code Online (Sandbox Code Playgroud)

我要检查的要点是:

1 = [40.8515320489962,-73.89632720118]
2 = [40.8512476593594,-73.8964878416508]
3 = [40.851375925454,-73.8968799791431]
4 = [40.851660158514,-73.8967188588015]
5 = [40.8515320489962,-73.89632720118]
Run Code Online (Sandbox Code Playgroud)

如何判断每个点是否在此多边形内?

此算法无效.我不知道为什么.

pt[lat,long]

function isPointInPoly(poly, pt){
    for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
        ((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1] < poly[i].y))
        && (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] …
Run Code Online (Sandbox Code Playgroud)

javascript polygon

58
推荐指数
3
解决办法
5万
查看次数

C#指向多边形

我正在尝试确定一个点是否在多边形内.Polygon由Point对象数组定义.我可以很容易地弄清楚该点是否在多边形的有界框内,但我不知道如何判断它是否在实际多边形内.如果可能的话,我只想使用C#和WinForms.我宁愿不打电话给OpenGL或其他什么来做这个简单的任务.

这是我到目前为止的代码:

private void CalculateOuterBounds()
{
    //m_aptVertices is a Point[] which holds the vertices of the polygon.
    // and X/Y min/max are just ints
    Xmin = Xmax = m_aptVertices[0].X;
    Ymin = Ymax = m_aptVertices[0].Y;

    foreach(Point pt in m_aptVertices)
    {
        if(Xmin > pt.X)
            Xmin = pt.X;

        if(Xmax < pt.X)
            Xmax = pt.X;

        if(Ymin > pt.Y)
            Ymin = pt.Y;

        if(Ymax < pt.Y)
            Ymax = pt.Y;
    }
}

public bool Contains(Point pt)
{
    bool bContains = true; //obviously wrong at the moment :) …
Run Code Online (Sandbox Code Playgroud)

.net c# algorithm

35
推荐指数
7
解决办法
6万
查看次数

检测GPS坐标是否落在地图上的多边形内

如标题中所述,目标是有一种方法来检测给定的GPS坐标是否落在多边形内.

多边形本身可以是凸面或凹面.它被定义为一组边矢量和该多边形内的已知点.每个边缘矢量进一步由四个坐标定义,这四个坐标是各个尖端点的纬度和经度以及相对于起始点的方位.

StackOverflow上有一些与此类似的问题,但是它们仅以一般术语和2D平面描述解决方案,而我正在寻找支持WGS 84中纬度/经度对定义的多边形的现有实现.

进行此类碰撞测试的API或服务是什么?

math gps geolocation geospatial coordinates

32
推荐指数
3
解决办法
4万
查看次数

如何确定点是否在2D凸多边形内?

我有一个凸多边形(通常只是一个旋转的方形),我知道所有4个点.如何确定给定点(黄色/绿色)是否多边形内?

在此输入图像描述

编辑:对于这个特定的项目,我无法访问JDK的所有库,例如AWT.

java geometry polygon

28
推荐指数
5
解决办法
5万
查看次数

如何测试点是否在2D整数坐标中的凸多边形内?

多边形作为Vector2I对象列表(2维,整数坐标)给出.如何测试给定点是否在内?我在网上找到的所有实现都失败了一些微不足道的反例.写一个正确的实现似乎很难.语言并不重要,因为我会自己移植它.

geometry polygon hittest

26
推荐指数
3
解决办法
4万
查看次数

确定iPhone用户的国家/地区

对于iPhone应用程序,我需要在启动时确定用户所在的国家/地区.据推测,我将不得不打开位置服务并进行某种反向地理编码.如果可能的话,我真的不想使用第三方网络服务,是否有任何其他建议来确定服务提供的位置?

最初,我只需要检查用户是否在美国境内,但是将来可能会更改以添加更多国家/地区.我知道无法始终确定位置或用户可能已关闭位置服务.基本上,我只需要知道用户是否被检测到是在美国境内,以便关闭特定功能.

编辑:进一步阅读,它看起来像MKReverseGeocoder,除了我不希望在我的应用程序中显示任何地图,这意味着我不允许使用它.

iphone geolocation reverse-geocoding

26
推荐指数
3
解决办法
2万
查看次数

在多边形PHP中查找点

我有一个几何数据类型为mysql,polygon的典型问题.

我有纬度和经度数组形式的多边形数据,例如:

[["x":37.628134,  "y":-77.458334],
["x":37.629867,   "y":-77.449021],
["x":37.62324,    "y":-77.445416],
["x":37.622424,   "y":-77.457819]]
Run Code Online (Sandbox Code Playgroud)

我有一个坐标为纬度和经度的点(顶点),例如:

$location = new vertex($_GET["longitude"], $_GET["latitude"]);
Run Code Online (Sandbox Code Playgroud)

现在我想找到这个顶点(点)是否在多边形内.我怎么能在PHP中这样做?

php mysql polygon point-in-polygon

22
推荐指数
5
解决办法
2万
查看次数

计算矩形中的点数

我在2D中有很多(数十亿)点我可以预处理,我想回答以下形式的查询:

给定矩形的所有四个角,输出矩形内的点数.

矩形可以处于任何方向(意味着矩形的轴可以以任何角度定向,而不仅仅是水平或垂直).

有一个快速实用的算法吗?

更新.是否有任何数据结构来存储点,这使得查询可以证明处于亚线性时间?

更新II似乎答案是公司没有https://cstheory.stackexchange.com/questions/18293/can-we-perform-an-nd-range-search-over-an-arbitrary-box-without-resorting-to -si.在任何情况下都接受最流行的答案.

algorithm

22
推荐指数
2
解决办法
4805
查看次数

检查地理点是否在Python的多边形内部或外部

我正在使用python,我已经定义了地图上多边形的纬度和经度(以度为单位).我的目标是检查一般P坐标点是否x,y落在这样的多边形内.因此,我希望有一个功能,允许我检查这种情况并返回True或者False如果该点在多边形内部或外部.

在此输入图像描述

在这个例子中,点在外面,结果就是 False

问题:是否有允许达到目标的库/包?如果是,你推荐哪一个?你能给出一个如何使用它的小例子吗?

这是我到目前为止编写的代码:

import numpy as np

# Define vertices of polygon (lat/lon)
v0 = [7.5, -2.5] 
v1 = [2, 3.5]
v2 = [-2, 4]
v3 = [-5.5, -4]
v4 = [0, -10]
lats_vect = np.array([v0[0],v1[0],v2[0],v3[0],v4[0]])
lons_vect = np.array([v0[1],v1[1],v2[1],v3[1],v4[1]])

# Point of interest P
x, y = -6, 5 # x = Lat, y = Lon

## START MODIFYING FROM HERE; DO NOT MODIFY POLYGON VERTICES AND DATA TYPE …
Run Code Online (Sandbox Code Playgroud)

python polygon coordinate-systems point-in-polygon shapely

20
推荐指数
4
解决办法
2万
查看次数