Quiero hacer una simple función if / else dentro de mi Modelo y quería saber si es posible o no.
Quiero que esto haga eso si se selecciona una Entrada para 'Capa de segmento' que no tiene que ejecutar la 'Segmentación (desplazamiento medio)' y usa 'Capa de segmento' como entrada para el siguiente Proceso.
Las entradas para la 'Segmentación (desviación media)' son las siguientes
Actualice después de intentar implementar la respuesta de Joseph: utilicé el siguiente código y obtuve este error
Actualización 2, después de reemplazar los parámetros, aparece un error en la línea 28, este es 'else:' se encuentra
##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
Actualizarlo funciona :) después de algunos intentos y con la ayuda de Joseph, este código ahora funciona de maravilla, el truco final fue reemplazar dos valores opcionales con 'Ninguno'.
##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
Respuestas:
Como se menciona en mi comentario, un guión personalizado puede ser el camino a seguir en esta situación. Puedes crear uno desde:
El siguiente script establece los parámetros de entrada como opcionales junto con una instrucción if / else dependiendo de qué parámetro contiene una capa. Entonces, si se seleccionó una capa
BGREN
, realizará la herramienta de segmentación y establecerá la salida; de lo contrario, la salida será la capa seleccionadaSegment_Layer
.Aquí hay un posible script:
Los parámetros para el
otb:segmentationmeanshift
aspecto aterrador! Desafortunadamente, no tengo instalado Orfeo, así que no puedo probar esta herramienta. Sin embargo, los parámetros se muestran aquí , solo necesita escribirlos en lugar de usar la GUI. Una vez hecho esto, agregue el script a su modelador usandoBGREN
ySegment_Layer
como capas de entrada:Además, en su modelador, es posible que deba cambiar la definición del parámetro Requerido de
BGREN
ySegment_Layer
:Luego conecte la salida del script a su herramienta NDVI.
Probé esto hasta cierto punto usando otras herramientas que funcionaron dependiendo de la capa de entrada seleccionada, ¡así que espero que funcione para su modelador!
EDITAR:
Aquí está el código que usó ligeramente modificado (necesita las comas para separar los parámetros,
True
y lasFalse
declaraciones no requieren comillas a su alrededor, la barra invertida es solo para facilitar la lectura, pero la incluirá como una línea):O como una frase:
fuente