斯潘8
斯潘4
移动平均值…
如果您使用的是FME 2017.0+,rastermosaicker可用于计算多个波段值的平均值,作为JDH以前建议过。对于由24个波段组成的每个移动范围,获得73个波段移动平均值的一种可能方法是:
然而,我无法理解为什么@if函数出现在表达式示例中。我认为计算平均值不需要条件运算。如果需要条件操作的具体原因,应修改上述步骤(或无法应用)。
亲爱的FME用户,
翻译时我犯了一个错误。对不起的,我是德国人。:))我需要的不是中间值,而是我想要计算的运行/移动平均值。
现在我再重复一遍:
我试着用变压器来计算它RastereExpressionEvaluator公司.我认为这是可行的,但是表达式被重载,因为所有光栅都有73个波段。
这是我的代码的第一行:
“@如果(A[23],(A[0]+A[1]+A[2]+A[3]+A[4]+A[5]+A[6]+A[7]+A[8]+A[9]+A[10]+A[11]+A[12]+A[13]+A[14]+A[15]+A[16]+A[17]+A[18]+A[19]+A[20]+A[21]+A[22]+A[23])/24,A[0])“
这是我代码的最后一行:
“@如果(A[73],(A[50]+A[51]+A[52]+A[53]+A[54]+A[55]+A[56]+A[57]+A[58]+A[59]+A[60]+A[61]+A[62]+A[63]+A[64]+A[65]+A[66]+A[67]+A[68]+A[69]+A[70]+A[71]+A[72]+A[73])/24,A[50])“
对于如何简化表达式有什么想法吗?可能只有一个表达?
变压器后RastereExpressionEvaluator公司我把变压器接上了Rastertopolygon胁迫者生成矢量数据。
非常感谢,谨致问候!
康拉德
您好!UBAYKP,如果需要计算每个单元的24个波段值的“中间值”,RasteExpressionEvaluator不会帮你的。因为,变压器不支持列表(数组)操作,尽管有必要创建一个包含24个值的列表,并对列表进行排序以计算“中位数”。例如
清单:(1)三,1,三,2,1]->排序:[1,1,1,2,三,3]->中位数:(1+2)/2=1.5
请参阅此处了解更多关于“中间带”的信息:网址:https://en.wikipedia.org/wiki/median
ASJDH和@戴维德建议,您可以通过使用RasterCell胁迫器强制光栅,获得单独的网格点,每个网格点都有24个带值作为列表属性。然后,可以使用listsorter和expressionEvaluator计算列表上的中位数。最后,使用3dforcer将每个点的中间值设置为z坐标,并使用Numericroster重新创建光栅。
然而,胁迫的表现不好。如果你不喜欢这种强迫手段,python脚本可能是更好的解决方案,作为@戴维德提到。
或者,这也是一种可能的方法。
@jdh提到的RasterCell胁迫者可以帮助你,只需注意,在处理大纹时,速度可能非常慢。显然你现在可以将光栅强制到点云,应该快很多,但我没有这方面的经验。
如果你对巨蟒并不陌生,我建议您研究fmeobjects API的新光栅功能。@高桥在这里写了一些非常好的示例代码,这可能是一个起点:
https://knowledge.亚搏在线safe.com/questions/38000/python-fme-objects-api-for-graster-manipulation.html
感谢您的所有投入JDH和@乔.
我试着用变压器“RasteExpressionEvaluator”计算它。我认为这是可行的,但是表达式被重载了。
下面是重复代码的第一行:
“@如果(a[23],(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10]+a[11]+a[12]+a[13]+a[14]+a[15]+a[16]+a[17]+a[18]+a[19]+a[20]+a[21]+a[22]+a[23])/24,a[0])”
对于如何简化表达式有什么想法吗?可能只有一个表达?
我在附件中添加了一些截图。
非常感谢你。:)
最好的问候。康拉德
?2019安全亚搏在线软件公司|合法的