27.8. Processing dalla riga di comando

QGIS è dotato di uno strumento chiamato QGIS Processing Executor che permette di eseguire algoritmi e modelli di Processing (integrati o forniti da plugin) direttamente dalla linea di comando senza avviare QGIS Desktop stesso.

Dallo strumento a riga di comando, esegui qgis_process e dovresti ottenere:

  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
Solo i plugin installati che riportano hasProcessingProvider=yes nel loro file metadata.txt sono riconosciuti e possono essere attivati o caricati dallo strumento qgis_process.

 

Suggerimento
Prima di chiamare qgis_process su un sistema senza window manager (ad esempio un server headless), devi impostare:

export QT_QPA_PLATFORM=offscreen
Il comando list può essere usato per ottenere una lista di tutti i fornitori e algoritmi disponibili.
  qgis_process list

Il comando help può essere usato per ottenere ulteriori informazioni sui comandi o sugli algoritmi.

  qgis_process help qgis:regularpoints

Il comando run può essere usato per eseguire un algoritmo o un modello. Specifica il nome dell’algoritmo o il percorso di un modello come primo parametro.

  qgis_process run native:buffer -- INPUT=source.shp DISTANCE=2 OUTPUT=buffered.shp

Quando un parametro accetta una lista di valori, imposta la stessa variabile più volte.

  qgis_process run native:mergevectorlayers -- LAYERS=input1.shp LAYERS=input2.shp OUTPUT=merged.shp

Durante l’esecuzione di un algoritmo viene visualizzata una barra di feedback testuale e l’operazione può essere annullata tramite CTRL+C.

Il comando run supporta anche altri parametri.

  • --json formatterà l’output stdout in modo strutturato JSON.

  • --ellipsoid imposterà l’ellissoide a quello specificato.

  • --distance_units userà le unità di distanza specificate.

  • --area_units utilizzerà le unità di superficie specificate.

  • --project_path caricherà il progetto specificato per eseguire l’algoritmo.

I parametri di input complessi, cioè i tipi di parametri che sono specificati come oggetto di tipo dizionario per gli algoritmi, sono supportati da qgis_process. Per indicare che i parametri saranno specificati tramite stdin, il comando qgis_process deve seguire il formato (con un - a capo al posto del solito elenco di argomenti).

  qgis_process run algorithmId -

L’oggetto JSON deve contenere una chiave «inputs», che è una mappa dei valori dei parametri di ingresso. Ad esempio.

  echo "{'inputs': {'INPUT': 'my_shape.shp', 'DISTANCE': 5}}" | qgis_process run native:buffer -

Inoltre, è possibile includere in questo oggetto JSON impostazioni aggiuntive come le unità di distanza, le unità di area, l’ellissoide e il percorso del progetto:

  {
   'ellipsoid': 'EPSG:7019',
'distance_units': 'feet',
'area_units': 'ha',
'project_path': 'C:/temp/my_project.qgs' 'inputs': {'DISTANCE': 5, 'SEGMENTS': 8 ... } }

La specificazione dei parametri di input tramite stdin implica automaticamente il formato di output JSON per i risultati.