Poligon dan MultiPoligon harus mengikuti aturan tangan kanan


17

http://geojsonlint.com/ Saya mendapatkan kesalahan

 Polygons and MultiPolygons should follow the right-hand rule

Saya menggunakannya selama 3 tahun terakhir tanpa masalah dengan file geojson lama saya. Sekarang geojsonlint menegakkan aturan tangan kanan, cara memperbaiki masalah.

Jawaban:


7

Per Agustus 2016 GeoJSON sekarang menjadi spesifikasi IETF resmi . Dan beberapa hal telah berubah dari spek informal 2008 lama . Jadi untuk menjadi valid untuk spec 2016 poligon Anda HARUS luka kanan.

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

Penggunaan HARUS menunjukkan persyaratan mutlak dari spesifikasi. Namun kemudian bahasa berikutnya tentang tidak menolak belitan lain adalah aneh dan terbuka untuk beberapa argumen - mungkin parser harus menerima dan memperbaiki belitan lainnya. Saya pikir inilah yang menyebabkan geojsonlint (dari geojsonhint) menggunakan kata harus bukannya HARUS dalam pesan umpan balik mereka.

Jadi saya setuju dengan posisi geojsonlint.com karena mereka menempatkan tepat di bagian atas halaman mereka tautan ke spec 2016. Poligon Anda buruk menurut spesifikasi 2016. Namun mereka baik-baik saja sesuai spesifikasi informal 2008. Jadi jika Anda tidak ingin mengubah belitan poligon Anda, Anda perlu memastikan bahwa ada linter atau parser yang Anda gunakan untuk menghormati spesifikasi 2008 lama dan jangan suatu hari tiba-tiba bermigrasi ke spesifikasi formal yang baru.

Atau mungkin Anda harus mempertimbangkan untuk mengubah belitan poligon karena hal itu akan membuat Anda selaras dengan kedua spesifikasi dan posisi yang lebih baik untuk masa depan saat spesifikasi 2008 menghilang.

Perhatikan bahwa bagi saya perubahan terbesar dalam spesifikasi 2016 adalah sama sekali tidak mendukung sistem koordinat. Saya memiliki semua GeoJSON saya di NAD83 dan kemudian harus menghapusnya dengan diam-diam karena sekarang semua GeoJSON adalah WGS84. Untungnya bagi saya yang datang dari Oracle Spatial semua poligon saya sudah luka sebelah kanan.


Bagi saya akan lebih baik jika geojsonlint memiliki pilihan untuk melewati tes belitan, atau melaporkannya sebagai masalah terpisah. Itulah spesifikasi yang entah bagaimana direkomendasikan juga.
user30184

4

pekerjaan geojson lama saya dengan google map, leaflet, openlayer, mapbox, bing map, dll. namun geojsonlint.com gagal divalidasi.

Saya harus menggunakan situs web lain untuk memvalidasi: http://geojson.io


4

Bagi siapa pun yang menemukan ini dan mencari alat untuk memperbaikinya. GDALs ogr2ogr dapat mengambil "2008" spec GeoJSON dan menulis dalam mode standar "RFC7946" (dengan poligon mengikuti aturan kanan untuk orientasi).

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

atau untuk digunakan dalam skrip tempat Anda ingin memasukkan dan mengeluarkan GeoJSON sebagai string:

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



2

Ini dapat diperbaiki dengan sangat mudah menggunakan Python geojson-rewind.

from geojson_rewind import rewind

rewoundGeoJSON = rewind(geoJSONString)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.