Pertimbangkan situasi sederhana ini di mana tiga sisi terhubung pada satu simpul:
Saya ingin menulis deskripsi yang ringkas dan jelas tentang hubungan antara A dan B sedemikian rupa sehingga membedakannya dari hubungan antara A dan C. Sesuatu seperti “ketika melintasi simpul ke arah searah jarum jam, A berbatasan? ke B, tetapi A tidak berdekatan? ke C. " Tapi itu tidak benar-benar kedekatan.
Mengatakan dengan cara yang berbeda: bayangkan Anda berdiri di atas simpul dan Anda menghadap ke A. Anda mulai memutar diri searah jarum jam. Tepi berikutnya yang akan Anda tuju adalah B, bukan C.
Apakah ada cara untuk menggambarkan hubungan ini antara A dan B dengan cara yang lebih ringkas, formal, atau benar daripada yang saya tulis di atas?
Itu harus directional (satu hubungan jenis ini ada di arah searah jarum jam dari A, dan yang lain ada di arah berlawanan arah jarum jam). Dan itu harus meningkatkan skala ke kasus-kasus di mana lebih dari tiga tepi terhubung pada node. Mungkin ada hubungannya dengan routing? (Saya sedang memikirkan hal ini dalam konteks jaringan jalan.)
Dua pendekatan yang sudah saya coba tetapi belum terlalu jauh dengan:
Referensi topologi 9IM seperti : Saya telah melihat DE-9IM , dan meskipun saya bukan ahli matematika, saya pikir saya masih bisa mengatakan dari diagram dan istilah bahwa itu tidak mencakup jenis hubungan ini. Saya juga belum menemukannya di deskripsi topologi pada bantuan ESRI atau bantuan Oracle . (Mungkin ada sesuatu di sana tapi aku belum menemukannya!)
Wajah : Saya telah bermain-main dengan fakta bahwa wajah di sisi "utara" A mungkin juga dibatasi oleh B, tetapi bukan C. Namun, seperti yang Anda lihat dalam diagram di sini, itu tidak selalu benar. Bayangkan diagram saya adalah kutipan dari jaringan jalan di mana A dan C adalah jalan arteri dan B adalah jalan buntu pendek.
Saya menduga mungkin tidak ada satu istilah untuk apa yang saya coba katakan; setidaknya saya ingin dapat menggambarkan hubungan seperti itu dengan cara yang lebih sederhana daripada yang saya lakukan di atas. Ini adalah pertanyaan platform-independen. Saat ini, saya hanya mencari kata-kata yang tepat. Nanti saya akan mencoba untuk mengimplementasikan konsep dalam python (pyqgis atau arcpy) pada sebuah shapefile, jadi setiap jawaban dengan titik akhir itu akan sangat menarik, tetapi tidak perlu.
sumber
Jawaban:
Saya tahu bahwa saya agak terlambat ke pesta di sini, tapi ini hal yang cukup menarik, dan saya berharap jawaban saya bisa berguna.
Apa yang Anda tanyakan adalah hubungan kualitatif; sering diabaikan saudara hubungan kuantitatif. Penalaran kualitatif muncul cukup sering dalam ilmu geospasial. Contoh kueri meliputi: Paket mana yang berdekatan dengan yang ini? Fitur apa yang ada di dalam tumpang tindih wilayah A dan wilayah B? Wilayah mana yang cekung? Jalan mana di sebelah kiri? Hubungannya adalah: bersebelahan dengan, di dalam, cekung, dan kiri. Pertanyaan kualitatif sering diabaikan atau dinilai rendah jika dibandingkan dengan pertanyaan kuantitatif seperti mana yang lebih besar, lebih pendek, atau lebih besar jumlahnya.
Suatu relasi kualitatif yang mengambil dua input disebut relasi biner. Ada dua notasi umum untuk ini: - isLeftOf (A, B) Ini adalah notasi awalan. - A isLeftOf B Ini adalah notasi infiks.
Dalam contoh di atas ada juga hubungan unary: isConcave. Relasi ini menghubungkan suatu wilayah dengan daerah itu sendiri dan akan mengembalikan nilai boolean.
Semua predikat spasial Egenhofer dalam model 9-persimpangan (dirujuk dalam 9EIM) adalah hubungan biner antara dua wilayah. Anda mungkin juga tertarik dengan Randell, Cui dan Cohn's RCC (http://en.wikipedia.org/wiki/Region_connection_calculus). Hubungan kualitatif (topologis) yang diberikan dalam bidang studi ini menghubungkan daerah dengan daerah, dan karya selanjutnya menghubungkan garis ke daerah dan garis ke garis. Namun, ini tidak cukup apa yang Anda cari.
OK, maaf atas penyimpangan itu, tapi semoga itu membantu dengan aspek terminologi pertanyaan Anda.
@whuber benar di jalurnya dengan menyarankan daftar tepi terhubung ganda (DCEL). Ini adalah kerabat dekat peta kombinatorial, sering digunakan di bawah penutup dalam sistem CAD, dan ujung bersayap. Konsep winged edge (http://en.wikipedia.org/wiki/Winged_edge) adalah bagaimana standar teks terkenal mendefinisikan lubang dalam poligon (http://en.wikipedia.org/wiki/Well-known_text) #Geometric_objects). Perhatikan pada poligon bahwa urutan titik luar berlawanan arah jarum jam, dan searah jarum jam untuk titik dalam. Seorang peri kecil yang berjalan di sepanjang batas dalam urutan ini akan selalu melihat bagian dalam wilayah di sebelah kirinya.
Dengan peta kombinatorial dan DCEL titik kuncinya adalah bahwa objek-objek ini didefinisikan pada permukaan yang dapat diorientasikan. Kami tidak perlu masuk ke formalitas matematika - idenya cukup sederhana: jika Anda dapat menentukan arah di permukaan, seperti yang Anda bisa dengan sistem referensi spasial dalam GIS, maka Anda memiliki permukaan yang dapat diorientasikan. Jadi, jika Anda dapat menentukan arah, maka Anda dapat menentukan urutan arah di setiap titik di permukaan. Dengan pemesanan terarah Anda dapat menentukan isLeftOf (A, B), isRotATIONALAdjacentTo (A, B) dan sebagainya.
Menentukan pemesanan di sekitar titik dalam grafik yang tertanam di permukaan membutuhkan dua penugasan: 1) menugaskan label ke ujung titik tepi dan 2) menetapkan konvensi untuk pesanan di sekitar titik. Jika elemen order dalam array (mis. [A, B, C] pada gambar Anda) searah jarum jam, maka kita dapat mengetahui sisi mana yang berada di sebelah kiri B.
Dalam contoh Anda, setiap elemen berdekatan dengan yang lain. Fakta itu juga terlihat dalam array karena array sebenarnya mewakili permutasi, yaitu urutan yang penting, tetapi elemen mana yang pertama tidak. Jadi [A, B, C] setara dengan [C, A, B]. Dengan kata lain, array membungkus membuat elemen terakhir yang berdekatan dengan yang pertama.
sumber
Ketika Anda melihat topologi dan grafik konektivitas yang Anda dapatkan dari vendor seperti Teleatlas, Navteq, ESRI, dll, Anda akan mulai melihat suatu pola (tentu saja setiap orang memiliki cara "khusus" mereka sendiri dalam melakukan sesuatu).
Secara pribadi , walaupun 1) Topologi Geospasial dan 2) Routing Graphs hanyalah Graphs dan dapat digeneralisasi untuk direpresentasikan dalam struktur data yang sama, saya mencoba untuk menghindarinya sebanyak mungkin.
Saya mencoba membuat perbedaan di kepala saya.
Mereka hanya grafik, dan mereka milik luasnya ilmu pengetahuan , tetapi ada keuntungan yang jelas tidak menggeneralisasi sebagai hal yang sama. Mereka melayani tujuan yang berbeda, dan jauh lebih mudah untuk mengoptimalkan dan menerapkan operasi ketika mereka dikhususkan untuk tujuan tertentu.
ESRI melakukan ini. Mereka memiliki struktur grafik untuk Topologi Geospasial (TopologiGraph) dan struktur Grafik yang berbeda untuk Masalah Routing (dataset jaringan). Heck, mereka bahkan memiliki Struktur Grafik yang lebih lama - Jaringan Geometrik - yang berfungsi dengan baik untuk masalah aliran di jaringan utilitas.
Dapat diperdebatkan, di dunia PostgreSQL / PostGIS, kami juga menemukan ini. Ada struktur data untuk routing dan satu lagi untuk topologi geospasial .
Dalam pertanyaan Anda, Anda berbicara tentang grafik dan menavigasi mereka searah jarum jam dan berlawanan arah jarum jam, serta wajah-wajah, yang membuat saya yakin bahwa Anda menginginkan struktur khusus untuk (1).
Untuk "Topologi Geospasial", saya pikir cara yang baik untuk mewakili Topologi semacam ini adalah cara yang dilakukan Kantor Hidrografi Inggris dalam S57 Topologi mereka, Deskripsi Topologi Lengkap .
Sangat mirip dengan apa yang dilakukan semua implementasi utama.
Sekarang, jika apa yang Anda cari adalah perutean, maka grafik menjadi berbeda berdasarkan apakah Anda memerlukan satu arah atau konektivitas dua arah. Pada akhirnya, intinya adalah:
Semoga sukses, dan beri tahu kami bagaimana proyek Anda ternyata.
sumber