Los polígonos y los polígonos múltiples deben seguir la regla de la derecha


17

http://geojsonlint.com/ me sale un error

 Polygons and MultiPolygons should follow the right-hand rule

Lo utilicé durante los últimos 3 años sin ningún problema con mi antiguo archivo geojson. Ahora geojsonlint aplica la regla de la mano derecha, cómo solucionar el problema.

Respuestas:


7

A partir de agosto de 2016, GeoJSON es ahora una especificación formal de IETF . Y algunas cosas han cambiado desde la antigua especificación informal de 2008 . Por lo tanto, para ser válido para la especificación de 2016, sus polígonos DEBEN estar enrollados a la derecha.

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

El uso de DEBE indica un requisito absoluto de la especificación. Sin embargo, el lenguaje posterior acerca de no rechazar otros devanados es extraño y está abierto a algún argumento; quizás los analizadores deberían aceptar y corregir otros devanados. Creo que esto lo geojsonlint plomo (de geojsonhint) para utilizar la palabra debe en lugar de visita obligada en su mensaje de respuesta.

Así que estoy de acuerdo con la posición de geojsonlint.com, ya que colocan justo en la parte superior de su página el enlace a la especificación de 2016. Sus polígonos son malos según las especificaciones de 2016. Sin embargo, están bien según la especificación informal de 2008. Por lo tanto, si no desea cambiar el bobinado de sus polígonos, deberá asegurarse de que las linters o analizadores que utilice respeten la antigua especificación de 2008 y que algún día no migre repentinamente a la nueva especificación formal.

O tal vez debería considerar cambiar su devanado de polígono, ya que hacerlo lo alineará con ambas especificaciones y estará mejor posicionado para el futuro a medida que las especificaciones de 2008 se desvanezcan.

Tenga en cuenta que para mí el cambio más grande en la especificación de 2016 fue la caída total del soporte para sistemas de coordenadas. Tenía todo mi GeoJSON en NAD83 y luego tuve que eliminarlo silenciosamente ya que ahora todo GeoJSON es WGS84. Afortunadamente para mí, viniendo de Oracle Spatial, todos mis polígonos ya estaban heridos en la mano derecha.


Para mí, sería bueno si geojsonlint tuviera la opción de omitir la prueba de bobinado o informarlo como un problema por separado. Eso es lo que la especificación también recomienda de alguna manera.
user30184


4

Para cualquiera que encuentre esto y busque una herramienta para solucionarlo. Los GDAL ogr2ogr pueden tomar la especificación GeoJSON "2008" y escribir en modo estándar "RFC7946" (con polígonos que siguen la regla de orientación a la derecha).

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

o para usar en scripts donde desea ingresar y generar el GeoJSON como una cadena:

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



2

Esto se puede solucionar muy fácilmente en Python usando geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.