FME中的栅格数据操作之七——转换器RasterRGBCreator、RasterCellValueReplacer和RasterExtentsCoercer说明

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

作者:毛毛虫 

在继续上一篇RasterExpressionEvaluator之前,由于RasterExpressionEvaluator转换器矢量化栅格数据的需要,先说明几个转换器。

1、RasterRGBCreator

这个转换器比较简单,RasterRGBCreator使用指定的参数创建一个栅格要素,并输出这个要素到工作空间进行处理。

RasterRGBCreator转换器的设置如下图:


'Number of Rows' 和'Number of Columns' 参数指定了生成栅格数据的行列数。

'Band Color Model'指定了每个单元格的数据类型。

扫描二维码关注公众号,回复: 1796099 查看本文章

'X Cell Origin' 和 'Y Cell Origin'指定了每个单元格的原点。用来确定单元格的原点是中心点还是左下角的点。

'X Spacing' 和 'Y Spacing'指定了单元格间的间隔。这个参数必须大于0。

'X Upper Left cordinate' 和 'Y Upper Left Coordinate'指定了作为整个单元格原点的右上角的值。

'Min. Color Value' 和 'Max. Color Value'指定了每个单元格可获取的颜色的范围。

'Nodata Color Value'指定了这个栅格的'nodata'值。

'Min. Alpha Value' 和 'Max. Alpha Value'指定了每个单元格能够设置的值的alpha通道的值。

'Nodata Alpha Value'指定了alpha波段的'nodata'值。

'Raster Type'指定了创建的栅格类型。Single Value指栅格中的每个单元格的值被设置为栅格数据的最大值。Checkered Pattern意味着栅格中的单元格是交互单元格,在最大和最小值之间设置单元格。栅格中的每个单元格会赋予一个最大到最小值之间的随机值。Checkerboard意味着在栅格中数据的交互块被设置为栅格的最大值和最小值,使用标准的8×8棋盘模式。这些数据块的大小根据指定的行列书获取。如果行列书不是8的倍数,剩下的数据会被设置为nodata值或最小值。

分别选择不同的'Raster Type',当为Single Value时生成的栅格如图:


选择Checkered Pattern时如图:


选择Checkerboard时如图:


2、RasterCellValueReplacer

这个转换器的作用是用一个新的单一的值取代源栅格的一个范围值。转换器的参数设置如下:


参数:Replace Values >=, Replace Values <=

Replace Values >= 指定范围内的最小值,所有大于或等于这个指定值的值会被替换值替代。

Replace Values <= 指定范围内的最大值,所有小于或等于这个指定值的值会被替代值替换。如果两个参数都被指定,两个条件都要满足。如果>= value时小于 <= value的值,那么指定范围内的值都会被替代。例如,>=100或<=200被-999替代。或者,如果>= value时大于 <= value的值,那么定义了两个不同的范围或提供的范围外的任何值,例如,>= 200 和 <= 100表示用 -999替代所有>= 200和<= 100范围内的值,只保留值101-199不变。

如做替代一个值,则给参数Replace Values >=, Replace Values <=设置相同的值。>= 101和<= 99则表示用0替代除值100意外的所有值。

New Value:将会替代指定范围的新值。

Replace Nodata:表示是否nodata值被替代。如果设置为Yes,nodata值就像其他值一样会被替代。如果设置为No,那么nodata值不会被替代,即使这个值是在指定的替代范围内。

原图:


通过下列设置:


转换后:


设置如下:


转换后:


3、RasterExtentsCoercer

RasterExtentsCoercer使用矢量多边形代输入的栅格。

转换器设置如下:


可以看到,这个转换器有三种Extents Type:Raster Extents、Data MBR Extents和Data Extents。

通过三个不同设置所得的图来说明RasterExtentsCoercers的三种模式的不同。

转换前的源数据:


Raster Extents: 这个多边形包含了栅格要素的整个扩展范围,如果栅格发生了旋转,则这个旋转角度应用于该多边形。使用该设置转换后的结果:


Data MBR Extents 模式,这个模式生成一个平行于坐标轴的最小约束举行,使用该设置转换后的结果:


Data Extents模式,输出的几何是只覆盖有数据栅格的一个多边形或多边形的聚合,使用该设置后的结果:


放大这个Data Extents设置的图,会发现边界是锯齿状的。


这个转换器把所有有数据的栅格单元和由栅格旋转而产生的nodata单元格隔离开。

下面是使用该设置,应用nodata值分离数据的例子。

示例:这个例子是动态的更改DEM图nodata值,生成矢量表示的影像的不同的值(和区域)。源DEM数据如下图:


利用转换器RasterBandMinMaxExtractor提取出栅格数据的最大最小单元格值后,再用转换器RasterExpressionEvaluator,设置波段表达式floor(A[0]/20 +1)*20(把高程值设置为20的倍数)。设置如下:


结果为:


用AttributeCreator创建一个nodata属性(在后面使用),赋初值为0。使用再使用RasterCellValueReplacer转换器设置,去除-32767值。设置如下:


转换得到的图示为:


做一个循环更改nodata值从0到最值的转换的自定义转换器,每次循环的间隔为20m,得到一系列根据nodata值生成的矢量轮廓。该自定义转换器设置如下:


使用Tester和ExpressionEvaluator组成一个循环。


参数的设置如下:



 通过这个自定义转换器转换后得到的数据如下图:


使用Deaggregator、Dissolver和DonutBuilder三个转换器来清除内部的小多边形。


其中注意下转换器Dissolver的设置,根据nodata来分组:


最后可以利用转换器ExpressionEvaluator根据nodata值计算(生成例如@Value(_nodata)/320.0,320 <mailto:例如@Value(_nodata)/320.0,320>是高程的最大值),根据计算的结果使用PenColorSetter、AttributeCopier等转换器对不同的高程值得到的矢量多边形赋予不同的颜色(设置fme_fill_color属性值),结果如下:











猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80851502
今日推荐