26.8. 명령 줄에서 공간 처리 알고리즘 사용

QGIS는 사용자가 QGIS 데스크탑 자체를 실행하지 않고서도 명령 줄에서 공간 처리 알고리즘과 (내장되어 있는 또는 플러그인이 제공하는) 모델을 직접 실행할 수 있는 QGIS Processing Executor 라는 도구를 제공합니다.

명령 줄에서 qgis_process 를 실행하면 다음과 같은 화면을 보게 될 것입니다:

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.

참고

qgis_process 도구는 설치된 플러그인 가운데 metadata.txt 파일에 hasProcessingProvider=yes 를 명시한 플러그인만 식별하고, 활성화시키거나 불러올 수 있습니다.

힌트

시스템 상에서 창 관리자(window manager)를 통하지 않고 (예: 헤드리스(headless) 서버) qgis_process 를 호출하기 전에 다음을 설정해줘야 합니다:

export QT_QPA_PLATFORM=offscreen

list 명령어를 사용하면 사용할 수 있는 모든 제공자 및 알고리즘의 목록을 얻을 수 있습니다.

qgis_process list

help 명령어를 사용하면 명령어 또는 알고리즘에 대한 자세한 정보를 얻을 수 있습니다.

qgis_process help qgis:regularpoints

run 명령어를 사용하면 알고리즘 또는 모델을 실행할 수 있습니다. 첫 번째 파라미터로 알고리즘의 이름 또는 모델을 가리키는 경로를 지정하십시오.

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

파라미터가 값 목록을 입력받는 경우, 동일 변수를 여러번 설정하십시오.

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

알고리즘을 실행하는 도중에 텍스트 기반 피드백 막대가 표시되며, CTRL+C 단축키로 실행을 취소할 수 있습니다.

run 명령어는 다음과 같은 심화 파라미터들도 지원합니다.

  • --json: 표준출력(STDOUT) 산출물 서식을 JSON 구성 방식으로

  • --ellipsoid: 타원체를 지정한 타원체로 설정

  • --distance_units: 지정한 거리 단위를 사용

  • --area_units: 지정한 면적 단위를 사용

  • --project_path: 알고리즘을 실행하기 위해 지정한 프로젝트를 불러옵니다.

qgis_process 는 예를 들어 스스로를 알고리즘 용 파라미터 목록(dictionary) 유형 객체로 지정하는 파라미터 유형 같은 복잡 입력 파라미터를 지원합니다. 복잡 파라미터가 표준입력(STDIN)을 통해 지정될 것이라는 사실을 나타내기 위해, qgis_process 명령어는 (일반적인 인자 목록 자리에 후행 - 가 있는) 다음 서식을 따라야만 합니다:

qgis_process run algorithmId -

JSON 객체는 입력 파라미터 값을 매핑하는 “inputs” 키를 담고 있어야만 합니다. 다음은 그 예시입니다:

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

또한 이 JSON 객체는 거리 단위, 면적 단위, 타원체 및 프로젝트 경로 같은 추가 설정도 포함할 수 있습니다:

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

표준입력(STDIN)을 통해 입력 파라미터를 지정한다는 것은 자동적으로 산출물을 JSON 포맷으로 산출한다는 것을 의미합니다.