“从24个输入光栅波段计算重叠像素值的中值”的注释和答案 https://knowledge.亚搏在线safe.com/questions/41829/calculate-the-median-of-overlapping-pixel-values-f.html 关于“从24个输入光栅波段计算重叠像素值的中值”的最新评论和答案 uba_kp对uba_kp的评论 https://knowledge.亚搏在线safe.com/comments/59793/view.html 非常感谢 @takashi。现在它工作!我看到你已经给我的问题写了一个答案: 如何计算的NetCDF-文件所需的时间?。对此我感到很抱歉。

最好的问候!

康拉德
格林威治时间2017年12月12日星期二14:22:12 uba_kp
高桥对高桥的评论 https://knowledge.亚搏在线safe.com/comments/59366/view.html 一种可能的方法是:
  1. 将栅格subsetter的数据流输出分成两个流。将一个流连接到当前工作流,即亚搏在线RasterBandCombiner。
  2. 在第二个流上,放置一个计数器来添加以-23开头的序列号。
  3. 向工作空间添加一个特性映射程序。将特性输出从RasterBandSeparator发送到Requestor端口,将特性输出从第二个流的计数器发送到Supprier端口,然后将供应商合并到Requestor上:“_band_index”(基于0的序列号)和供应商:“_count”(序列号从-23开始)。
格林尼治时间2017年12月6日星期三14:13:53
uba_kp对uba_kp的评论 https://knowledge.亚搏在线safe.com/comments/59365/view.html 非常感谢 @takashi!抱歉我回复晚了,我在度假,之后我做了其他事情。

我已经添加并连接了变形器“RasterBandCombiner”、“RasterExpressionEvaluator”和“RasterBandSeparator”,因为我想计算移动平均。通常我有73个输入光栅,为了计算移动平均,需要使用96个输入光栅。我已经为“RasterExpressionEvaluator”添加了73个表达式,虽然很多,但是很有用。当我使用“RasterBandCombiner”时,我丢失了重要的属性值。我知道可以将属性写入一个列表,但我不知道如何再次分配它们。我也不知道如何从96个值中提取最后的73个属性值。背景是我需要73个输入数据的所有名称作为字符串。它可以很好地工作,没有变压器的移动平均线。为了更好的理解,我在附件中添加了一个截图。

有谁能帮助我吗?

谢谢你和最好的问候!

康拉德
格林尼治时间2017年12月6日星期三13:40:24 uba_kp
高桥评论了高桥的回答 https://knowledge.亚搏在线safe.com/comments/50728/view.html 如果源数据集包含多个单频带栅格(而不是一个包含多个频带的栅格),那么我上面建议的工作流应该像这样修改(FME 2016.1)。亚搏在线



格林尼治时间2017年8月16日星期三09:47:57
uba_kp对uba_kp的评论 https://knowledge.亚搏在线safe.com/comments/50508/view.html 一开始我用了24种光栅。现在有97个乐队。

你是对的,每个波段包含其他24个波段的移动平均值。这意味着我必须将一个包含97个波段的光栅转换为包含73个波段的光栅。

非常感谢 @takashi
格林尼治时间2017年8月14日星期一10:35:56 uba_kp
uba_kp对uba_kp的评论 https://knowledge.亚搏在线safe.com/comments/50507/view.html 是的,我尝试过类似的解决方案。这很有用,再次感谢大家 @takashi!
GMT时间10:26:14 uba_kp
高桥评论了高桥的回答 https://knowledge.亚搏在线safe.com/comments/50488/view.html 我发现上述过程中的RasterMosaicker(步骤4)可以替换为RasterCombiner + RasterExpressionEvaluator。
RasterCombiner
  • 组:_copynum
  • 输入顺序:按组
