Bagaimana cara mengubah fitur garis sederhana ke jaringan topologi?
12
menggunakan Gdal / OGR apakah ada cara untuk mengubah layer garis shp, kml, atau PostGIS menjadi jaringan node dan segmen sehingga dapat digunakan dalam paket seperti networkx?
Mungkin perlu dicatat bahwa sementara OGR dan NetworkX keduanya mengatakan mereka mendukung GML, yang pertama merujuk Geography Markup Languagesementara yang kedua Graph Modelling Language.
itu kesepakatan yang buruk. Jadi, bagaimana saya bisa melakukan analisis jaringan?
dassouki
@dassouki - Mulai proyek sumber terbuka! Ada di daftar saya, tetapi saat ini sedang turun. Saya ingin kesempatan untuk berkolaborasi dalam hal ini jika ada yang tertarik.
fmark
@fmark sudah punya transpotools.com
dassouki
@dassouki - Kedengarannya menyenangkan! Pada tahap apa proyek ini berlangsung? Beranda mengatakan TranspoTools Will be here shortly. Apakah ada kode di repositori google-code? Semua yang saya lihat kosong.
fmark
@dassouki - Hanya untuk mengonfirmasi, saya tidak tahu banyak tentang bidang analisis transportasi (minat GIS saya terletak tidak lebih jauh dari penghitungan jarak jaringan pada tahap ini), tetapi akan senang berkolaborasi pada ogr2networkxalat jenis.
fmark
2
Anda belum menyebutkan secara spesifik analisis jaringan seperti apa yang ingin Anda lakukan, tetapi jika Anda tertarik dengan perutean, ada beberapa opsi:
PgRouting http://pgrouting.postlbs.org/ bekerja dengan data di PostGIS untuk melakukan analisis perutean. Ini mendukung Dijkstra Jalur Terpendek, Jalur Terpendek A *, bintang Shooting Star Terpendek, dan algoritma Traveling Salesperson (TSP). Itu juga tidak perhitungan jarak mengemudi. Daftar contoh aplikasi menggunakan PgRouting dapat ditemukan di http://pgrouting.postlbs.org/wiki/pgRoutingDemo PgRouting mendorong aplikasi Ride the City http://www.ridethecity.com/.
Proyek OpenRouter http://wiki.osgeo.org/wiki/OpenRouter. Proyek ini terlihat menarik, tetapi tidak terlalu matang pada saat ini.
(Permintaan maaf untuk URL yang dikutip, tapi saya tidak memiliki cukup kredibilitas untuk mengirim> 1 URl ...)
+1 untuk Anda. Saya melihat pindah dari openstreet dan postgis data karena keterbatasan data dan fakta bahwa kita sedang membuang postgis untuk saat ini. Kami biasanya menyediakan data kami sendiri yang jauh lebih baik daripada Openstreet, tetapi pada saat yang sama kami tidak ingin terbatas pada pgrouting. Masalah lainnya adalah bahwa katakanlah kita ingin menerapkan pengumpulan sampah yang pythonic atau ramah arcg atau tukang pos Cina atau penjual masalah perjalanan.
dassouki
Sudahkah Anda melihat SpatiaLite? Ini akan memberi Anda basis data spasial OpenSource yang jika berbasis file dan platform independen. Saya belum pernah menggunakannya, tetapi tampaknya ada kemampuan routing dengan SpatiaLite < gaia-gis.it/spatialite/spatialite-network-2.3.1.html >
DavidF
Juga, terima kasih telah membawa NetworkX ke perhatian saya. Ini terlihat seperti modul Python yang sangat keren.
DavidF
2
Saya pikir jawabannya tergantung. Sebagian besar format GIS tidak secara eksplisit memasukkan informasi kedekatan (mis. Tidak ada indikator dalam .shp yang penuh dengan fitur garis sederhana untuk menunjukkan bahwa dua fitur memiliki titik akhir yang sama), yang merupakan pemecah kesepakatan untuk membacanya secara langsung ke dalam jaringan.
Dari sekilas mengintip kode tersebut, sepertinya paket utilitynetwork yang ditautkan oleh scw akan menemukan kembali informasi itu hanya jika titik akhir identik bit-for-bit. Ini mungkin cukup baik untuk sebagian besar kebutuhan, termasuk kebutuhan Anda! (Aku bisa salah tentang ini, karena itu memang hanya sepintas mengintip.)
Untuk sesuatu yang lebih kuat - misalnya, Anda mungkin ingin membuat simpul baru di jaringan tempat dua sisi bersilangan, atau Anda ingin menangani perturbasi yang membuat titik akhir yang tumpang tindih sangat sedikit berbeda - Anda harus mencari pendekatan yang memeriksa geometri lebih dalam.
Saya telah melakukan sesuatu yang mirip dengan Boundary Generator untuk memulihkan informasi jaringan kedekatan dari poligon: platform yang salah, bahasa dan geometri primitif untuk Anda, sayangnya. Namun, mungkin wawasan tentang bagaimana mendekati isu ketahanan.
+1 ... Saya tidak yakin apa yang Anda maksudkan dengan platform yang salah? Saya mengerti penjelasan Anda, dan ini sangat mengejutkan bahwa saya tidak dapat mengubah data menjadi simpul dan bobot. hanya 2 program yang melakukannya dari file shp adalah TransCAD dan EMME2 / 3
dassouki
Dengan "platform yang salah" Saya hanya bermaksud bahwa Boundary Generator ditulis untuk lingkungan ArcGIS, setidaknya untuk saat ini. :) Perlu beberapa adaptasi untuk bekerja dengan OGR. (Juga diperlukan akan sedikit kode baru yang signifikan untuk menemukan titik akhir kebetulan dari garis, yang bertentangan dengan tepi kebetulan dari poligon. Saya mungkin menambahkan ini ke versi berikutnya jika / ketika saya punya waktu. Sepertinya itu bisa sangat berguna .)
GML
, yang pertama merujukGeography Markup Language
sementara yang keduaGraph Modelling Language
.Jawaban:
Ben Reilly baru-baru ini memposting tautan pada pertanyaan lain ke paket Python utilitynetwork- nya , yang menggunakan binding OGR untuk mengonversi data ke dalam networkx DiGraphs .
sumber
Dilihat dari daftar networkx dari format grafik yang dapat diimpor dan format yang didukung oleh GDAL , saya ragu konversi semacam itu dimungkinkan.
sumber
TranspoTools Will be here shortly
. Apakah ada kode di repositori google-code? Semua yang saya lihat kosong.ogr2networkx
alat jenis.Anda belum menyebutkan secara spesifik analisis jaringan seperti apa yang ingin Anda lakukan, tetapi jika Anda tertarik dengan perutean, ada beberapa opsi:
PgRouting http://pgrouting.postlbs.org/ bekerja dengan data di PostGIS untuk melakukan analisis perutean. Ini mendukung Dijkstra Jalur Terpendek, Jalur Terpendek A *, bintang Shooting Star Terpendek, dan algoritma Traveling Salesperson (TSP). Itu juga tidak perhitungan jarak mengemudi. Daftar contoh aplikasi menggunakan PgRouting dapat ditemukan di
http://pgrouting.postlbs.org/wiki/pgRoutingDemo
PgRouting mendorong aplikasi Ride the Cityhttp://www.ridethecity.com/
.Proyek OpenRouter
http://wiki.osgeo.org/wiki/OpenRouter
. Proyek ini terlihat menarik, tetapi tidak terlalu matang pada saat ini.(Permintaan maaf untuk URL yang dikutip, tapi saya tidak memiliki cukup kredibilitas untuk mengirim> 1 URl ...)
sumber
Saya pikir jawabannya tergantung. Sebagian besar format GIS tidak secara eksplisit memasukkan informasi kedekatan (mis. Tidak ada indikator dalam .shp yang penuh dengan fitur garis sederhana untuk menunjukkan bahwa dua fitur memiliki titik akhir yang sama), yang merupakan pemecah kesepakatan untuk membacanya secara langsung ke dalam jaringan.
Dari sekilas mengintip kode tersebut, sepertinya paket utilitynetwork yang ditautkan oleh scw akan menemukan kembali informasi itu hanya jika titik akhir identik bit-for-bit. Ini mungkin cukup baik untuk sebagian besar kebutuhan, termasuk kebutuhan Anda! (Aku bisa salah tentang ini, karena itu memang hanya sepintas mengintip.)
Untuk sesuatu yang lebih kuat - misalnya, Anda mungkin ingin membuat simpul baru di jaringan tempat dua sisi bersilangan, atau Anda ingin menangani perturbasi yang membuat titik akhir yang tumpang tindih sangat sedikit berbeda - Anda harus mencari pendekatan yang memeriksa geometri lebih dalam.
Saya telah melakukan sesuatu yang mirip dengan Boundary Generator untuk memulihkan informasi jaringan kedekatan dari poligon: platform yang salah, bahasa dan geometri primitif untuk Anda, sayangnya. Namun, mungkin wawasan tentang bagaimana mendekati isu ketahanan.
sumber
Ada beberapa kode geodjango di MarineMap yang mungkin dapat disesuaikan untuk tugas tersebut.
sumber