Wielokąty i wielokąty powinny być zgodne z zasadą prawej ręki

17

http://geojsonlint.com/ Wystąpił błąd

 Polygons and MultiPolygons should follow the right-hand rule

Korzystałem z niego przez ostatnie 3 lata bez żadnego problemu z moim starym plikiem geojson. Teraz geojsonlint egzekwuje regułę prawej ręki, jak rozwiązać problem.

hoogw
źródło

Odpowiedzi:

7

Od sierpnia 2016 r. GeoJSON jest obecnie formalną specyfikacją IETF . Niektóre rzeczy zmieniły się w stosunku do starej nieformalnej specyfikacji z 2008 roku . Aby być ważnym dla specyfikacji 2016, twoje wielokąty MUSZĄ być uzwojone po prawej stronie.

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

Użycie MUST wskazuje na bezwzględne wymaganie specyfikacji. Jednak późniejszy język o nie odrzucaniu innych uzwojeń jest dziwny i otwarty na pewne argumenty - być może parsery powinny zaakceptować i poprawić inne uzwojenia. Myślę, że to co ołów geojsonlint (od geojsonhint) używać słowa powinien zamiast MUST ich wiadomości zwrotnej.

Zgadzam się więc ze stanowiskiem geojsonlint.com, które umieszczają na górze strony link do specyfikacji 2016. Twoje wielokąty są złe według specyfikacji 2016. Ale mimo to są w porządku według nieformalnej specyfikacji z 2008 roku. Więc jeśli nie chcesz zmieniać uzwojenia swoich wielokątów, musisz upewnić się, że wszystkie lintery lub parsery, których używasz, będą honorować starą specyfikację z 2008 roku i pewnego dnia nie migrują nagle do nowej formalnej specyfikacji.

A może powinieneś rozważyć zmianę uzwojenia wielokąta, ponieważ spowoduje to dostosowanie się do obu specyfikacji i lepszą pozycję na przyszłość w miarę zanikania specyfikacji 2008.

Zauważ, że dla mnie największą zmianą w specyfikacji 2016 było całkowite odrzucenie wsparcia dla układów współrzędnych. Miałem cały GeoJSON w NAD83, a następnie musiałem go cicho usunąć, ponieważ teraz wszystkie GeoJSON to WGS84. Na szczęście dla mnie, pochodzącego z Oracle Spatial, wszystkie moje wielokąty były już uzwojone po prawej stronie.

Paul
źródło
Dla mnie byłoby dobrze, gdyby geojsonlint mógł pominąć test uzwojenia lub zgłosić to jako osobny problem. Właśnie to w jakiś sposób zaleca specyfikacja.
user30184
5

moja stara aplikacja geojson działa z mapą google, ulotką, aplikacją typu openlayer, mapbox, mapą bing itp., jednak nie udało się zweryfikować strony geojsonlint.com .

Muszę użyć innej strony internetowej do sprawdzenia: http://geojson.io

hoogw
źródło
4

Dla każdego, kto to znajdzie i szuka narzędzia do ich naprawy. GDAL ogr2ogr może przyjmować GeoJSON ze specyfikacją „2008” i zapisywać w trybie standardowym „RFC7946” (z wielokątami zgodnie z prawą zasadą orientacji).

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

lub do użycia w skryptach, w których chcesz wprowadzić i wyprowadzić GeoJSON jako ciąg znaków:

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

Chris
źródło
3

https://mapster.me/right-hand-rule-geojson-fixer/ ta strona ma funkcję javascript po stronie klienta, która rozwiązuje problem reguły prawej ręki.

Nikhil VJ
źródło
Ta usługa już nie działa, w FF lub Chrome
Henrik
@Henrik: Właśnie użyłem go działającego poprawnie w FF.70. Może wróciło.
allez l'OM
2

Można to bardzo łatwo naprawić za pomocą Pythona geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
Nick K9
źródło