26.8. Processing gebruiken vanaf de opdrachtregel

QGIS heeft een gereedschap, genaamd QGIS Processing Executor, dat u in staat stelt algoritmes en modellen van Processing (ingebouwd of verschaft via plug-ins) direct vanaf de opdrachtregel uit te voeren, zonder QGIS Desktop zelf te moeten starten.

Voer, vanuit een programma voor de opdrachtregel, qgis_process uit en u zou moeten krijgen:

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.

Notitie

Alleen geïnstalleerde plug-ins die in hun bestand metadata.txt hebben opgenomen hasProcessingProvider=yes worden herkend en kunnen worden geactiveerd of geladen door het gereedschap qgis_process.

Hint

Voordat u qgis_process aanroept op een systeem zonder vensterbeheer (bijv. een headless server), zou u moeten instellen:

export QT_QPA_PLATFORM=offscreen

De opdracht list kan worden gebruikt om een lijst met alle beschikbare providers en algoritmes op te halen.

qgis_process list

De opdracht help kan worden gebruikt om meer informatie op te halen over opdrachten of algoritmes.

qgis_process help qgis:regularpoints

De opdracht run kan worden gebruikt om een algoritme of model uit te voeren. Specificeer de naam van het algoritme of een pad naar een model als de eerste parameter.

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

Als een parameter een lijst met waarden accepteert, stel dan dezelfde variabele meerdere keren in.

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

Bij het uitvoeren van een algoritme wordt een op tekst gebaseerde balk voor terugkoppeling weergegeven, en de bewerking kan worden geannuleerd met CTRL+C.

De opdracht run ondersteunt ook meer parameters.

  • --json zal uitvoer naar stdout opmaken in een JSON-gestructureerde manier.

  • --ellipsoid zal de ellipsoïde instellen naar de gespecificeerde.

  • --distance_units zal de gespecificeerde eenheden voor afstand gebruiken.

  • --area_units zal de gespecificeerde eenheden voor gebied gebruiken.

  • --project_path zal het gespecificeerde project laden om het algoritme uit te voeren.

Complexe parameters voor de invoer, d.i. typen parameter die van zichzelf worden gespecificeerd als een dictionary type object voor algoritmes, worden ondersteund door qgis_process. De opdracht voor qgis_process moet de indeling ( met een achterliggende - in plaats van de normale lijst met argumenten) volgen om aan te geven dat parameters zullen worden gespecificeerd via stdin,

qgis_process run algorithmId -

Het object voor JSON moet een sleutel “inputs” bevatten, wat een kaart is van de waarden van de parameters voor de invoer. Bijv.

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

Aanvullend kunnen extra instellingen, zoals de eenheden voor afstand, eenheden voor gebied, ellipsoïde en projectpad worden opgenomen in dit object voor JSON:

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

Specificeren van parameters voor de invoer via stdin impliceert automatisch de indeling voor de uitvoer JSON voor de resultaten.