移动平均线……
如果您正在使用FME 2017.0+,可以使用光栅镶嵌器计算多个波段值的平均值@jdh建议之前。一种可能的方法,以获得移动平均在73波段,每个移动范围包括24波段是:
但是,我不明白为什么@if函数出现在您的表达式示例中。我认为计算平均值不需要条件运算。如果需要一个条件操作有特定的原因,应该修改上面的过程(或者不能应用)。
亲爱的FME-Users,
我在翻译时犯了一个错误。对不起,我是德国人。(收集整理我需要的不是中位数,而是我要计算的移动平均数。
现在我再重复一遍:
我试着用变压器来计算RasterExpressionEvaluator。我认为它工作,但表达式超载,因为所有光栅有73波段。
这是我的代码的第一行:
”@if(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])”
这是我的代码的最后一行:
”@if(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])”
有什么办法可以简化表达式吗?可能只有一个表达式?
后的变压器RasterExpressionEvaluator我已经接通了变压器RasterToPolygonCoercer生成矢量数据。
非常感谢你和最好的问候!
康拉德
嗨@UBA_KP,如果您需要为每个单元计算24个频带值的“中值”,则RasterExpressionEvaluator不会提供任何帮助。因为,transformer不支持list(数组)操作,尽管有必要创建一个包含24个值的列表并对列表进行排序以计算“中值”。如。
列表:(1、3、1、3、2、1]- >排序:[1,1,1,2,3,3]- >:中位数(1 + 2)/ 2 = 1.5
点击这里了解更多关于“中位数”的信息:https://en.wikipedia.org/wiki/Median
作为@jdh和@david_r建议使用rastercellcoer强制光栅,您可以获得单独的网格点,每个点都有24个带值作为列表属性。然后可以使用ListSorter和ExpressionEvaluator来计算列表的中位数基数。最后使用3DForcer将z坐标的中值设置为每个点,并使用数字光栅化器重新创建光栅。
然而,强制的性能并不好。如果您不喜欢强制方法,Python脚本可能是更好的解决方案@david_r提及。
或者,这也是一种可能的方式。
@jdh提到的rastercellcocer可以帮助您,但是要注意,在处理大型光栅时它可能非常慢。显然,你现在可以强迫光栅到点云,这应该更快,但我没有经验。
如果您对Python不陌生,我建议您研究一下fmeobjects API的新光栅功能。@takashi写了一些很好的示例代码,可以作为一个起点:
https://knowledge.亚搏在线safe.com/questions/38000/python-fme-objects-api-for-raster-manipulation.html
谢谢你的投入@jdh和@gio。
我尝试用transformer“RasterExpressionEvaluator”来计算它。我认为它是有效的,但是表达式重载了。
下面是重复代码的第一行:
“@ if([23]([0] +[1] +[2] +[3] +[4] +[5] +[6] +[7] +[8] +[9] +[10] +[11] +[12] +[13] +[14] +[15] +[16] +[17] +[18] +[19] +[20] +[21] +[22] +[23]) / 24日[0])”
有什么办法可以简化表达式吗?可能只有一个表达式?
我在附件中添加了一些截图。
非常感谢。:)
致以最亲切的问候。康拉德
我上一次做这样的事情是在几年前,当时我强制光栅指向点,聚合col上的点,保持列表的行数,然后对列表进行排序和分析。
注意,这是针对24个1波段光栅的,如果您有一个具有24波段的光栅,您可以使用波段作为属性强制光栅,并跳过聚合步骤。
如果我现在要这么做,我将首先研究强制到点云,如果这不会导致任何结果,然后试验新的python光栅api。
请注意,如果你想要的平均值,而不是媒体,然后设置为平均重叠值RasterMosaicker将要走的路。
的ExpressionEvaluator仅具有烯B输入端。
B可有多个光栅但配对,所以B的,不把它们之间的计算。
你可以使用一个WSC来依次用更新A输入计算所有的B输入端。
或先提取重叠位,提取数据,处理该数据,并重建光栅。