RasterExpressionEvaluator(将每个包含24个波段的光栅转换成存储24个波段平均值的单个波段光栅)
  • 表达式:[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
格林尼治时间14:10:31
高桥评论了高桥的回答 https://knowledge.亚搏在线safe.com/comments/50473/view.html 我在上面亚搏在线建议的工作流将包含73个波段的栅格转换为包含50个波段的栅格,每个波段包含原24个波段的移动平均值。即。
0波段包含原来的0到23波段的平均值,
波段1包含了原来1到24波段的平均值,
波段2包含原来2到25波段的平均值,

而49波段包含了原来49到72波段的平均值。
理论上这是你想要的结果吗?

格林尼治时间2017年8月12日星期六12:11:16
高桥评论了高桥的回答 https://knowledge.亚搏在线safe.com/comments/50472/view.html 修正。
  • RasterMosaicker:设置输入有序参数。
  • 未按参数设置组

格林尼治时间2017年8月12日星期六11:11:40
uba_kp评论uba_kp的答案 https://knowledge.亚搏在线safe.com/comments/50471/view.html 非常感谢 @takashi!但我没有 FME 2017.0+,我们的版本是 FME 2016.1。我可以用哪个变压器来代替 RasterMosaicker吗?
格林威治时间11:04:25分 uba_kp
答案由隆 https://knowledge.亚搏在线safe.com/answers/50470/view.html

均线...

如果您正在使用FME 2017.0+,该RasterMosaicker可以用来计算多带值的平均值,作为@jdh之前建议。一种可能的方式来获得在73个频带移动平均由24个频带的是各移动范围:

  1. 克隆程序(拷贝数:50,拷贝数属性:_copynum):创建源光栅的50个拷贝(= 73 - 24 + 1)。50是移动范围的数量。
  2. 栅格带分隔符(带索引属性:_band_index):将复制的栅格分解为单个带栅格。[50 x 73 = 3,650个单波段栅格]
  3. 测试人员(_copy_num <= _band_index和_band_index < _copy_num + 24):为每个移动范围(24个波段)选择光栅。[50 x 24 = 1,200个单波段栅格]
  4. RasterMosaicker (Group By: _copynum, Input Ordered: By Group,重叠值:Average):每个移动范围(24个波段)的Mosaick栅格。在这里,如果将平均值设置为重叠值参数,则24个波段的平均值将产生单元格值。[50个单波段光栅]
  5. RasterBandCombiner(集团: ):将栅格合并成一个有50个频带的栅格,其中包含移动平均值。[一个由50个波段组成的栅格]

不过,我不明白为什么@if函数出现在表达式中的例子。我不认为有条件的操作是需要计算平均值。如果没有为用于所需要的条件的操作中一个具体的理由,上面的过程应该被修改(或者无法应用)。

格林威治时间2017年8月12日星期六10:58:43
答案由uba_kp https://knowledge.亚搏在线safe.com/answers/50469/view.html

亲爱的FME用户,

我在翻译过程中做了一个错误。对不起,我是德国人。:)))我需要的是不平均,但运行/移动平均线是希望我来计算。

现在我再次重复一遍:
我试着用变压器来计算的话RasterExpressionEvaluator。我认为它的工作原理,但表情都超载,因为所有的光栅有73条带。

下面是从我的第一行代码:
@ 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])
下面是从我的代码的最后一行:
@ if([73],[50] +[51] +[52] +[53] +[54] +[55] +[56] +[57] +[58] +[59] +[60] +[61] +[62] +[63] +[64] +[65] +[66] +[67] +[68] +[69] +[70] +[71] +[72] +[73]) / 24日[50])

是否有任何想法如何简化表述?这是可能的只有一个表情?

变压器后RasterExpressionEvaluator我已经连接在变压器RasterToPolygonCoercer以生成矢量数据。

非常感谢你和最诚挚的问候!

康拉德

格林威治时间2017年8月12日星期六09:12:33 uba_kp
uba_kp对uba_kp的评论 https://knowledge.亚搏在线safe.com/comments/50468/view.html 非常感谢 @takashi。我的问题答错了。我很快就会写出来。
星期六,2017年8月12日8点56分52秒GMT uba_kp
高桥评论了高桥的回答 https://knowledge.亚搏在线safe.com/comments/50457/view.html 由于光栅具有24条带,所述RasterCellCoercer(提取频带值:属性)将被称为“_band {}的值。”到每个产生的点的列表属性,并且该列表包含24个元素存储所述源小区的频带值。你可以只对列表进行排序,然后计算中位数。这说明截图的步骤。


