Polígonos e MultiPolígonos devem seguir a regra da direita


17

http://geojsonlint.com/ Recebo erro

 Polygons and MultiPolygons should follow the right-hand rule

Eu o usei nos últimos 3 anos sem nenhum problema com meu antigo arquivo geojson. Agora, o geojsonlint aplica a regra da mão direita, como corrigir o problema.

Respostas:


7

Em agosto de 2016, o GeoJSON agora é uma especificação formal da IETF . E algumas coisas mudaram em relação às antigas especificações informais de 2008 . Portanto, para ser válido para as especificações de 2016, seus polígonos DEVEM ser feridos com a mão direita.

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

O uso de MUST indica um requisito absoluto da especificação. Entretanto, a linguagem subsequente sobre não rejeitar outros enrolamentos é estranha e está aberta a algum argumento - talvez os analisadores devam aceitar e corrigir outros enrolamentos. Eu acho que isso geojsonlint chumbo que (de geojsonhint) para usar a palavra deveria , em vez de MUST em sua mensagem de feedback.

Então, eu concordo com a posição de geojsonlint.com, pois eles colocam no topo da página o link para as especificações de 2016. Seus polígonos são ruins de acordo com as especificações de 2016. Mas ainda assim eles estão bem de acordo com as especificações informais de 2008. Portanto, se você não deseja alterar o enrolamento de seus polígonos, precisará certificar-se de que todos os alinhadores ou analisadores que você usa respeitam a antiga especificação de 2008 e nem um dia migrar repentinamente para a nova especificação formal.

Ou talvez você deva considerar alterar o enrolamento do polígono, pois isso fará com que você fique alinhado com as especificações e fique melhor posicionado para o futuro, à medida que a especificação de 2008 desaparecer.

Observe que para mim a maior mudança nas especificações de 2016 foi a queda total do suporte aos sistemas de coordenadas. Eu tinha todo o meu GeoJSON no NAD83 e depois tive que removê-lo silenciosamente, pois agora todo o GeoJSON é WGS84. Felizmente para mim, vindo do Oracle Spatial, todos os meus polígonos já estavam feridos na mão direita.


Para mim, seria bom se o geojsonlint tivesse a opção de pular o teste de enrolamento ou relatar isso como um problema separado. Isso é o que a especificação também está recomendando.
user30184


4

Para quem encontrar isso e procurar uma ferramenta para corrigi-los. GDALs ogr2ogr podem pegar o GeoJSON da especificação "2008" e escrever no modo padrão "RFC7946" (com polígonos seguindo a regra da direita para orientação).

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

ou para uso em scripts nos quais você deseja inserir e gerar o GeoJSON como uma string:

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



2

Isso pode ser corrigido com muita facilidade no Python usando geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.