FME中的栅格数据操作之五——示例与应用问题

时间:2024-03-30 19:22:37

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

作者:毛毛虫

下面是两个例子,一个是如何添加没有空间参考的图片到带空间参考的影像中,另一个是简单的栅格数据到3D矢量数据的转换。

在对两个例子说明之前,先简单提一下用到的几个函数:

RasterSubsetter转换器

从原始的栅格中裁剪出一个子集,这是基本的裁剪操作,使用像素范围来替代大地地面坐标。转换器如下图所示:

    FME中的栅格数据操作之五——示例与应用问题

Padding中设置了裁剪的子集部分周围要铺垫的单元格。这个转换器也比较简单,自己测试一下就知道了。

RasterCellValueReplacer转换器

用一个新值代替源栅格数据中的一个范围内的值。

RasterCellCoercer转换器

把数字的栅格要素分解成单个的多边形或点,栅格的每个单元格是输出一个矢量要素(即一个点或多边形)。

PointOnRasterValueExtractor转换器

用于一些点要素和一个参考栅格,参考单元格创建每个输入的点要素的属性并输出。

下面具体说一下这两个例子。

示例1:把不带地理参考的图片添加到影像中。

现有一幅图片1.jpg:

FME中的栅格数据操作之五——示例与应用问题

其坐标系统为TX83-CF,现在我想放大中间的解放碑部分,并插入一张没有空间参考的解放碑的图片2.jpg(如下图):

FME中的栅格数据操作之五——示例与应用问题

把这三幅图片(1.jpg、解放碑部分放大后的图片和2.jpg)拼接为一幅,达到如下效果:

FME中的栅格数据操作之五——示例与应用问题

过程如下:

首先裁剪出需要放大的解放碑部分。

使用RasterSubsetter转换器裁剪出需要放大的部分。执行完这个转换器后,会在日志中找到这样一句话:

Subsetter: Added alpha band to subset RGB raster in order to identify nodata regions. If this is not desired, explicitly set a nodata value on all bands prior to subsetting, or simply remove this band after subsetting

也就是这个转换器会生成一个α波段,可以使用RasterSelector选择该波段,在用RasterBandRemover可以删除这个波段。由于RasterBandRemover转换器只删除选中的波段,所以使用该波段之前必须要用RasterSelector转换器先选中波段。裁剪后的影像如下图:

    FME中的栅格数据操作之五——示例与应用问题

再用Scaler转换器放大后,用Offsetter进行位移,以免覆盖原图中的解放碑部分。

放大后偏移的图(为了便于对比,把原图放置在了放大后的图片下):

    FME中的栅格数据操作之五——示例与应用问题

其次对2.jpg进行偏移。

解放碑的图片是没有地理参考的,要对其进行位移才能与1.jpg重叠。利用RasterPropertiesExtractor转换器提取出1.jpg的相关坐标值,使用VariableSetter设置一个变量值,以便2.jpg能通过VariableRetriever转换器(要使用VariableRetriever,之前必须有一个对应的转换器VariableSetter)提取出这些变量值,根据相关的值进行计算、位移。

最后进行融合操作。

使用Sorter对输入影像进行排序,最后进行镶嵌操作。注意之前要通过CoordinateSystemSetter转换器把2.jpg设置为与1.jpg相同的参考系统,否则拼接的时候会提示参考系统不同不能进行镶嵌操作。

 

示例2:把一幅影像(png格式)转换为3D矢量要素(3D PDF格式)

要转换的png格式的图片如下:

    FME中的栅格数据操作之五——示例与应用问题

步骤是:

1、把栅格强制转换为点;

使用RasterCellCoercer转换器,把栅格数据转换为点,然后再用PointOnRasterValueExtractor转换器,给每个点添加属性,连续使用三次ListIndexer转换器、AttributeCopier转换器和ExpressionEvaluator分别计算每个点在R、G、B三个波段的值,在后面绘制生成的3D数据时会用到。

上面提到的三个参数设置如下:

FME中的栅格数据操作之五——示例与应用问题

FME中的栅格数据操作之五——示例与应用问题

2、用方形替换点,建立一个连续的面。

根据CoordinateExtractor转换器提取的点坐标和单元格大小,使用2DboxReplacer转换器生成一个编辑重叠的矩形生成的矢量图,如图:

    FME中的栅格数据操作之五——示例与应用问题

部分放大后的效果:

    FME中的栅格数据操作之五——示例与应用问题

3、溶解内部的边界,并平滑边界

使用Dissolver转换器溶解内部边界,转换器设置如下:

输入的效果如下:

FME中的栅格数据操作之五——示例与应用问题

放大后可以看到有边界是锯齿状的:

FME中的栅格数据操作之五——示例与应用问题

用Generalizer转换器平滑边界后的效果如下:

FME中的栅格数据操作之五——示例与应用问题

4、生成3D文件

使用Extruder转换器给图片一定的高度达到3D效果,输出之前需要用一个StringConcatenator转换器设置一下fme_color属性,根据前面计算的red、green和blue值来设置输出的3D文件的颜色。

生成3D后的效果:

    FME中的栅格数据操作之五——示例与应用问题

对于颜色定义较好的简单栅格数据,使用这种方法得到的效果较好。