FME中的栅格数据操作之四——示例与应用问题
原文发布时间:2010-04-16
作者:毛毛虫
7、修改栅格数据类型和说明问题:
这里所说的数据类型涉及到数据类型,如整数型或浮点型和位深度,如8bit或16bit;数据说明包括含有几个波段,每个波段的数据类型等,使用RasterInterpretationCoercer转换器来实现这些操作。
在Viewer中浏览到影像:
该影像的信息如下:
要想使该影像中Viewer中显示为彩色,需要修改该影像的说明为RGB48,使用转换器RasterInterpretationCoercer,处理后的影像如下图(影像本身的效果不好):
影像的信息说明为:
可以看出,波段由INT16转换为RED16、GREEN16和BLUE16了。
RasterInterpretationCoercer转换器的参数如下:
Destination Interpretation Type选项选中数据说明的类型,如Gray8、 RGB24、UInt32或Real64等。
下面的几个选项:Convert from Color to Color、Convert from Numeric to Color、Convert Color to Numeric和Convert Numeric to Numeric,在不同的类型间的转换发生时,这些选项的参数选择执行的动作,说明如下:
Cast:如果数据的值在目标数据范围内时,这个操作是有效的和信息无损的,如果超出范围,这个Cast选项允许溢出在目标数据范围的最大和最小值之间滚动。
Bounded cast:通过验证源值适应到目标类型来改进基本的Cast选项,有效的阻止上溢或下溢;如果源值不适合,相应的目标值也被设置在可能的目标数据的最大最小范围内。
Scale by data values:找出源数据的最大最小值范围,利用这个范围来缩放数据填满目标数据范围。
The Scale by data type :直接缩放源数据范围到目标数据范围,不考虑该处存在的数据的值。
我在用FME对DEM数据处理后,发现在3D视图上两个相邻的图幅接边处高程不同,没有连在一起。经过查找发现是在数据读入时修改了数据类型,使用RasterInterpretationCoercer转换器把数据转换到正确的数据类型就可以了。
另外,RasterInterpretationCoercer、RasterPaletteInterpretationCoercer转换器分别对波段和调色板执行类似的操作。
8、转换器属性获取
前面简单提到了RasterPropertiesExtractor转换器,这是个简单但非常有用的转换器,可以读取输入栅格数据的大部分信息,所以这里具体说明下。
这个转换器可以提取到的属性如下:
_num_bands:栅格数据的波段数目
_num_rows:栅格数据的行数
_num_columns:栅格数据的列数
_spacing_x :栅格数据的x方向的空间间隔
_spacing_y:栅格数据的y方向的空间间隔
_origin_x:原点的x坐标
_origin_y:原点的y坐标
_rotation:旋转角度
_min_x:x坐标的最小值
_min_y:y坐标的最小值
_max_x:x坐标的最大值
_max_y:y坐标的最大值
_cell_origin_x:原点单元格的x坐标
_cell_origin_y:原点单元格的y坐标
_upper_left_x:左上角的x坐标
_upper_left_y:左上角的y坐标
_upper_right_x:右上角的x坐标
_upper_right_y:右上角的y坐标
_lower_right_x:右下角的x坐标
_lower_right_y:右下角的y坐标
_lower_left_x:左下角的x坐标
_lower_left_y:左下角的y坐标
需要注意一点:栅格数据集的原点是左上角的点,但是栅格的范围总是用左下角的单元格的左下角的X和Y和右上角单元格的右上角的X和Y来描述。在FME中的栅格单元格的原点是单元格的质点;如(0.0, 0.0)是单元格的左下角,(1.0, 1.0)是右上角,这样计算出来的中心点就是在单元格的(0.5, 0.5)处。
这个转换器不提取栅格数据的波段和调色板的属性,如果想提取波段或调色板的属性,使用函数RasterBandPropertiesExtractor。