Menemukan kota “terminal” di peta


13

Saya ingin mencari desa / kota yang ujungnya . Itu berarti: Saya membutuhkan desa-desa ini yang terhubung dengan maksimum satu desa pada jarak X km.

Saya hanya ingin tahu bagaimana algoritma ini disebut (saya kira seseorang membuat sesuatu yang serupa sebelumnya).

Apakah ada alat untuk ini? Bagaimana konsep ini disebut?

Misalnya

 City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
                    \                 \                                \
                     Village 4         |                                Road
                     |                  \                            in mountains
                     Village 5----------Village6---------Village7 - - - - -  

Selama jalan di pegunungan lebih panjang dari Xkm, Village 3dan Village 7akan dipertimbangkan oleh saya terminal , karena mereka terhubung ke satu desa (V2, masing-masing V6).

Kalau tidak, saya ingin membangun satu dengan data terbuka yang kita miliki.


Apa yang saya coba :

Mengunduh data OSM untuk negara saya (Rumania) dan mengimpor desa dan kota ke dalam basis data. Dengan menggunakan fungsi geolokasi dari database saya dapat menemukan desa-desa yang tidak memiliki lebih dari X desa dalam radius R km.

Namun ini bukan solusi untuk kasus saya karena dalam kasus saya sebuah desa mungkin berada di sisi lain gunung, seperti dalam contoh di atas, tetapi tidak ada cara yang baik untuk itu (atau tidak ada jalan sama sekali).


3
Konsepnya adalah konektivitas, dan dalam teori graph akan direpresentasikan sebagai jumlah 'edge' yang dimiliki 'node'. Anda akan mencari node dengan satu tepi setelah Anda menyaring tepi di atas ambang batas berat Anda. Solusi aktual akan bergantung pada alat, bahasa, atau perangkat lunak apa yang Anda gunakan.
RoperMaps

@ Operoper Saya belum punya alat yang diatur, tetapi bertanya secara umum (dan akhirnya, jika seseorang membangun sesuatu seperti ini sebelumnya). Saya akan memperpanjang ini, memberikan skor (berapa banyak cara lebih pendek dari X yang dimiliki node). Semakin besar skor, semakin banyak yang terhubung (dan kurang terminal ) itu. Jika saya membuatnya, mungkin saya akan berakhir dengan mem-parsing beberapa grafik menggunakan Node.js, tetapi hanya ingin tahu apakah ada orang lain yang melakukannya sebelumnya. : D
Ionică Bizău

@ Operoper Saya kira saya bisa menggunakan OSM untuk ini, tapi saya merasa sangat sulit (misalnya ada cara menghubungkan node, tetapi node ini hanya titik, bukan mewakili kota). Saya dapat menulis algoritma untuk menemukan daun dalam grafik atau sesuatu yang sedikit lebih panjang untuk kasus saya, tetapi saya tidak yakin bagaimana menggunakan data OSM untuk ini (atau apakah ada cara yang lebih mudah daripada OSM?).
Ionică Bizău

perangkat lunak apa yang Anda gunakan? apakah Anda bekerja dalam jarak nyata atau dalam jarak penerbangan burung?
radouxju

@radouxju Prototipe kerja pertama saya adalah jarak terbang burung (radius, berdasarkan koordinat) –lagi, itu awal, tapi bukan itu yang saya inginkan. Saya menulis skrip saya di Node.js dan menggunakan MongoDB. Saya lebih suka jarak nyata: misalnya jika ada dua desa, dipisahkan oleh bukit, tanpa jalan di atas bukit, maka jarak di antara mereka akan menjadi jalan terpendek yang menghubungkan mereka.
Ionică Bizău

Jawaban:


2

Tampak bagi saya bahwa Anda perlu melangkah melalui garis geometri mengambil koordinat untuk setiap akhir / titik terminal penyangga itu pilih garis geometri (dari jalan Anda fc) jika Anda mengembalikan hanya satu fitur ujungnya / titik terminal, jika lebih dari yang tidak dan lewati. Semoga ini masuk akal ...


Nah, dan bagaimana cara melakukannya?
Ionică Bizău

Anda mungkin dapat melakukannya dengan Modelbuilder dan mengekspor ke Python. ArcObjects adalah rute lain tetapi lebih rumit. Pernahkah Anda menggunakan Modelbuilder sebelumnya?
user17260

Pilihan spasial dengan opsi "sentuhan" mungkin membantu Anda memulai. Dapat mempersempit pilihan awal yang ditetapkan saat Anda membalikkan set pilihan ke yang tidak disentuh.
user17260

Saya tidak menggunakan Modelbuilder. Saya perlu jawaban langkah demi langkah, karena ini adalah interaksi pertama saya dengan data OSM. : D Sangat sulit bagi saya untuk menemukan tutorial tentang hal itu.
Ionică Bizău

Wow, itu permintaan besar. Apakah Anda memiliki akses ke ArcInfo lisensi ArcMap?
user17260

2

Anda mungkin dapat mencapai ini dengan menggunakan QGIS dan sebuah perangkat lunak yang awalnya bertujuan menghitung konektivitas lanskap seperti Graphab atau Conefor . Sebagai contoh :

  • Impor data OSM Anda ke QGIS, baik dengan menyeret dan menjatuhkannya atau dengan menggunakan plugin OpenStreetMap.
  • Simpan data Anda sebagai bentuk (klik kanan)
  • Gunakan plugin Conefor untuk menghasilkan node dan file koneksi, seperti yang dijelaskan di sini
  • Hitung pentingnya setiap simpul dan tautan menggunakan Conefor. "Simpul akhir" tidak akan penting untuk konektivitas. Saya pikir Anda bisa menggunakan metrik BC (IIC) karena memperhitungkan "jumlah jalur terpendek antara semua pasangan tambalan yang melewati simpul tertentu (...) [dan] panjang (jumlah tautan) dari jalur antara tambalan di mana simpul tertentu terlibat " (lihat di sini )

Saya belum bisa menguji ini - sayangnya saya tidak punya cukup waktu sekarang. Tapi saya pikir itu bisa berhasil, jika Anda ingin sedikit mengutak-atik. Misalnya, Anda mungkin harus menghapus tautan yang menghubungkan dua node yang ada di setiap sisi hambatan (gunung dll), baik secara manual (jika mereka tidak terlalu banyak) atau dengan menggunakan fungsi geoproccesing dan bentuk yang mengandung hambatan Anda .


Terima kasih untuk ini! Akan segera mencobanya. [dan] panjangnya (jumlah tautan) - akankah itu memberi saya jarak dalam kilometer (jika tidak, bagaimana saya bisa mendapatkannya?)?
Ionică Bizău

Untuk mendapatkan jarak antar titik, Anda tidak perlu repot menggunakan perangkat lunak selain QGIS. Lihat di sini dan di sini misalnya. Unit jarak yang digunakan tergantung pada sistem koordinat lapisan.
Mefimefi

Juga, jika Anda ingin lebih banyak info tentang alat yang berfokus pada konektivitas lanskap, Anda mungkin ingin melihat pada diskusi Researchgate ini
Mefimefi

Saya menemukan QGIS agak bermasalah (setidaknya di macbook saya), tetapi tautan terakhir bermanfaat. Akan memeriksa jawaban mereka juga. Terima kasih!
Ionică Bizău

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.