내 모델 내에서 간단한 if / else 함수를 만들고 싶습니다. 가능한지 여부를 알고 싶었습니다.
'세그먼트 레이어'에 대한 입력을 선택하면 '세그먼트 (평균 이동)'을 실행할 필요가 없으며 다음 프로세스의 입력으로 '세그먼트 레이어'를 대신 사용하기를 원합니다.
'Segmentation (meanshift)'의 입력은 다음과 같습니다.
Joseph의 답변을 구현하려고 시도한 후 업데이트 : 다음 코드를 사용 하고이 오류가 발생했습니다.
업데이트 2, 매개 변수를 교체 한 후 28 번째 줄에 오류가 발생합니다.
##Example=name
##BGREN=optional raster
##Segment_Layer=optional vector
##output=output vector
if BGREN is not None:
processing.runalg('otb:segmentationmeanshift', \
-BGREN\
-0\
-70\
-70\
-0.1\
-100\
-100\
-0\
-0\
-0\
-'True'\
-'False'\
-1\
-0.1\
-'Layer'\
-'DN'\
-1024\
-1\
-0\
-output)
else:
output=Segment_Layer
작동 방식 업데이트 :) 몇 번의 시도 후 Joseph 이이 코드를 매력처럼 작동시키는 데 도움이되면 마지막 트릭은 두 개의 선택적 값을 '없음'으로 바꾸는 것이 었습니다.
##Example=name
##BGREN=optional raster
##Segment_Layer=optional vector
##output=output vector
if BGREN is not None:
processing.runalg('otb:segmentationmeanshift', \
BGREN, \
0, \
70, \
70, \
0.1, \
100, \
100, \
0, \
0, \
None, \
True, \
False, \
1, \
0.1, \
'Layer', \
'DN', \
1024, \
1, \
None, \
output)
else:
output=Segment_Layer