QGIS 2.18.1에서 Python을 통해 벡터 레이어 병합


9

현재 다음 코드를 사용하여 두 벡터 레이어를 병합합니다.

def append_layers(layer1, layer2, output):
    from processing.core.Processing import Processing
    Processing.initialize()
    import processing.tools
    processing.tools.general.runalg("qgis:mergevectorlayers", layer1, layer2, output)

append_layers(layer1.shp, layer2.shp, output.shp)

이것은 QGIS 2.14에서 잘 작동하는 것 같지만 2.18.1에서는 다음 메시지와 함께 실패합니다.

Error: Wrong number of parameters
ALGORITHM: Merge vector layers

2.14와 2.18 사이에 변경된 것이 있습니까? 아니면 정말 명백한 것을 놓치고 있습니까?

답변:


11

예, Python 콘솔 에 다음 코드를 입력하면 입력 레이어 매개 변수에 여러 레이어가 통합 됩니다 .

>>>import processing
>>>processing.alghelp("qgis:mergevectorlayers")
ALGORITHM: Merge vector layers
    LAYERS <ParameterMultipleInput>
    OUTPUT <OutputVector>

따라서이 문제를 해결하는 한 가지 방법은 두 레이어를 입력 매개 변수에 추가하고 분할하는 것입니다.

processing.tools.general.runalg("qgis:mergevectorlayers", layer1 + ";" + layer2, output)

고맙습니다, 잘 작동했습니다. 'runalg ( "gdalogr : convertformat")'프로시 저도 변경 되었습니까? 2.14에서는 'processing.tools.general.runalg ('gdalogr : convertformat ', layer, filetype, "", save_location)'을 사용하여 작동하지만 2.18에서는 오류가 표시되지 않지만 새 파일은 생성되지 않습니다.
JamieTasker

@JamieTasker-가장 환영합니다! 아니요, 동일한 매개 변수 여야합니다. 방금 테스트했으며 정상적으로 작동합니다. 문제가있는 경우 새로운 질문 을하고 입력 레이어 유형, 출력 레이어 유형, 코드 등과 같은 모든 세부 정보를 포함시켜야합니다.
Joseph

@Joseph Jochen이 그의 답변에서 설명한 것과 같은 오류가 발생합니다. 버전 2.18.16 Python 콘솔을 사용하고 있습니다. 파이썬리스트 만 벡터 레이어 입력으로 작동하는 버전을 알고 있으면 흥미로울 것입니다.
Stefan

@ 스테판-개발자가 입력 사용 방법을 변경했다고 생각합니다. 초기 2.18 버전에서는 레이어를 세미콜론으로 구분해야했으며 결국 목록을 허용하도록 변경되었습니다. 이것에 대해 묻는 게시물이 있었습니다.
Joseph

4

위의 답변을 시도하면 예외가 발생하기 때문에 ( l1및 QGIS 2.18.17 Python 콘솔 l2유형 QgsVectorLayer)

import processing
[...]
processing.runalg('qgis:mergevectorlayers', l1 + ";" + l2, None)
Traceback (most recent call last):
    File "<input>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'QgsVectorLayer' and 'str'

나는 노력하고있다

>>> merged = processing.runalg('qgis:mergevectorlayers', [l1, l2], None)
>>> merged['OUTPUT']
u'C:\\Users\\Jochen\\AppData\\Local\\Temp\\processing30eee19448ef42a497403dd3660cafcf\\82e112158f194f59a53e18d5020a9a9d\\OUTPUT.shp'

성공적으로.

따라서 <ParameterMultipleInput>파이썬 목록으로 전달 하는 것이 이것에 대한 해결책입니다.

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