Ich möchte eine einfache if / else-Funktion in meinem Modell erstellen und wollte wissen, ob dies möglich ist oder nicht.
Ich möchte, dass dies so ist, wenn eine Eingabe für 'Segmentebene' ausgewählt ist, dass sie nicht die 'Segmentierung (Mittelwertverschiebung)' ausführen muss und stattdessen 'Segmentebene' als Eingabe für den nächsten Prozess verwendet.
Die Eingaben für die 'Segmentierung (Mittelwertverschiebung)' lauten wie folgt
Update nach dem Versuch, Josephs Antwort zu implementieren: Ich habe den folgenden Code verwendet und diesen Fehler erhalten
Update 2, nach dem Ersetzen der Parameter erhalte ich eine Fehlermeldung in Zeile 28, hier steht '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
Update es funktioniert :) Nach ein paar Versuchen und mit Josephs Hilfe funktioniert dieser Code jetzt wie ein Zauber. Der letzte Trick bestand darin, zwei optionale Werte durch 'Keine' zu ersetzen.
##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