我的困难是,如果我指定一个从东到西覆盖地球的多边形,它将仍然沿前陆有一个边界,该边界会以方位角投影形式显示。例如,在GeoJSON中:
{
"type": "Polygon",
"coordinates": [
[[-180, -90], [-180, 90], [180, 90], [180, -90], [-180, -90]]
]
}
有没有标准的方法来指定无边界的全球面多边形?
我考虑过使用一个空的外圈:
{
"type": "Polygon",
"coordinates": [
[]
]
}
逻辑是我可以指定其他环作为要打孔到整个多边形的孔。
不幸的是,GeoJSON规定LinearRings必须至少具有4个点,因此这会偏离规范。但是,我仍然对了解是否可以在其他任何地方使用此方法感兴趣。
答案必须部分取决于GIS。但是,您一开始就会遇到麻烦:如果多边形没有边界,那么-如果不指定线串中不存在的其他信息-该软件就无法将整个球体与空集区分开。(即使许多GIS没有实现或错误地实现,空多边形也具有重要的用途。)
—
whuber
谢谢。我们决定简单定义自己的对象类型“ Sphere”来处理这种情况,因为空的LineString最直观地表示空集。我认为这是您可以真正解决此问题的最佳“答案”。
—
杰森·戴维斯
我认为您可以将Jason推广到您的解决方案,而只需花费很少的成本,并且有一些好处。既然您要用一位来区分空集和球体,为什么不对每个多边形使用该位来表示其方向?对于非退化多边形,它将指示在遍历多边形边界时应将其内部视为右侧还是左侧。对于退化的多边形,它将指示边界是与多边形重合还是要补全。现在,您始终知道内部在哪里。
—
whuber
好主意!总的来说,我们希望接受标准的GeoJSON作为输入。Sphere对象有点特殊,因此我们不介意定义自己的类型,因为几乎不会使用它。多边形,我们决定采用排序约定(右手定则是与ESRI规范是一致的。)
—
贾森·戴维斯