如何将整个地球表示为多边形?


11

这与确定Polygon的内部有关

我的困难是,如果我指定一个从东到西覆盖地球的多边形,它将仍然沿前陆有一个边界,该边界会以方位角投影形式显示。例如,在GeoJSON中:

{
  "type": "Polygon",
  "coordinates": [
    [[-180, -90], [-180, 90], [180, 90], [180, -90], [-180, -90]]
  ]
}

有没有标准的方法来指定无边界的全球面多边形?

我考虑过使用一个空的外圈:

{
  "type": "Polygon",
  "coordinates": [
    []
  ]
}

逻辑是我可以指定其他环作为要打孔到整个多边形的孔。

不幸的是,GeoJSON规定LinearRings必须至少具有4个点,因此这会偏离规范。但是,我仍然对了解是否可以在其他任何地方使用此方法感兴趣。


答案必须部分取决于GIS。但是,您一开始就会遇到麻烦:如果多边形没有边界,那么-如果不指定线串中不存在的其他信息-该软件就无法将整个球体与空集区分开。(即使许多GIS没有实现或错误地实现,空多边形也具有重要的用途。)
whuber

1
谢谢。我们决定简单定义自己的对象类型“ Sphere”来处理这种情况,因为空的LineString最直观地表示空集。我认为这是您可以真正解决此问题的最佳“答案”。
杰森·戴维斯

1
我认为您可以将Jason推广到您的解决方案,而只需花费很少的成本,并且有一些好处。既然您要用一位来区分空集和球体,为什么不对每个多边形使用该位来表示其方向?对于非退化多边形,它将指示在遍历多边形边界时应将其内部视为右侧还是左侧。对于退化的多边形,它将指示边界是与多边形重合还是要补全。现在,您始终知道内部在哪里。
whuber

好主意!总的来说,我们希望接受标准的GeoJSON作为输入。Sphere对象有点特殊,因此我们不介意定义自己的类型,因为几乎不会使用它。多边形,我们决定采用排序约定(右手定则是与ESRI规范是一致的。)
贾森·戴维斯

Answers:


2

由于似乎没有一种标准的方式来表示这种几乎没有边界覆盖整个地球的多边形的这种罕见情况,因此我们决定添加自己的{type: "Sphere"},这种方法对于我们的目的非常有效。

我们决定不使用包含空LinearRing的Polygon,因为它更直观地表示一个空多边形,并且很容易导致混乱和意外创建整个地球多边形。

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.