Полигоны и мультиполигоны должны следовать правилу правой руки


17

http://geojsonlint.com/ Я получаю ошибку

 Polygons and MultiPolygons should follow the right-hand rule

Я использовал его в течение последних 3 лет без каких-либо проблем со своим старым файлом geojson. Теперь geojsonlint применяет правило правой руки, как решить проблему.

Ответы:


7

По состоянию на август 2016 года GeoJSON теперь является формальной спецификацией IETF . И некоторые вещи изменились со старой неформальной спецификации 2008 года . Таким образом, чтобы быть действительными для спецификации 2016 года, ваши полигоны ДОЛЖНЫ быть намотаны правой рукой.

См. Https://tools.ietf.org/html/rfc7946#section-3.1.6.

Использование MUST указывает на абсолютное требование спецификации. Однако тогда последующий язык о том, чтобы не отвергать другие обмотки, является странным и открыт для некоторого аргумента - возможно, парсеры должны принять и исправить другие обмотки. Я думаю , что это то , что свинец geojsonlint (от geojsonhint) использовать слово должно вместо ДОЛЖНО в своем сообщении обратной связи.

Поэтому я согласен с позицией geojsonlint.com, которая размещает в верхней части своей страницы ссылку на спецификацию 2016 года. Ваши полигоны плохие по спецификации 2016 года. Но все же они хороши согласно неофициальной спецификации 2008 года. Поэтому, если вы не хотите менять порядок своих полигонов, вам нужно убедиться, что все используемые вами линтеры или парсеры соответствуют старой спецификации 2008 года и не будут однажды внезапно переходить на новую формальную спецификацию.

Или, возможно, вам следует подумать о смене намотки полигонов, так как это позволит вам соответствовать обеим спецификациям и лучше позиционироваться на будущее, поскольку спецификация 2008 года исчезнет.

Обратите внимание, что для меня самым большим изменением в спецификации 2016 года стало полное прекращение поддержки систем координат. У меня был весь мой GeoJSON в NAD83, а затем мне пришлось спокойно удалить его, так как теперь весь GeoJSON - это WGS84. К счастью для меня, пришедшего из Oracle Spatial, все мои многоугольники уже были намотаны правой рукой.


Для меня было бы хорошо, если бы у geojsonlint была возможность пропустить тест обмотки или сообщить об этом как об отдельной проблеме. Это то, что спецификация так или иначе рекомендует.
user30184

4

Моя старая работа с Geojson с картой Google, листовкой, openlayer, mapbox, картой bing и т. д., однако, geojsonlint.com не прошла проверку.

Я должен использовать другой веб-сайт для проверки: http://geojson.io


4

Для тех, кто нашел это и ищет инструмент, чтобы исправить их. GDALs ogr2ogr может взять спецификацию GeoJSON «2008» и записать в стандартном режиме «RFC7946» (с полигонами, следующими правому правилу ориентации).

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

или для использования в скриптах, где вы хотите вводить и выводить GeoJSON в виде строки:

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


3

https://mapster.me/right-hand-rule-geojson-fixer/ на этой странице есть функция javascript на стороне клиента, которая устраняет проблему с правилом правой руки.


Этот сервис больше не работает, в FF или Chrome
Henrik

@Henrik: Я только что использовал это, работая правильно в FF.70. Может быть, он вернулся.
allez l'OM

2

Это может быть очень легко исправлено с помощью Python geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.