Creación del complemento QGIS a partir de Graphical Modeler
Me gustaría saber cómo puedo crear un complemento QGIS a partir de un modelo creado con el modelador gráfico. ¿Es posible o tengo que usar necesariamente los scripts que Python hizo en la consola de QGIS?
¿Alguna sugerencia? ¿Tengo que usar "Plugin Builder"?
Respuestas
Sí, seguro que puedes.
Marque aquí si está utilizando una versión anterior de Python. ¿Convertir modelos de QGIS a scripts de Python?
Estoy usando 3.14, y dentro del Diseñador de modelos, hay un botón en la parte superior llamado 'Exportar como algoritmo de script'. Presione eso.
En la práctica, se trata de exportar su modelo como script de Python, crear un complemento usando PluginBuilder y copiar su código en el código del complemento creado. Aunque hacer esto con un solo clic es una buena idea para un nuevo complemento :). Todo se explica en esta publicación Conversión de modelo en complemento en QGIS
De hecho, puede empaquetar modelos en complementos sin la necesidad de convertirlos en scripts.
Para hacerlo:
Utilice el generador de complementos (en sí mismo un complemento de QGIS) para crear un complemento de procesamiento de inicio
Abra el archivo del proveedor (* provider.py) en un editor de texto
Encuentra la línea:
de qgis.core importar QgsProcessingProvider
y debajo agrega las líneas:
desde qgis.core importar QgsProcessingModelAlgorithm
importar sistema operativo
- Bajo el módulo loadAlgorythms (def loadAlgorithms (self) :) agregue las siguientes líneas de código:
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)
El código anterior busca en la carpeta del complemento y en cualquier subcarpeta y, si encuentra archivos de modelo, los hace referencia. Entonces, desde este punto en adelante, todo lo que necesita hacer para agregar modelos a este complemento es colocarlos en el directorio del complemento.