Membuat Plugin QGIS mulai dari Graphical Modeler

Sep 12 2020

Saya ingin tahu bagaimana cara membuat Plugin QGIS mulai dari model yang dibangun dengan pemodel grafis. Apakah mungkin atau saya harus menggunakan script python yang dibuat di konsol QGIS?

Ada saran? Saya harus menggunakan "Pembuat Plugin"?

Jawaban

3 nr_aus Oct 01 2020 at 12:23

Ya, Anda yakin bisa.

Periksa di sini jika Anda menggunakan Python versi lama. Mengonversi model dari skrip QGIS ke Python?

Saya menggunakan 3.14, dan di dalam Model Designer, ada tombol di bagian atas yang disebut 'Ekspor sebagai Algoritme Skrip'. Tekan itu.

2 LeonPowałka Oct 01 2020 at 13:07

Dalam praktiknya, Anda harus mengekspor model Anda sebagai skrip python, membuat plugin menggunakan PluginBuilder dan menyalin kode Anda ke dalam kode plugin yang dibuat. Meskipun melakukan ini dalam satu klik adalah ide bagus untuk plugin baru :). Semuanya dijelaskan dalam posting ini Mengubah Model di Plug-in di QGIS

1 DavidGalt Dec 20 2020 at 10:21

Anda sebenarnya dapat mengemas model dalam plugin tanpa perlu mengubahnya menjadi skrip.

Untuk melakukannya:

  1. Gunakan Plugin Builder (juga merupakan Plugin QGIS) untuk membuat plugin pemrosesan awal

  2. Buka file penyedia (* provider.py) di editor teks

  3. Temukan garisnya:

dari qgis.core impor QgsProcessingProvider

dan di bawahnya tambahkan garis:

dari qgis.core import QgsProcessingModelAlgorithm

impor os

  1. Di bawah modul loadAlgorythms (def loadAlgorithms (self) :) tambahkan baris kode berikut:
for dirpath, dirnames, files in os.walk(os.path.dirname(__file__)):
    for file_name in files:
        if file_name.lower().endswith('.model3'):
            alg = QgsProcessingModelAlgorithm()
            alg.fromFile(os.path.join(dirpath, file_name))
            self.addAlgorithm(alg)

Kode di atas mencari melalui folder plugin dan subfolder apapun dan jika menemukan file model itu mereferensikannya. Jadi, mulai saat ini, yang perlu Anda lakukan untuk menambahkan model ke plugin ini adalah meletakkannya di direktori plugin.