Dua hari yang lalu saya mengajukan pertanyaan tentang urutan penyimpanan internal untuk simpul poligon di shapefile ESRI. Pertanyaan itu dijawab ( Apakah poligon disimpan searah jarum jam atau berlawanan arah jarum jam dalam sebuah shapefile? ) Dan itu juga dijawab dalam posting lama ( Pembuatan poligon (Rotasi searah jarum jam atau tidak) )
Tetapi sekarang pertanyaan saya lebih umum, dan saya tidak tahu apakah itu memiliki jawaban yang unik. Apakah urutan searah jarum jam hanya untuk bentuk ESRI atau untuk format GIS umum? Dan bagaimana dengan representasi internal untuk perangkat lunak SIG? Sebagai contoh, jika saya menggunakan QGIS dan saya membaca * .shp yang mengandung poligon, saya kira representasi internal dari batas luar searah jarum jam seperti pada shapefile asli, tetapi bagaimana dengan semua format file yang didukung oleh QGIS? Dan untuk ArcGIS? Dan dalam kasus ini terdapat format file dengan poligon yang disimpan secara berlawanan, jika file-file ini dimuat dalam QGIS, ArcGIS, dll., Adalah orientasi diubah secara internal, jadi jika saya membaca data menggunakan PyQGIS, misalnya, poligon searah jarum jam dipesan?
Tujuan saya adalah untuk menulis plugin untuk QGIS, tetapi sumber data dapat berupa ESRI shapefile atau format lainnya. Karena saya perlu memeriksa sudut antara sisi-sisi poligon yang berurutan menggunakan azimutnya, saya perlu tahu apakah urutannya searah jarum jam. Salah satu solusinya adalah menghitung luas setiap poligon dan, jika saya ingat dengan benar, jika positif urutannya searah jarum jam dan jika negatif urutannya berlawanan arah jarum jam.
Perhitungan area bukan tugas yang intensif, jadi itu tidak akan memperlambat plugin saya begitu banyak. Tetapi dalam kasus khusus QGIS, ada yang tahu apakah itu menyimpan poligon searah atau berlawanan arah jarum jam, terlepas dari urutan di sumber aslinya? Sekarang saya sedang bekerja dengan ESRI shapefile dan koordinat di layer.getFeatures (). Geometry (). AsPolygon () disimpan dalam searah jarum jam untuk batas luar dan berlawanan dengan arah lubang untuk lubang, yaitu seperti pada * .shp asli.
sumber
Polygons are oriented correctly. (Exterior ring boundaries must be oriented counterclockwise, and interior ring boundaries must be oriented clockwise.)
yang artinya Oracle berlawanan arah jarum jam .Jawaban:
Dalam spesifikasi OGC, yang dapat diunduh [di sini], ( http://www.opengeospatial.org/standards/sfs ) mereka menyatakan:
Dalam dokumen Oracle , dinyatakan dengan jelas bahwa batas cincin eksterior berorientasi berlawanan arah jarum jam, dan batas cincin interior, searah jarum jam. Demikian juga, dalam SQL Server Spatial, tipe data geografi mengikuti aturan berlawanan arah jarum jam untuk cincin eksterior, dan searah jarum jam untuk cincin interior - lihat blog MicroSoft ini untuk detail lebih lanjut. Postgis tampaknya memungkinkannya untuk geometri, dan memiliki fungsi yang akan memaksa geometri poligon untuk mengikuti aturan tangan kanan atau kiri, lihat ST_ForceRHR dan ForceLHR . JTS / Geos tampaknya telah mengikuti aturan tangan kanan, yaitu, orientasi searah jarum jam dari cincin luar, jadi semuanya agak tidak jelas, sungguh.
Secara umum masuk akal untuk tipe data geografi untuk memaksakan orientasi, karena jika tidak maka tidak mungkin untuk mengetahui apakah poligon kecil hanya itu atau cincin bagian dalam dari seluruh poligon dunia. Dengan tipe data geometri pada permukaan planar, kebingungan ini tidak dapat muncul, karena cincin luar dan cincin dalam mengikuti, dan jika hanya ada satu cincin, itu akan melampirkan (tidak peduli apa orientasinya), tidak seperti bola dunia , yang membungkus.
Dari komentar oleh @mxfh: OpenGIS's Simple Features Access OGC (ISO 19125-1) menetapkan arah berlawanan arah jarum jam untuk cincin luar pada dokumen versi 1.2.1 [OGC 06-103r4] 6.1.11.1/halaman 26 dari opengeospatial.org / standar / sfa. Perubahan itu diperkenalkan antara versi 1.1.0 dan 1.2.0 di 2006 terbaru. Catatan kaki tempat Anda mengutip belum diperbarui sejak 2005
sumber
Arah cincin (batas) diperlukan untuk mencegah ambiguitas untuk sistem koordinat geografis yang menutupi permukaan yang terbatas, karena batas akan menentukan dua area, satu kiri dan satu kanan batas sepanjang arahnya. Menentukan yang mana dari dua area itu yang lebih besar adalah mungkin, tetapi masih menyisakan ambiguitas.
Berikut ini adalah ikhtisar tentang arah cincin luar poligon dalam berbagai format berdasarkan spesifikasinya:
Akses Fitur Sederhana (ISO 19125-1) juga digunakan dalam WKT / GML / KML dan berbagai implementasi SQL:
Dalam sebagian besar implementasi, urutan cincin dalam POLYGON penting (sebagai lawan dari shapefile)
Sarang yang lebih dalam, alias pulau-di-danau-di-pulau-... harus diwakili sebagai MultiPolygons ( lihat gambar 2.10 (4) ), karena hanya ada satu perbatasan luar dan sarang yang lebih dalam daripada cincin interior. tidak didefinisikan.
ESRI Shapefile / SHP :
Karena beberapa batas luar diizinkan konfigurasi pulau-di-danau-di-pulau dimungkinkan dengan definisi poligon ini. Secara topologis, pulau di danau hanyalah cincin luar searah jarum jam. Secara efektif ini membuat ESRI Shapefile Polygon sebagai MultiPolygon Fitur Sederhana
GeoJSON (RFC7946) :
TopoJSON : memaksa cincin eksterior searah jarum jam secara default
Tamasya:
Alasan matematis mengapa urutan belitan cincin bersarang bergantian adalah, yang menghitung area dengan rumus tali sepatu ( penjelasan visual ) menghitung area yang ditandatangani tergantung pada arah cincin.
Secara umum cincin bersarang (batas interior) dianggap lubang dan memiliki arah alternatif dari cincin luar. Nilai kontribusi area yang ditandatangani memberikan kontribusi negatif. Sedangkan cincin luar positif. Total area dari semua fitur dering adalah jumlah dari semua area yang ditandatangani.
Seperti yang diterapkan oleh ESRI, lihat entri Pangkalan Pengetahuan ini: Algoritma apa yang digunakan oleh ArcGIS untuk menentukan area poligon?
Usulan Mnemonik
Ujung huruf yang terbuka ditafsirkan sebagai panah:
sumber
Saya tidak tahu bahwa siapa pun akan dapat memberikan jawaban yang pasti untuk pertanyaan Anda karena setiap format file vektor berbeda dan masing-masing SIG, dalam hal bagaimana mereka menangani data ini secara internal, juga akan berbeda. Tetapi saya dapat memberi tahu Anda dengan pasti bahwa pemesanan searah jarum jam tidak hanya untuk ESRI Shapefile. Ada format lain yang menggunakan penunjukan yang serupa dengan pemesanan searah jarum jam untuk cincin eksternal dan berlawanan arah jarum jam untuk poligon lubang interior. Sebagai contoh, struktur poligon vektor JTS menggunakan format yang serupa. Bahkan, dinyatakan di sini , bahwa secara historis ini mirip dengan pendekatan ESRI. Saya juga dapat secara definitif mengatakan bahwa tidak, tidak semua format memiliki persyaratan ini. Misalnya, spesifikasi format GeoJSONtidak membuat persyaratan tentang pemesanan simpul dalam format poligonnya. The KML Spesifikasi benar-benar menyatakan:
Jadi ada banyak pilihan dan diterapkan di sana. Dunia yang liar!
sumber