Bagaimana sistem GIS yang berbeda menentukan interior Polygon?

11

Saya tertarik untuk memahami bagaimana sistem GIS dunia nyata dan datanya menyandikan Poligon.

Secara khusus, bagaimana mereka menyelesaikan ambiguitas interior Poligon pada bola?

Latar Belakang: dalam 2D, sepele untuk memilih sisi batas yang memiliki area terbatas, karena bidang 2D tidak terbatas. Namun, bola terbatas, jadi tidak mungkin untuk mengetahui sisi mana yang ada di dalamnya tanpa membuat asumsi tambahan.

Kemungkinan pendekatan yang saya ketahui:

  1. Aturan kanan : batas eksterior selalu ditentukan dalam urutan searah jarum jam, dan lubang ditentukan dalam urutan berlawanan arah jarum jam. (Tentu saja ada aturan kiri juga).
  2. Area terkecil : untuk cincin apa pun, selalu pilih sisi dengan area terkecil. Saya tidak yakin bagaimana Anda akan menentukan Poligon rentang besar: mungkin cincin eksterior kosong diikuti oleh lubang?
  3. Equirectangular : Cukup pertimbangkan proyeksi equirectangular pada bidang 2D tanpa batas. Namun, ini mengasumsikan fitur dipotong di antemeridian, jika tidak, mundur akan diperlukan untuk salah satu dari dua metode di atas.

Preferensi pribadi saya adalah pendekatan pertama, tetapi saya tertarik untuk memahami apakah ini umum dalam sistem GIS standar.

Jason Davies
sumber

Jawaban:

3

Sistem GIS utama dan metode mereka untuk menyelesaikan ambiguitas bawaan:

  • ESRI : aturan kaki kanan.
  • ArcGIS : aturan kaki kanan.
  • SQL Server 2012 : aturan kaki kiri. Sebelum SQL Server 2012, poligon yang lebih besar dari belahan akan melemparkan kesalahan.

GeoJSON tidak menentukan pemesanan.

Jason Davies
sumber
1
Spesifikasi GeoJSON yang direvisi ( tools.ietf.org/html/rfc7946 ) menetapkan bahwa "Cincin poligon HARUS mengikuti aturan tangan kanan untuk orientasi (cincin eksternal berlawanan arah jarum jam, cincin internal searah jarum jam)."
perrygeo
1

Jika saya memahami pertanyaan Anda dengan benar, Anda ingin tahu bagaimana GIS melakukan poin dalam tes poligon bulat. Berikut ini adalah algoritma yang saya temukan di geospatialmethods.org :

  1. Hubungkan titik ke titik eksternal yang diketahui dengan busur lingkaran besar.
  2. Untuk setiap busur lingkaran besar yang merupakan sisi dari tes poligon bulat jika memotong busur yang dibangun pada langkah # 1 dan menghitung jumlah persimpangan.
  3. Jika jumlah total persimpangan aneh, titik yang diberikan berada di dalam poligon bulat. jika jumlah total persimpangan adalah bahkan titiknya berada di luar poligon bulat.

Saya kira itu masih didasarkan pada algoritma planar membangun sinar uji dari titik yang dimaksud ke titik yang diketahui berada di luar poligon, diikuti dengan menghitung berapa banyak tepi melintasi sinar yang Anda sebutkan.

Hal ini juga dibahas secara mendalam dalam makalah NASA JPL tentang algoritma pada poligon pada sebuah bola . Ada di halaman 11. Tentu saja ada beberapa optimasi:

Pertama, hindari melakukan perhitungan trigonometri bola yang mahal secara komputasional jika memungkinkan dengan memeriksa sinar uji terhadap kotak pembatas yang sudah dihitung sebelumnya sebelum melihat salah satu sisi poligon. Jika sinar uji memotong kotak pembatas, Q diperiksa terhadap masing-masing simpul poligon. Tidak ada gunanya menguji apakah Q berada di tepi pada titik ini, karena itu akan terungkap ketika tes persimpangan dilakukan dan sisa tepi dapat dilewati pada saat itu.

Saya pikir Anda akan menemukan kertas yang paling menarik :)

RK
sumber
Ini muncul untuk menjawab pertanyaan yang berbeda. Partisi polyline non-self-berpotongan, bola menjadi dua komponen yang terhubung. OP bertanya bagaimana GIS menentukan - atau bagaimana diberitahukan - komponen mana yang dianggap "di dalam" dan "di luar" yang mana? Situs web yang Anda kutip membahas masalah ini di bawah judul "Tebak Titik Eksternal," yang menekankan bahwa hanya menebak komponen mana yang dimaksudkan untuk berada di dalam.
whuber
Oh ... teman. Disalahpahami pertanyaannya. Saya menyatukannya dengan versi bulat dari titik dalam uji poligon. Akan merevisinya segera setelah saya menemukan jawaban.
RK
Yah, saya menghargai referensi yang Anda temukan, jadi saya harap Anda berhasil memasukkannya dalam jawaban revisi Anda :-).
whuber
Aku juga berharap demikian. Atau mungkin saya hanya akan mengajukan pertanyaan dan menjawabnya sendiri ;-) Akan memalukan untuk menyia-nyiakannya.
RK
1
Terima kasih atas jawaban terinci! Sayangnya seperti @whuber tunjukkan, ini tidak menjawab pertanyaan spesifik saya. :) Saya telah menguraikan pendekatan yang mungkin untuk menyelesaikan ambiguitas inheren di mana bagian dalam poligon berada, tapi saya tertarik mengetahui pendekatan apa yang diambil oleh perangkat lunak GIS di dunia nyata.
Jason Davies