我想在模型中创建一个简单的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
更新它的工作原理:)经过几次尝试,并在Joseph的帮助下,此代码现在像个魅力一样工作了,最后的技巧是用'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
3
我认为您将需要在建模器内部使用自定义脚本,以便正确使用if / else语句。
—
约瑟夫
@Joseph这也是我的想法,问题是我的脚本编写不如我想要的好,我几乎一点经验都没有……
—
Andreas
@安德烈亚斯,我确认约瑟夫在评论中写了什么。但是,我认为如果您编辑问题并提供使用Python提示的可能性(还添加适当的标签),您可能会从社区获得更多帮助...
—
mgri
@Andreas-编辑了我的帖子。同样,在他们解决了您的问题之后,您还应该接受答案;)
—
Joseph
@Joseph我用现在可以运行的代码编辑了帖子,非常需要您的帮助,非常高兴您花了一些宝贵的时间来帮助我:)到目前为止,它正在执行算法,我必须等待的结果,但它看起来确实很有希望,再次感谢您:)
—
Andreas