Saya ingin mengakses fungsi garis meledak di Python di luar QGIS dari skrip mandiri.
Modul apa yang harus saya muat untuk menggunakannya?
Bagaimana saya bisa mengakses processing
?
from qgis.core import *
layerInput = QgsVectorLayer('test.shp', 'test', 'ogr')
processing.runalg('qgis:explodelines', layerInput, 'temp.shp')
qgis
pyqgis
qgis-processing
explode
ustroetz
sumber
sumber
import processing
.Jawaban:
UPDATE 24.04.2018: Lihat bagaimana melakukan ini di QGIS v3.x di sini .
Untuk QGIS v2.x
Akhirnya ditemukan cara yang tepat untuk menjalankan algoritma pemrosesan melalui skrip PyQGIS yang berdiri sendiri.
Menggunakan Memproses plugin versi 2.2.0-2, Anda dapat mencoba skrip berikut:
Versi Pemrosesan yang lebih baru dapat ditemukan di
/usr/share/qgis/python/plugins
, jadi Anda mungkin perlu menggunakannyasys.path.append('/usr/share/qgis/python/plugins')
.Saya menemukan contoh yang berfungsi di Galat: Algoritma tidak ditemukan , yang pada gilirannya didasarkan pada diskusi milis Qgis-dev .
sumber
'/home/user/.qgis2/python/plugins'
. Anda dapat menemukan lokasi dengan membuka QGIS dan mengklikplugins/Manage and install plugins
gulir ke bawah untuk memproses dan Anda akan melihat lokasi instalasi dalam deskripsi.cannot-create-a-qpixmap
dengan fungsi yang berdiri sendiri ini, tetapi saya melihat Anda menyelesaikannya juga dalam pertanyaan ini gis.stackexchange.com/questions/188074/…layerInput
dan mengubah baris runalg ke:general.runalg(*sys.argv[1:])
belum lagi skrip ini dapat menjadi dasar untuk pemrosesan GIS paralel sesuai pertanyaan ini: gis.stackexchange.com/questions/119961/…Sampai saya mulai bekerja dengan cara umum untuk melakukannya, saya akan memberi tahu Anda solusinya.
Saya menggunakan plugin Pengolah versi 2.2.0-2 (saya sarankan Anda untuk menggunakan versi ini), yang diinstal di
/home/germap/.qgis2/python/plugins/
dalam komputer saya. Anda perlu mengetahui lokasi folder ini, karena Anda mengimpor modul pemrosesan dari sana.Karena Anda mengetahui penyedia (
qgis
) dan algoritme (explodelines
), Anda dapat melihat/home/germap/.qgis2/python/plugins/processing/algs/qgis/
untuk mengambil nama skrip garis meledak:Explode.py
Informasi ini memungkinkan Anda untuk mengimpor algoritma secara langsung ke skrip mandiri Python Anda.Jadi, buka konsol Python dan salin skrip berikut (saya menggunakan GNU / Linux, sehingga variabel lingkungan diatur secara default, memungkinkan saya untuk mengimpor pustaka qgis dan PyQt4 dengan mudah):
Jika Anda tidak mendapatkan pesan kesalahan, itu saja. Lapisan output telah disimpan di jalur output yang Anda tentukan (
/home/user/data/out.shp
)Catatan: Mengenai cara umum (yaitu, memanggil algoritma dengan nama), saya telah menemukan beberapa masalah yang perlu saya selesaikan sebelum mempostingnya. Segera setelah saya membuatnya berfungsi, saya akan mempostingnya.
sumber