Saya dapat menerima peta dari sumber apa pun untuk proyek saya, dan untuk algoritma C ++ yang saya buat, sangat penting bagi algoritma untuk mengetahui di mana persimpangan jalan (node di mana lebih dari dua segmen jalan bertemu) berada. Selain itu, di banyak peta yang saya dapatkan, ada jalan yang melebihi batas dan undershooting (yaitu: jalan tidak terhubung dengan benar). Salah satu cara untuk memperbaiki masalah adalah dengan 'membersihkan' jaringan jalan menggunakan Autocad. Pertanyaan yang saya miliki adalah:
- Apakah ada cara yang efisien (perangkat lunak apa pun yang dapat melakukannya?) Untuk mendapatkan peta saya dalam format GML, yang berisi informasi tentang persimpangan jalan di peta? (mungkin memiliki tag GML yang mengatakan bahwa simpul tertentu adalah persimpangan)
- Apakah ada cara lain untuk 'membersihkan' jaringan jalan?
Kolega telah menyarankan FME, tetapi itu melibatkan penulisan skrip dan kami tidak yakin apakah skrip itu akan cukup fleksibel untuk memenuhi semua peta. Satu-satunya cara lain untuk mendeteksi persimpangan adalah dengan menggunakan brute force dan menemukan ruas jalan mana yang memiliki simpul umum. Apakah ArcGIS akan membantu? (belum menggunakannya, tetapi telah mendengarnya) Saya yakin harus ada cara yang lebih baik ...
Jawaban:
Jika Anda memiliki jalan dalam bentuk spasial, seperti Shapefile, Anda dapat memuatnya ke PostGIS dan secara otomatis menemukannya menggunakan kueri SQL. Saya telah melakukan ini sebelumnya - pernyataan SQL dirancang untuk menemukan untuk setiap jalan yang bersinggungan secara geografis dan membuat titik nodal untuk setiap persimpangan.
Saya akan mencoba untuk membersihkan ini nanti, tapi di sini adalah aliran dasar yang dapat Anda ambil ...
Fungsi ST_ * adalah apa yang membuat ini berfungsi di dalam PostGIS
Berikut ini hanya cuplikan karena saya tidak punya waktu untuk menyelesaikan, mungkin seseorang dapat mengeditnya sebelum saya kembali ke sini ...
sumber
Anda dapat menganalisis polyline dengan cara yang menakjubkan dengan menggunakan buffer. Ini biasanya tidak efisien - buffer membuat banyak simpul tambahan - tetapi (a) itu adalah teknik yang tersedia di banyak GIS (berbasis vektor atau raster) dan (b) kadang-kadang dapat menghasilkan informasi yang sebaliknya sulit diperoleh.
Dalam hal ini, buffering jalan dengan jumlah kecil dan kemudian buffering oleh negatif dari jumlah yang sama menyisakan sedikit "pulau" di sekitar semua tikungan dan di sekitar semua persimpangan. Ini mudah dibuktikan secara geometris.
Berikut adalah contoh penyangga polyline 10 m (abu-abu) dan penyangga -10 m (merah terang) di peta yang lebarnya 650 m:
Sekarang memotong lapisan polyline asli dengan poligon pulau ini, menggabungkan segmen dengan pengidentifikasi pulau, dan menghitung potongan-potongan:
Segmen kuning muda menunjuk potongan-potongan hitung tinggi dan segmen cyan gelap menunjuk yang hitung-rendah. Dengan cara ini, kami telah (a) menemukan semua tikungan dan persimpangan (termasuk persimpangan-sendiri) dan persimpangan dekat (lihat ekstrem kiri, di mana kedua segmen tidak cukup bertemu)) dan (b) membedakan tikungan dari persimpangan. Kita dapat menemukan hampir persimpangan dengan memilih pulau-pulau yang berisi dua atau lebih segmen yang terhubung: tikungan hanya berisi segmen yang terhubung.
Karena simetri buffering, centroid dari pulau-pulau persimpangan adalah titik persimpangan.
Salah satu aspek yang indah dari gaya analisis ini adalah bahwa ia tidak peduli bagaimana polyline yang mendasarinya diwakili: itu bisa menjadi fitur tunggal, itu bisa menjadi satu fitur untuk setiap segmen garis, atau apa pun di antaranya.
sumber
Ya, Anda bisa melakukan ini dengan FME pasti. Ada banyak "transformer" yang menangani pembersihan, persimpangan, dan topologi; Saya akan mencoba transformator TopologyBuilder dalam kasus ini.
Semua skrip dilakukan dalam lingkungan grafis, sehingga sangat mudah dilakukan.
Anda selalu bisa mendapatkan versi uji coba dari www.safe.com
(Pengungkapan: Tandai Irlandia, alias Penginjil FME, Safe Software Inc.)
sumber
GRASS GIS memiliki alat yang sangat efisien untuk membersihkan poligon seperti yang Anda inginkan, lihat: http://grass.fbk.eu/grass62/manuals/html62_user/v.clean.html
sumber
Analis jaringan Arcgis, yang dapat Anda peroleh dengan uji coba gratis, melakukan ini dalam waktu kurang dari 10 detik dan hanya dengan beberapa klik.
sumber
Prosesnya dapat dilakukan di ArcGIS dengan analis jaringan.
Ada juga cara lain di ArcGIS: Anda dapat melalui langkah-langkah berikut: "Arctoolbox" → "Alat manajemen data" → "fitur" → "fitur simpul ke titik" dan di sana Anda dapat melakukan apa yang Anda butuhkan.
sumber