Vor zwei Tagen stellte ich eine Frage zur internen Speicherreihenfolge für die Eckpunkte eines Polygons in ESRI-Shapefiles. Diese Frage wurde beantwortet ( Werden Polygone in einem Shapefile im oder gegen den Uhrzeigersinn gespeichert? ) Und sie wurde auch in einem alten Beitrag beantwortet ( Polygonerstellung (Drehung im Uhrzeigersinn oder nicht) ).
Aber jetzt ist meine Frage allgemeiner und ich weiß nicht, ob sie eine eindeutige Antwort hat. Gilt die Reihenfolge im Uhrzeigersinn nur für ESRI-Shapefiles oder für allgemeine GIS-Formate? Und wie sieht es mit der internen Darstellung einer GIS-Software aus? Wenn ich beispielsweise QGIS verwende und ein * .shp mit Polygonen lese, gehe ich davon aus, dass die interne Darstellung der äußeren Begrenzung im Uhrzeigersinn erfolgt, wie im ursprünglichen Shapefile. Was ist jedoch mit allen von QGIS unterstützten Dateiformaten? Und für ArcGIS? Und falls es ein Dateiformat gibt, in dem Polygone gegen den Uhrzeigersinn gespeichert sind, wird beim Laden dieser Dateien in QGIS, ArcGIS usw. die Ausrichtung intern geändert. Wenn ich also die Daten mit PyQGIS lese, sind die Polygone beispielsweise im Uhrzeigersinn bestellt?
Mein Ziel ist es, ein Plugin für QGIS zu schreiben, aber die Datenquelle können ESRI-Shapefiles oder andere Formate sein. Da ich die Winkel zwischen aufeinanderfolgenden Seiten von Polygonen mit ihren Azimuten überprüfen muss, muss ich wissen, ob die Reihenfolge im Uhrzeigersinn ist. Eine Lösung besteht darin, die Fläche jedes Polygons zu berechnen. Wenn ich mich recht entsinne, ist die Reihenfolge positiv und negativ und gegen den Uhrzeigersinn.
Die Flächenberechnung ist keine intensive Aufgabe, daher verlangsamt sie mein Plugin nicht so sehr. Aber im speziellen Fall von QGIS weiß jemand, ob die Polygone im oder gegen den Uhrzeigersinn gespeichert werden, unabhängig von der Reihenfolge in der Originalquelle? Inzwischen arbeite ich mit ESRI-Shapefiles und die Koordinaten in layer.getFeatures (). Geometry (). AsPolygon () werden für den äußeren Rand im Uhrzeigersinn und für die Löcher gegen den Uhrzeigersinn gespeichert, dh wie im Original * .shp.
quelle
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
, dass Oracle im Gegenuhrzeigersinn arbeitet.Antworten:
In der OGC-Spezifikation, die [hier] heruntergeladen werden kann ( http://www.opengeospatial.org/standards/sfs ), heißt es:
In den Oracle-Dokumenten wird eindeutig angegeben, dass die äußeren Ringgrenzen gegen den Uhrzeigersinn und die inneren Ringgrenzen im Uhrzeigersinn ausgerichtet sind. In SQL Server Spatial folgt der Geografie-Datentyp einer Regel gegen den Uhrzeigersinn für den äußeren Ring und im Uhrzeigersinn für den inneren Ring. Weitere Informationen finden Sie in diesem MicroSoft-Blog . Postgis scheint dies für Geometrien in beiden Richtungen zuzulassen und verfügt über Funktionen, mit denen die Geometrie eines Polygons einer Rechts- oder Linksregel folgen muss (siehe ST_ForceRHR und ForceLHR) . JTS / Geos scheinen der rechten Regel gefolgt zu sein, dh einer Ausrichtung des äußeren Rings im Uhrzeigersinn, so dass es eigentlich ein bisschen unklar ist.
Im Allgemeinen ist es für einen Geografie-Datentyp sinnvoll, die Orientierung zu erzwingen, da ansonsten nicht zu erkennen ist, ob ein kleines Polygon genau das oder der innere Ring eines ganzen Weltpolygons ist. Bei einem Geometriedatentyp auf einer ebenen Fläche kann diese Verwechslung nicht auftreten, da der äußere und der innere Ring der Reihe nach folgen. Wenn es nur einen einzigen Ring gibt, wird dieser anders als auf einem Globus eingeschlossen (unabhängig von der Ausrichtung) , die umschlingt.
Aus einem Kommentar von @mxfh: OpenGIS Simple Features Access (ISO 19125-1) von OGC gibt eine Richtung gegen den Uhrzeigersinn für Außenringe ab Version 1.2.1 des Dokuments [OGC 06-103r4] 6.1.11.1/Seite 26 von opengeospatial.org an / standards / sfa. Die Änderung wurde spätestens 2006 zwischen Version 1.1.0 und 1.2.0 eingeführt. Die Fußnote, aus der Sie zitieren, wurde seit 2005 nicht mehr aktualisiert
quelle
Ring- (Grenz-) Richtungen werden benötigt, um Mehrdeutigkeiten für geografische Koordinatensysteme zu vermeiden, die eine endliche Oberfläche abdecken, da die Grenze zwei Bereiche definiert, einen linken und einen rechten Rand der Grenze entlang ihrer Richtung. Es ist möglich zu bestimmen, welcher dieser beiden Bereiche der größere ist, lässt jedoch die Mehrdeutigkeit zu.
Hier eine Übersicht über die Außenringrichtungen von Polygonen in verschiedenen Formaten nach ihren Spezifikationen:
Simple Feature Access (ISO 19125-1) wird auch in WKT / GML / KML und verschiedenen SQL-Implementierungen verwendet:
In den meisten Implementierungen ist die Reihenfolge der Ringe in einem POLYGON wichtig (im Gegensatz zu Shapefiles).
Tiefere Verschachtelungen, auch bekannt als Insel in einem See auf einer Insel , müssen als MultiPolygons dargestellt werden ( siehe Abbildung 2.10 (4) ), da es nur eine Außengrenze und tiefere Verschachtelungen als innere Ringe geben kann sind nicht definiert.
ESRI Shapefiles / SHP :
Da mehrere Außengrenzen zulässig sind, sind mit dieser Polygondefinition Insel-in-See-auf-Insel-Konfigurationen möglich. Topologisch wäre die Insel in einem See nur ein weiterer äußerer Ring im Uhrzeigersinn. Tatsächlich macht dies ein ESRI-Shapefile-Polygon zu einem Simple Feature MultiPolygon
GeoJSON (RFC7946) :
TopoJSON : Erzwingt äußere Ringe standardmäßig im Uhrzeigersinn
Ausflug:
Die mathematische Überlegung, warum sich Wicklungsreihenfolgen von verschachtelten Ringen abwechseln, besteht darin, dass bei der Berechnung der Fläche mit der Schnürsenkelformel ( visuelle Erklärung ) die vorzeichenbehafteten Flächen in Abhängigkeit von der Ringrichtung berechnet werden.
Im Allgemeinen werden verschachtelte Ringe (Innengrenzen) als Löcher betrachtet und haben die entgegengesetzte Richtung des Außenrings. Ihr beitragender vorzeichenbehafteter Flächenwert ist negativ. Wobei als Außenringe positiv sind. Die Gesamtfläche aller Ringmerkmale ist die Summe aller signierten Bereiche.
Informationen zur Implementierung von ESRI finden Sie in diesem Knowledge Base-Eintrag: Welcher Algorithmus wird von ArcGIS zum Ermitteln der Fläche eines Polygons verwendet?
Vorgeschlagene Mnemonik
Offene Enden von Briefbögen, die als Pfeile interpretiert werden:
quelle
Ich weiß nicht, dass irgendjemand eine endgültige Antwort auf Ihre Frage geben kann, da jedes Vektordateiformat anders ist und jedes GIS in Bezug auf den internen Umgang mit diesen Daten auch anders sein wird. Aber ich kann Ihnen mit Sicherheit sagen, dass die Reihenfolge im Uhrzeigersinn nicht nur für ESRI-Shapefiles gilt. Es gibt andere Formate, die eine ähnliche Bezeichnung für das Ordnen im Uhrzeigersinn für äußere Ringe und gegen den Uhrzeigersinn für innere Lochpolygone verwenden. Beispielsweise verwendet die JTS-Vektorpolygonstruktur ein ähnliches Format. In der Tat wird hier festgestellt , dass dies historisch dem ESRI-Ansatz ähnlich sein sollte. Ich kann auch definitiv sagen, dass nicht alle Formate diese Anforderung haben. Zum Beispiel die GeoJSON-Formatspezifikationenmachen Sie keine derartigen Anforderungen bezüglich der Anordnung von Eckpunkten in ihrem Polygonformat. In der KML-Spezifikation heißt es tatsächlich:
Es gibt also die gesamte Palette an Optionen, die dort umgesetzt werden. Es ist eine wilde Welt!
quelle