周五,2017年8月11日21时42分五十三秒GMT
uba_kp评论uba_kp的答案 https://knowledge.亚搏在线safe.com/comments/50403/view.html 感谢您非常 @takashi。也许你可以给我的第一个建议(表)的例子。我客串,我会需要以下变压器: ListBuilderListSorterStatisticsCalculator。我忘了告诉你,我用的变压器 RasterToPolygonCoercer之前。
周五,2017年8月11日16时37分04秒GMT uba_kp
答案由隆 https://knowledge.亚搏在线safe.com/answers/42125/view.html

你好@UBA_KP如果你需要计算的每个小区24个带值“中位数”,该RasterExpressionEvaluator不会帮你。因为,变压器不支持列表(阵列)操作,虽然这是必要的,以便计算“中位数”来创建一个包含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建议,你可以得到单个网格点他们每个人都有24个波段值与强迫与RasterCellCoercer光栅列表属性。然后,您可以使用ListSorter和的ExpressionEvaluator计算列表上的中位数基地。最后,设置中间值z坐标与3DForcer每个点并重新创建一个NumericRasterizer光栅。

然而,胁迫的表现并不好。如果你不喜欢,胁迫的方法,Python脚本可能是一个更好的解决方案,如@david_r提及。

另外,这也可能是一个可行的办法。

  1. 光栅带分离器:将源光栅分成24个栅格,每个栅格有一个带。
  2. PointCloudCombiner:从24个栅格创建一个点云。点云将为每个网格单元提供24个点。
  3. PointCloudStatsRasterizer(来自Hub):这个转换器根据每个覆盖输入点云的网格单元的多个点计算一个统计值。将“中位数”设置为统计计算模式参数,将源光栅的X/Y单元间距设置为X/Y单元间距参数。可以使用RasterPropertyExtractor提取源光栅的X/Y单元间距。
星期三,2017年3月29日13时37分52秒GMT
通过david_r上david_r的回答评论 https://knowledge.亚搏在线safe.com/comments/42047/view.html 我不知道是否有可能简化它更多。该RasterExpressionEvaluator有点守旧,在它的工作方式有些古怪,但如果它适合你的用例是相当快的。 星期二,2017年3月28日12点49分29秒GMT david_r 通过david_r回答 https://knowledge.亚搏在线safe.com/answers/42046/view.html

通过@jdh可以帮你一起提到的RasterCellCoercer,要知道,大栅格处理时,它可能会很慢。显然,你现在可以强制光栅的点云,这应该是快了很多,但我有与没有经验。

如果你不陌生的Python,我建议你寻找到了fmeobjects API的新栅格功能。@takashi写到这里一些非常不错的示例代码,这可能是一个起点:

https://knowledge.亚搏在线safe.com/questions/38000/python-fme-objects-api-for-raster-manipulation.html

星期二,2017年3月28日12时48分06秒GMT david_r
答案由uba_kp https://knowledge.亚搏在线safe.com/answers/42034/view.html

感谢您对您所有的投入@jdh@gio

我试着用变压器“RasterExpressionEvaluator”来计算。我认为它的工作原理,但表达过载。

以下是重复出现的代码的第一行:
“@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])”

是否有任何想法如何简化表述?这是可能的只有一个表情?

我已经添加在附件中一些截图。

非常感谢你。:)

最好的祝福。康拉德

星期二,2017年3月28日8点55分57秒GMT uba_kp
通过JDH回答 https://knowledge.亚搏在线safe.com/answers/41835/view.html

我上一次做这样的事情是在几年前,当时我强制光栅指向点,聚合col上的点,保持列表的行数,然后对列表进行排序和分析。

注意,这是针对24个1波段光栅的,如果您有一个具有24波段的光栅,您可以使用波段作为属性强制光栅,并跳过聚合步骤。


如果我现在要这么做,我将首先研究强制到点云,如果这不会导致任何结果,然后试验新的python光栅api。

请注意,如果您需要的是平均值而不是中间值,那么将重叠值设置为平均值的光栅镶嵌器将是最佳选择。

周五,2017年3月24日16时12分34秒GMT JDH
由吉奥回答 https://knowledge.亚搏在线safe.com/answers/41834/view.html

expressionevaluator只有一个en B输入。

B可以有多个栅格,但是它们是成对的,所以B不会在它们之间计算。

您可以使用wsc来顺序计算所有B输入,同时更新一个输入。

或者先提取重叠的位元,提取数据,处理数据,重建栅格。

周五,2017年3月24日15时58分43秒GMT GIO