내가 당신의 작업을 설정하는 방법 은 모델러보다 더 큰 유연성을 제공하지만 사용자와 유사한 인터페이스를 제공 할 수 있는 사용자 지정 스크립트 를 만드는 것입니다. 다음 중 하나를 만들 수 있습니다.
Processing Toolbox> 스크립트> 도구> 새 스크립트 생성
그런 다음 아래 스크립트를 복사하여 붙여넣고에 저장하십시오 C:/Users/You/.qgis2/processing/scripts
.
아래 스크립트는 모델의 기능을 에뮬레이션하려고합니다. 이 스크립트는 최종 솔루션이 아닙니다 (특히 위치 도구 의 교차 및 결합 속성에 사용한 매개 변수가 정의한 것과 다를 수 있기 때문에). 스크립트를 템플릿으로 사용하여 필요에 맞게 스크립트를 확장하고 개선 할 수 있기를 바랍니다. . 실행하려면 저장 한 후 처리 도구 상자 에서 선택하십시오 .
스크립트가 요청한 것을 수행한다고 생각합니다.
##Example model=name
##Order1=vector
##Order2=vector
##Order3=optional vector
##Order4=optional vector
##Order5=optional vector
##Watershed=vector
##Order2_Wshed=output vector
##Order3_Wshed=output vector
##Order4_Wshed=output vector
##Order5_Wshed=output vector
order1 = processing.getObject(Order1)
order2 = processing.getObject(Order2)
order3 = processing.getObject(Order3)
order4 = processing.getObject(Order4)
order5 = processing.getObject(Order5)
watershed = processing.getObject(Watershed)
if Order3 is None:
print 'Processing Order1 and Order2'
else:
print 'Processing Order1, Order2 and Order3'
if Order4 is not None:
print 'Processing Order1, Order2, Order3 and Order4'
if Order5 is not None:
print 'Processing Order1, Order2, Order3, Order4 and Order5'
output_1a = processing.runalg("qgis:intersection", order1, watershed, None)
output_1b = processing.runalg("qgis:joinattributesbylocation", output_1a['OUTPUT'], watershed, u'intersects', 0, 0, '', 0, None)
output_2a = processing.runalg("qgis:intersection", order2, watershed, None)
output_2b = processing.runalg("qgis:joinattributesbylocation", output_2a['OUTPUT'], output_1b['OUTPUT'], u'intersects', 0, 0, '', 0, Order2_Wshed)
if Order3 is None:
pass
else:
output_3a = processing.runalg("qgis:intersection", order3, watershed, None)
output_3b = processing.runalg("qgis:joinattributesbylocation", output_3a['OUTPUT'], output_2b['OUTPUT'], u'intersects', 0, 0, '', 0, Order3_Wshed)
if Order4 is None:
pass
else:
output_4a = processing.runalg("qgis:intersection", order4, watershed, None)
output_4b = processing.runalg("qgis:joinattributesbylocation", output_4a['OUTPUT'], output_3b['OUTPUT'], u'intersects', 0, 0, '', 0, Order4_Wshed)
if Order5 is None:
pass
else:
output_5a = processing.runalg("qgis:intersection", order5, watershed, None)
output_5b = processing.runalg("qgis:joinattributesbylocation", output_5a['OUTPUT'], output_4b['OUTPUT'], u'intersects', 0, 1, 'sum, mean', 0, Order5_Wshed)
아래는 스크립트를 실행할 때 인터페이스의 스크린 샷입니다 (모델을 실행할 때와 유사 함).
몇 가지 참고할 사항 :
QGIS 2.12.3 ( 처리 플러그인 버전 2.12.2 포함)을 사용했습니다.