Kerangka vektor dalam QGIS / Python


8

Saya mencoba menemukan alat untuk membuat kerangka dataset vektor besar menggunakan QGIS dan bundelnya. Itu harus secara langsung dapat diprogram melalui Python atau commandline (QGIS, GRASS, OGR dll semua baik-baik saja).

Targetnya adalah poligon tipis besar dengan lubang yang mewakili area jalan dan saya perlu mendapatkan perkiraan jaringan jalan melalui kerangka.

Apa yang saya temukan sejauh ini:

  • GRASS 7.0 memiliki v.skeletonyang seharusnya cukup baik tetapi tampaknya tidak akan diintegrasikan dengan QGIS dalam waktu dekat.
  • CGAL memiliki kerangka skeletonize, tentu saja, tetapi dukungan Python sangat buruk.
  • pySkeleton tidak berfungsi untuk saya dan saya mungkin tidak punya waktu untuk menyelamatkan kode.

Alternatif lain (openJump skeletonizer, plugin ArcGIS lama ini ...) tidak dapat dengan mudah dicolokkan ke QGIS / Python.

Ada saran lain?


4
GRASS 7.0 adalah "secara terprogram secara langsung dapat dipanggil melalui Python atau commandline", jadi mengapa solusi Anda juga harus terikat erat dengan QGIS? Juga, bagaimana dengan PostGIS? Bagaimana data Anda disimpan?
alphabetasoup

2
Saya ingin memposting solusi sebagai plugin QGIS yang langsung dapat digunakan - karena itu saya ingin tetap menggunakan versi GRASS yang dibundel oleh QGIS.
Jan Šimbera

Jawaban:


6

Dokumen ini "Kerangka Poligon Menggunakan PostGIS" menjelaskan proses yang menggunakan alat-alat dari PostGIS dan GRASS , yang keduanya mungkin bisa dipanggil. Disebutkan menggunakan PostGIS untuk membuat kerangka vektor dan membersihkannya menggunakan PostGIS lagi atau GRASS.

Ada alat yang ada dari Toolbox Pemrosesan yang mudah-mudahan menyederhanakan hal-hal saat memanggil dari Python / command line seperti:

Semoga ini membantu!


Terima kasih! Namun, saya harus menganggap bahwa tidak ada PostGIS yang dipasang ...
Jan Šimbera

@ JanŠimbera - Sobat yang paling selamat datang dan semoga berhasil! Kedengarannya seperti masalah yang sangat menarik yang Anda miliki :)
Joseph

4

Salah satu, opsi yang agak bulat mungkin menggunakan modul skeletonization grid SAGA ( http://www.saga-gis.org/saga_module_doc/2.1.3/imagery_segmentation_1.html ), baik melalui QGIS atau menggunakan saga_cmdutilitas baris perintah . Anda harus mengonversi poligon Anda menjadi raster SAGA terlebih dahulu.

Kalau tidak, seperti yang dinyatakan oleh @ Alpha-beta-soup, Anda bisa menggunakan v.skeletondari GRASS di baris perintah.

Untuk menggunakan alat baris perintah dari dalam Python, gunakan subprocessmodul untuk meneruskan string perintah ke sistem.


Terima kasih untuk sarannya. Saya lebih suka tidak mengkonversi ke raster karena luasnya besar dan saya perlu hasilnya dengan resolusi yang baik; Saya memikirkan hal itu sebagai pilihan terakhir.
Jan Šimbera
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.