Pertanyaan ini lebih terkait dengan sumber daya yang mungkin belum saya identifikasi, meskipun saya sudah mencari web untuk sementara waktu.
Dalam proyek saya sedang bekerja saat ini saya perlu menjalankan algoritma jalur terpendek pada grafik yang mewakili ruang kantor, koridor, tangga, lift dan rute antara bangunan.
Untuk lapisan presentasi saya berpikir untuk menggunakan skrip Python dengan MapServer, tapi sekarang saya lebih memikirkan bagaimana membangun grafik dari (shapefile conveted menjadi a) postGIS db yang dihasilkan dari OpenEV sehingga mudah untuk menambah dan menghapus tepi atau bobot atau informasi tentang poin setelahnya.
Untuk Python ada modul yang disebut networkX yang berhubungan dengan grafik, dan meskipun masalah ini telah dibesarkan di stackexchange di sini , grafik yang saya coba buat bukanlah digraf tetapi tidak langsung.
Pembaruan: 5 hari yang lalu Utilitas Ben Reilly telah ditambahkan ke proyek networkX. Utilitynetwork membuat grafik berarah dari fitur shapefile.
Pertanyaan-pertanyaan tetap terbuka untuk pendekatan yang serupa dari fitur membaca dari database postGIS.
Jawaban:
NetworkX memiliki metode untuk mengubah grafik yang diarahkan menjadi yang tidak terarah .
Selain itu, kode untuk membaca shapefile (atau direktori shapefile) tidak benar-benar perlu menampilkan grafik yang diarahkan, hanya itu yang saya butuhkan pada saat itu. Saya belum mencoba, tetapi mengganti satu baris:
... mungkin melakukan triknya.
NetworkX sepertinya akan mendukung pembacaan shapefile di luar kotak (dengan OGR) di 1.4 ( fitur ).
sumber
Sudahkah Anda melihat menggunakan pgRouting?
http://www.pgrouting.org/docs/howto/topology.html#graphs-directed-undirected-reverse-costs
sumber
Tidak yakin seberapa tertarik Anda menggunakan kerangka kerja lain, atau jika Anda sudah menyelesaikannya, tetapi proyek Geodjango menambahkan fitur ORM yang sangat bagus untuk model data GIS, untuk berbagai basis data yang diaktifkan GIS, termasuk postgres dengan binding PostGIS yang diinstal .
Tautan Geodjango ada di sini: http://docs.djangoproject.com/en/dev/ref/contrib/gis/install/#overview
Perhatikan bahwa Django adalah kerangka kerja web untuk python, geodjango muncul untuk mengedit dan menampilkan data GIS untuk pengembangan web backend, tetapi juga memberikan serangkaian kelas yang jauh lebih intuitif dan kuat daripada binding python OGR langsung (jauh lebih 'pythonic' daripada langsung 'dikonversi dari sintaks C', misalnya Anda dapat membuat kelas django.contrib.gis.geos.linestring.LineString secara langsung daripada membuat ogr. Kelas geometri dengan konstanta wkbLineString di konstruktor).
Dalam tutorial geodjango berada: http://docs.djangoproject.com/en/dev/ref/contrib/gis/tutorial/
Langkah-langkah yang diperlukan untuk mengonfigurasi read / write dari database Postgres Anda semudah menggunakan model python django lainnya, sakit kepala sedang menyiapkan database geospasial Anda. Jadi, untuk memuat data ke dalam database postgres, lihat tautan anchor #layermapping dalam tutorial di atas; ini adalah pemetaan bidang antara data yang tersedia di file bentuk ke kolom database yang disiapkan untuk model data Anda.
Paling tidak, saya akan membutuhkan 2-3 jam untuk menyelesaikan tutorial dan mengatur binding PostGIS dan melihat apakah alat GIS ini adalah yang Anda cari.
Perhatikan juga, bahwa ketika Anda memiliki basis data yang diaktifkan GIS (mis. Binding PostGIS untuk pgsql), Anda dapat melakukan 'berisi' 'di dalam' langsung pada data geometri basis data (Garis / Poligon) menggunakan fungsi tersimpan basis data (mis
ST_Contains(...)
: lihat contoh SQL SQL untuk PostGIS / pgsql sini: http://postgis.refractions.net/docs/ch04.html#id2639062 ... dan bagian terbaik tentang Geodjango, adalah bahwa hal itu dioptimalkan untuk melakukan ini pencarian spasial untuk Anda! .sumber