Wie stelle ich die ganze Erde als Polygon dar?


11

Dies hängt mit der Bestimmung des Inneren eines Polygons zusammen .

Meine Schwierigkeit besteht darin, dass wenn ich ein Polygon spezifiziere, das die Erde von Ost nach West bedeckt, es immer noch eine Grenze entlang des Antemeridians hat, die sich in azimutalen Projektionen zeigt. Zum Beispiel in GeoJSON:

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

Gibt es eine Standardmethode, um ein Ganzkugelpolygon ohne Begrenzung anzugeben?

Ich habe darüber nachgedacht, einen leeren Außenring zu verwenden:

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

Die Logik ist, dass ich weitere Ringe als Löcher angeben könnte, die in das Polygon der ganzen Kugel gestanzt werden sollen.

Leider schreibt GeoJSON vor, dass LinearRings mindestens 4 Punkte haben müssen, sodass dies von der Spezifikation abweicht. Ich bin jedoch immer noch daran interessiert zu verstehen, ob dieser Ansatz irgendwo anders angewendet wird.


Zum Teil muss die Antwort vom GIS abhängen. Sie sind jedoch gleich zu Beginn in Schwierigkeiten: Wenn das Polygon keine Grenze hat , kann die Software - ohne Angabe zusätzlicher Informationen, die nicht im Linestring enthalten sind - die gesamte Kugel nicht von der leeren Menge unterscheiden. (Leere Polygone haben wichtige Verwendungszwecke, obwohl viele GIS sie nicht oder falsch implementieren.)
whuber

1
Vielen Dank. Wir haben uns entschlossen, einfach unseren eigenen Objekttyp "Sphere" zu definieren, um diese Situation zu bewältigen, da ein leerer LineString die leere Menge am intuitivsten darstellen würde. Ich denke, dies ist die beste "Antwort", die Sie dieser Frage wirklich geben können.
Jason Davies

1
Ich denke, Sie könnten Ihre Lösung verallgemeinern, Jason, zu geringen Kosten und mit einigem Nutzen. Da Sie ein Bit zur Unterscheidung der leeren Menge von der Kugel verwenden, können Sie dieses Bit bei jedem Polygon verwenden, um dessen Ausrichtung anzuzeigen. Bei nicht entarteten Polygonen wird angegeben, ob das Innere des Polygons beim Überqueren seiner Grenze als rechts oder links betrachtet werden soll. Für entartete Polygone würde dies anzeigen, ob die Grenze mit dem Polygon übereinstimmt oder das Komplement beabsichtigt ist. Jetzt wissen Sie immer, wo sich das Innere befindet.
whuber

Gute Idee! Im Allgemeinen möchten wir jedoch Standard-GeoJSON als Eingabe akzeptieren. Das Sphere-Objekt ist ein Sonderfall, daher macht es uns nichts aus, unseren eigenen Typ zu definieren, da es kaum verwendet wird. Für Polygone haben wir beschlossen, eine Bestellkonvention zu verabschieden (rechte Regel, um mit der ESRI-Spezifikation übereinzustimmen)
Jason Davies

Antworten:


2

Da es keinen Standard zu geben scheint, um diese etwas seltene Situation eines Polygons ohne Begrenzung der gesamten Erde darzustellen, haben wir beschlossen, unsere eigene hinzuzufügen {type: "Sphere"}, was für unsere Zwecke bemerkenswert gut funktioniert hat.

Wir haben uns entschieden, kein Polygon mit einem leeren LinearRing zu verwenden, da dies intuitiver ein leeres Polygon darstellt und leicht zu Verwirrung und versehentlicher Erzeugung von Polygonen auf der ganzen Erde führen kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.