runalg와 함께 메모리 레이어를 입력 및 / 또는 출력으로 사용합니까?


9

runalg를 사용하여 메모리 레이어를 입력 및 / 또는 출력으로 사용할 수 있습니까?

runandload를 사용 하면이 작업을 수행합니다.

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

매개 변수 2와 3은 이미 메모리에있는 입력 레이어이고, 매개 변수 3은 출력 레이어이며 메모리에 기록되고 다음 도구에서 사용됩니다 (디졸브). 이것은 잘 작동하지만 runalg 와 동일한 논리를 사용하려고 하면 Dissolve 도구가 실행되지 않으므로 메모리에 병합 된 레이어가 만들어지지 않은 것 같습니다. 예를 들어 다음은 작동하지 않습니다.

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

그 가정 할 수 runalg을 하거나 메모리에있는 레이어를 그대로 사용하거나 출력 어떤 수없는 것을하지 않는 이유는 무엇입니까?


답변:


4

왜 메서드가 작동하지 않는지 확실하지 않지만 다른 방법을 사용할 None때 대신 사용하는 것이 runalg메모리에 출력을 생성합니다. 아래에서 첫 번째 프로세스를 정의 output_0하고이 결과를 두 번째 프로세스의 입력으로 호출했습니다.

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

결과:

결과


처리 플러그인 v2.12.2를 사용하여 QGIS 2.16.0-Nødebo에서 테스트되었습니다.

참고 qgis:mergevectorlayers 현재 입력 층의 목록을 필요로한다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.