不同的GIS系统如何确定多边形的内部?


11

我有兴趣了解现实世界中的GIS系统及其数据如何编码“多边形”。

具体来说,它们如何解决球体上多边形内部的模糊性?

背景:在2D中,由于2D平面是无限的,因此选择具有有限面积的边界边很简单。但是,球体是有限的,因此如果没有其他假设,就不可能知道哪一侧在内部。

我知道的可能方法:

  1. 右手规则:始终以顺时针顺序指定外部边界,并以逆时针顺序指定孔。(当然也有左手规则)。
  2. 最小的面积:对于任何给定的戒指,请始终选择面积最小的侧面。我不确定如何指定大范围的多边形:也许是一个空的外圈,然后是孔?
  3. 等角矩形:只需考虑在无限2D平面上的等角矩形投影。但是,这是假定要素在前线被切碎,否则上述两种方法之一将需要回退。

我个人的偏爱是第一种方法,但是我想了解这在标准GIS系统中是否很常见。

Answers:


3

主要的GIS系统及其解决固有歧义的方法:

  • ESRI:右脚法则。
  • ArcGIS:右脚法则。
  • SQL Server 2012:左脚定律。在SQL Server 2012之前,大于半球形的多边形将引发错误。

GeoJSON没有指定顺序。


1
修订的GeoJSON规范(tools.ietf.org/html/rfc7946)规定“多边形环必须遵循正确的定向规则(逆时针外环,顺时针内环)”。
perrygeo

1

如果我正确理解了您的问题,那么您想知道GIS如何在球形多边形测试中执行一个点。这是我在geospatialmethods.org上找到的算法:

  1. 用大圆弧将点连接到已知的外部点。
  2. 对于作为球形多边形测试面的每个大圆弧,如果它与步骤#1中构造的弧相交并计算相交数。
  3. 如果相交总数为奇数,则给定点在球形多边形内。如果相交总数为偶数,则该点在球形多边形的外部。

我猜它仍然基于平面算法,该算法构造从问题点到已知多边形之外的点的测试射线,然后计算您提到的射线穿过多少条边。

这在NASA JPL论文中也进行了深入讨论,该论文涉及球上多边形的算法。在第11页上。当然,有一些优化:

首先,在可能的情况下,应避免在观看多边形的任何边缘之前,先针对预先计算的边界框检查测试射线,以免执行昂贵的球形三角函数计算。如果测试射线确实与边界框相交,则针对多边形的每个顶点检查Q。此时,测试Q是否在边缘上是没有意义的,因为这将在执行相交测试时显示出来,并且此时可以跳过其余边缘。

我认为您会发现该论文最有趣:)


这似乎回答了一个不同的问题。非自相交的闭合折线将球体分成两个相连的组件。OP询问GIS如何确定(或如何告知)这些组件中的哪些应被视为“内部”,哪些被视为“外部”?您引用的网站在“猜测外部点”标题下讨论了此问题,强调它只是在猜测要放入哪个组件。
ub

哦,天哪。误解了他的问题。我将其与多边形测试中该点的球形版本混为一谈。找到答案后,将对其进行修改。
RK 2012年

好吧,我感谢您找到的参考文献,因此希望您能够将它们包括在修订后的答案中:-)。
ub

我也这样希望。也许我只是问一个问题,然后自己回答;-)浪费他们会很可惜。
RK 2012年

1
感谢您的详细回答!不幸的是,正如@whuber指出的那样,这无法回答我的特定问题。:)我已经概述了解决多边形内部固有模糊性的可能方法,但是我对了解现实世界GIS软件采用的方法感兴趣。
杰森·戴维斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.