26.8. Usar procesamiento desde la línea de comando
QGIS viene con una herramienta llamada QGIS Processing Executor
que le permite ejecutar modelos y algoritmos de procesamiento (integrados o proporcionados por complementos) directamente desde la línea de comandos sin iniciar QGIS Escritorio.
Desde una herramienta de línea de comandos, ejecutar qgis_process
y se debería obtener:
QGIS Processing Executor - 3.27.0-Master 'Master' (3.27.0-Master)
Usage: C:\OSGeo4W\apps\qgis-dev\bin\qgis_process.exe [--help] [--version] [--json] [--verbose] [--no-python] [command] [algorithm id, path to model file, or path to Python script] [parameters]
Options:
--help or -h Output the help
--version or -v Output all versions related to QGIS Process
--json Output results as JSON objects
--verbose Output verbose logs
--no-python Disable Python support (results in faster startup)
Available commands:
plugins list available and active plugins
plugins enable enables an installed plugin. The plugin name must be specified, e.g. "plugins enable cartography_tools"
plugins disable disables an installed plugin. The plugin name must be specified, e.g. "plugins disable cartography_tools"
list list all available processing algorithms
help show help for an algorithm. The algorithm id or a path to a model file must be specified.
run runs an algorithm. The algorithm id or a path to a model file and parameter values must be specified.
Parameter values are specified after -- with PARAMETER=VALUE syntax.
Ordered list values for a parameter can be created by specifying the parameter multiple times,
e.g. --LAYERS=layer1.shp --LAYERS=layer2.shp
Alternatively, a '-' character in place of the parameters argument indicates that the parameters should be read from STDIN as a JSON object.
The JSON should be structured as a map containing at least the "inputs" key specifying a map of input parameter values.
This implies the --json option for output as a JSON object.
If required, the ellipsoid to use for distance and area calculations can be specified via the "--ELLIPSOID=name" argument.
If required, an existing QGIS project to use during the algorithm execution can be specified via the "--PROJECT_PATH=path" argument.
Nota
Sólo los complementos instalados que anuncian hasProcessingProvider=yes
en su archivo metadata.txt
son reconocidos y pueden ser activados o cargados por la herramienta qgis_process.
Consejo
Before calling qgis_process on a system without window manager (e.g. a headless server), you should set:
export QT_QPA_PLATFORM=offscreen
El comando list
puede ser usado para obtener una lista de proveedores y algoritmos disponibles.
qgis_process list
El comando help
puede ser usado para obtener mas información sobre comandos o algoritmos.
qgis_process help qgis:regularpoints
El comando run
puede ser usado para ejecutar un algoritmo o modelo. Especificar el nombre del algoritmo o una ruta a un modelo como primer parámetro.
qgis_process run native:buffer -- INPUT=source.shp DISTANCE=2 OUTPUT=buffered.shp
Cuando un parámetro acepte una lista de valores, establezca la misma variable múltiples veces.
qgis_process run native:mergevectorlayers -- LAYERS=input1.shp LAYERS=input2.shp OUTPUT=merged.shp
Mientras se ejecuta un algoritmo se muestra una barra de retroalimentación basada en texto, y la operación puede cancelarse mediante CTRL+C.
El comando run
también admite otros parámetros.
--json
formateará la salida estándar de una manera estructurada JSON.--ellipsoid
establecerá el elipsoide en el especificado.--distance_units
usará las unidades especificadas de distancia..--area_units
usará las unidades de área especificadas.--project_path
cargará el proeycto especificado para ejecutar el algoritmo.
qgis_process admite parámetros de entrada complejos, es decir, tipos de parámetros que se especifican a su vez como un objeto de tipo diccionario para algoritmos. Para indicar que los parámetros se especificarán a través de stdin, el comando qgis_process debe seguir el formato (con un -
al final en lugar de la lista de argumentos habitual).
qgis_process run algorithmId -
El objeto JSON debe contener una clave «inputs», que es un mapa de los valores de los parámetros de entrada. Por ejemplo
echo "{'inputs': {'INPUT': 'my_shape.shp', 'DISTANCE': 5}}" | qgis_process run native:buffer -
Además, en este objeto JSON se pueden incluir ajustes adicionales como las unidades de distancia, las unidades de área, el elipsoide y la ruta del proyecto:
{
'ellipsoid': 'EPSG:7019',
'distance_units': 'feet',
'area_units': 'ha',
'project_path': 'C:/temp/my_project.qgs'
'inputs': {'DISTANCE': 5, 'SEGMENTS': 8 ... }
}
La especificación de parámetros de entrada a través de stdin implica automáticamente el formato de salida JSON
para los resultados.