FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

时间:2024-03-17 07:49:11

原文发布时间:2010-04-20

作者:毛毛虫

这两天学习了转换器RasterExpressionEvaluator,发现这个转换器非常有用,在此跟大家分享下。

该转换器的属性如下:

    FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

    FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

计算栅格上每个单元格的表达式,如代数操作和条件计算。

输入端口说明:

要素通过A和B端口输入。输入的基数要求满足下列条件:

A端口有一个或更多的输入,B端口没有输入;

A端口有一个输入,B端口有一个或多个输入。

当A和B端口都有要素输入时,A端口的单个要素都有B端口的每个要素成对匹配。注意对输入要素,下面的约束:

输入要素必须是栅格;

所有成对的栅格必须有相同的行列数;

用于相同表达式的所有波段必须有相同的nodata值,或者所有波段没有nodata值;

波段都不包含调色板。

输出端口说明:

结果:对于每一对输入要素有一个输出的栅格要素。输出的栅格将有n个波段,这里n是说明/表达的对数,通过Interpretation List 和 Expression List两个参数指定。

参数Band Interpretation List:

这个参数接受一个对每个输出波段用分号间隔的说明列表,有效的说明是INT8, INT16, INT32, INT64, UINT8, UINT16, UINT32, UINT64, REAL32, REAL64, GRAY8, GRAY16, RED8, RED16, GREEN8, GREEN16, BLUE8, BLUE16, ALPHA8, ALPHA16.

如果该参数没有指定,输出的说明类型可能是用于执行操作的任何数据类型,所有波段自动决定说明类型。

参数Band Expression List:

这个参数接受分号间隔的表达式列表,这个表达式表示了如何计算每个输出波段。例如表达式:"(A[0] + B[0])/2"计算A的第一个波段和B的第一个波段的平均值。注意这个单数是区分大小写的。

 

在下面例子中将会看到各个参数及相关语法的具体用法。下面是这个转换器使用的一些具体示例。

用法一:反色影像

波段计算的表达式设置为:255-A[0];255-A[1];255-A[2]

原图:

       FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

RasterExpressionEvaluator设置如下,

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

没有设置波段的说明,自动确定,转换后的图:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

RasterExpressionEvaluator设置如下,

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

把输出影像类型设置为RGB24,转换后的图:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

用法二:

亮度调整:

RasterExpressionEvaluator设置如下,

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

每个波段×1.5,转换后的图:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

注意要慎用这种方法——如果在图中的亮点达到或超过最大值(这个例子中是255),那么会使得影像变为纯白色(在RGB24的例子中是255,255,255),这个区域的信息会丢失。

 

用法三:匀色

如果一幅影像的一种颜色比其他颜色突出,我们可以只调整一个波段(或者对不同的波段应用不同的系数)。

RasterExpressionEvaluator设置如下,

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

只降低了绿色波段的亮度,调整后的图:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

用法四:彩色到灰色的转换

建议多数网络数据源对于彩色到灰色的转换遵从下列公式(许多源栅格也要依靠影像本身而设置不同)

0.2989*A[0] + 0.5870*A[1] + 0.1140*A[2]

设置和转换后的效果如图:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

也可以设置如下:

0.3333*A[0] + 0.3333*A[1] + 0.3333*A[2]

不过第一种能给出更好的效果。

 

用法五:单位转换

在所有单位之间转换对RasterExpressionEvaluator是非常自然的操作。在这个例子中用一个单位为米的数字化DEM数据,转换单位到英尺DEM(波段类型是INT32)。

转换器的属性如下:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

  转换设置和转换后的效果如下:

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

FME中的栅格数据操作之六——转换器RasterExpressionEvaluator的用法(一)

待续…………