モデル内に単純なif / else関数を作成し、それが可能かどうかを知りたいのですが。
これを行うには、「セグメントレイヤー」の入力が選択されている場合、「セグメント化(平均シフト)」を実行する必要がなく、次のプロセスの入力として「セグメントレイヤー」を使用します。
'Segmentation(meanshift)'の入力は次のとおりです。
ジョセフの答えを実装しようとした後の更新:次のコードを使用してこのエラーが発生しました
更新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
更新して動作します:)数回試行して、Josephの助けを借りてこのコードが魅力的に機能するようになりました。最後のトリックは、2つのオプション値を「None」に置き換えることでした。
##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