Я хочу сделать простую функцию if / else внутри моей Модели, и я хотел знать, возможно ли это или нет.
Я хочу, чтобы это делалось так, если выбран Вход для «Сегментного слоя», чтобы он не выполнял «Сегментацию (означает смещение)» и использует вместо этого «Сегментный слой» в качестве Входных данных для следующего процесса.
Входные данные для «Сегментации (среднее смещение)» следующие
Обновление после попытки реализовать ответ Джозефа: я использовал следующий код и получил эту ошибку
Обновление 2, после замены параметров я получаю сообщение об ошибке в строке 28, это было «else:» стоит
##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
Обновите это работает :) после нескольких попыток и с помощью Джозефа этот код теперь работает как талисман, последний трюк заключался в замене двух необязательных значений на «Нет».
##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