参考http://www.weather.gov/directives/sym/pd01008006curr.pdf第8页,我们得到了一个以地理坐标系(纬度和经度系统)中的四个顶点为基础的区域。我想检查一个具有特定纬度和经度的点是否存在于该区域内。
参考http://www.weather.gov/directives/sym/pd01008006curr.pdf第8页,我们得到了一个以地理坐标系(纬度和经度系统)中的四个顶点为基础的区域。我想检查一个具有特定纬度和经度的点是否存在于该区域内。
测试一个点是否在任意多边形内(允许凹面,任意多边形),方法是选择一个你知道在多边形外的点;如果连接测试点和在多边形外的点的线段穿过奇数个多边形边界,那么这个点就在多边形内。
3)坐标系的“边缘”(国际日期变更线和极点) - 由经度+179.9度,-179.9度和纬度+0.1度,-0.1度所限定的“正方形”通常不会被认为包含点0 N,0 W,并且将被认为包含点0 N,180 W。但是,如果您简单地检查纬度/经度点的不等式,您将得到相反的答案。
因此,我没有答案,但这些是需要考虑的微妙问题。(将其视为“确保将其包括为测试用例”!)
编辑:我找到了spheres包,它有SphericalPolygon.contains方法,可能可以做到你要找的功能。但是我个人没有使用过这个包,而且它是GPL,不是LGPL,所以如果你想在专有产品中使用它,它会“污染”你的源代码。你是指编程上的还是数学上的?如果你理解了数学上的,编程上就很容易了。基本上,顶点定义了线条。你只需要知道哪一侧的线条构成了“内部”。然后,将你的顶点转换为方程,但使用小于或大于而不是等于。
也就是说,假设你有以下方程定义的矩形: x=1,x=3,y=1,y=3
如果你想知道(2,2)是否在该区域内,只需评估每个方程: x > 1,x < 3,y > 1,y < 3。
如果这四个方程都成立,则该点在该区域内。