Polygone und MultiPolygone sollten der Rechtsregel folgen


17

http://geojsonlint.com/ Ich erhalte eine Fehlermeldung

 Polygons and MultiPolygons should follow the right-hand rule

Ich habe es in den letzten 3 Jahren ohne Probleme mit meiner alten Geojson-Datei verwendet. Geojsonlint erzwingt nun die rechte Regel, wie man das Problem behebt.

Antworten:


7

Seit August 2016 ist GeoJSON eine formale IETF-Spezifikation . Und einige Dinge haben sich gegenüber der alten informellen Spezifikation von 2008 geändert . So gültig sein für die 2016 - Spezifikation Ihre Polygone MÜSSEN rechte Wunde sein.

Siehe https://tools.ietf.org/html/rfc7946#section-3.1.6

Die Verwendung von MUST gibt eine absolute Anforderung der Spezifikation an. Die nachfolgende Sprache, andere Wicklungen nicht abzulehnen, ist jedoch seltsam und lässt sich streiten - vielleicht sollten Parser andere Wicklungen akzeptieren und korrigieren. Ich denke, das, was geojsonlint (von geojsonhint) dazu bringt, das Wort zu verwenden, sollte statt MUSS in ihrer Rückmeldung stehen.

Daher stimme ich der Position von geojsonlint.com zu, da sie den Link zur Spezifikation 2016 ganz oben auf ihrer Seite platzieren. Ihre Polygone sind gemäß der Spezifikation von 2016 schlecht. Aber dennoch sind sie gemäß der informellen Spezifikation von 2008 in Ordnung. Wenn Sie also die Wicklung Ihrer Polygone nicht ändern möchten, müssen Sie sicherstellen, dass alle verwendeten Linters oder Parser der alten Spezifikation von 2008 entsprechen und nicht eines Tages plötzlich auf die neue formale Spezifikation migrieren.

Oder vielleicht sollten Sie überlegen, ob Sie die Wicklung Ihres Polygons ändern sollten, um mit beiden Spezifikationen Schritt zu halten und besser für die Zukunft zu positioniert zu sein, wenn die Spezifikation 2008 verblasst.

Beachten Sie, dass für mich die größte Änderung in der Spezifikation von 2016 darin bestand, dass die Unterstützung für Koordinatensysteme vollständig eingestellt wurde. Ich hatte mein ganzes GeoJSON in NAD83 und musste es dann stillschweigend entfernen, da jetzt alles GeoJSON WGS84 ist. Zum Glück stammten alle meine Polygone von Oracle Spatial und waren bereits mit der rechten Hand verwundet.


Für mich wäre es gut, wenn Geojsonlint die Option hätte, den Wicklungstest auszulassen oder dies als separate Ausgabe zu melden. Das ist es auch, was die Spezifikation irgendwie empfiehlt.
user30184


4

Für alle, die dies finden und nach einem Werkzeug suchen, um es zu beheben. GDALs ogr2ogr können die "2008" -Spezifikation GeoJSON verwenden und im Standardmodus "RFC7946" ausschreiben (wobei die Polygone der rechten Regel zur Orientierung folgen).

ogr2ogr -f GeoJSON -lco RFC7946=YES output.json input.json

oder zur Verwendung in Skripten, in denen Sie den GeoJSON als String eingeben und ausgeben möchten:

echo 'Your GeoJSON' | ogr2ogr -f GeoJSON -lco RFC7946=YES /vsistdout/ /vsistdin/



2

Dies kann sehr einfach in Python mit behoben werden geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
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.