많은 처리 알고리즘에는 출력을 메모리로 저장하는 옵션이 있습니다. 도구 상자에서 실행 한 경우 "알고리즘 실행 후 출력 파일 열기"상자를 선택하면 제대로 작동합니다.
QGIS의 소스 코드를 보면 메모리 계층을로드하기위한 코드가 함수에 정의 된 것 같습니다 Postprocessing.handleAlgorithmResults
. 이 함수는 alg.outputs
목록에 대한 액세스를 사용 하며 다음을 수행합니다.
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
layer = out.memoryLayer # NOTE!!
QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!!
else:
# ...
콘솔에서 처리 알고리즘을 실행할 때이 객체에 액세스하지 않고 레이어를로드하는 방법이 있습니까? 나는 뛸 수 있습니다
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
또는
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
그러나 결과 출력을 얻는 방법을 찾을 수 없습니다.