西班牙
斯潘4
您好!
我有一个工作流程,亚搏在线我们调用一个自定义算术函数(doubleAsraw64)来基于旧值生成一个新的属性值-这发生在20多个不同属性的工作区中。
我们目前通过使用attributemanager和:
1)检查属性值是否有值
2)如果它有一个值,那么我们做@evaluate(@doubleasraw64(@value(nameofattribute)))
我想把它封装在一个定制的转换器中,我只需要检查列表中的属性,然后转换器将对这些属性应用doubleasraw64函数。这将创造一个更清洁的工作场所,并将打字错误等风险降到最低。
我试图创建一个超级简单的自定义转换器,其中一个属性列表作为已发布的参数属性。
以及一个expressionevaluator设置,用于覆盖$(attributes_to_raw64)中的属性
算术表达式是@evaluate(@doubleasraw64(@currenttribute())
如果我在attributes_to_raw64中选择了一个属性,则此操作有效,但一旦选择了更多属性,转换器就会失败。
所以我的问题是:
1)我如何实现这一点,以便它可以在每个特性选择要评估的多个属性时工作?
2)如何最好地执行快速空检查?
3)我如何高效地做到这一点(因为会有数百万个特性通过这个)。
我很感激你的指点!:)
谢谢您!
自定义转换器:双工64-2.fmx
您好!@麦芽酒商,您似乎无法通过已发布的参数将多个属性名称传递给自定义转换器中expressionevaluator的“attributes to overwrite”参数。这可能是当前fme的一个限制,看来我们不得不等待一个相关的增强不幸。请联系安全支持。亚搏在线
def processfeature(feature):用于feature.getattribute(''u attrlist')中的attr。split('','):isnull,ismissing,'=feature.getattributenullmissingandtype(attr),如果isnull:elif isMissing: else: try: oldValue = float(features . getattribute (attr)) newValue = 特性。setAttribute(attr, newValue) # overwrite except:
如果需要使用@DoubleAsraw64函数来获取新值,也许可以使用“fmefeature.performFunction”方法来调用该函数,但我不确定它是否工作正常,因为我不知道它的规范。
注意,当指定的属性名包含逗号时,此方法将失败。如果属性名可以包含逗号,那么使用Python脚本可能很难解决这个问题。在这种情况下,“属性列表(空格分隔)”类型参数和Tcl脚本可能是另一种选择。
?2019安全亚搏在线软件公司|法律