原文发布时间:2010-04-16
作者:毛毛虫
下面是两个例子,一个是如何添加没有空间参考的图片到带空间参考的影像中,另一个是简单的栅格数据到3D矢量数据的转换。
在对两个例子说明之前,先简单提一下用到的几个函数:
RasterSubsetter转换器
从原始的栅格中裁剪出一个子集,这是基本的裁剪操作,使用像素范围来替代大地地面坐标。转换器如下图所示:
Padding中设置了裁剪的子集部分周围要铺垫的单元格。这个转换器也比较简单,自己测试一下就知道了。
RasterCellValueReplacer转换器
用一个新值代替源栅格数据中的一个范围内的值。
RasterCellCoercer转换器
把数字的栅格要素分解成单个的多边形或点,栅格的每个单元格是输出一个矢量要素(即一个点或多边形)。
PointOnRasterValueExtractor转换器
用于一些点要素和一个参考栅格,参考单元格创建每个输入的点要素的属性并输出。
下面具体说一下这两个例子。
示例1:把不带地理参考的图片添加到影像中。
现有一幅图片1.jpg:
其坐标系统为TX83-CF,现在我想放大中间的解放碑部分,并插入一张没有空间参考的解放碑的图片2.jpg(如下图):
把这三幅图片(1.jpg、解放碑部分放大后的图片和2.jpg)拼接为一幅,达到如下效果:
过程如下:
首先裁剪出需要放大的解放碑部分。
使用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转换器先选中波段。裁剪后的影像如下图:
再用Scaler转换器放大后,用Offsetter进行位移,以免覆盖原图中的解放碑部分。
放大后偏移的图(为了便于对比,把原图放置在了放大后的图片下):
其次对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格式的图片如下:
步骤是:
1、把栅格强制转换为点;
使用RasterCellCoercer转换器,把栅格数据转换为点,然后再用PointOnRasterValueExtractor转换器,给每个点添加属性,连续使用三次ListIndexer转换器、AttributeCopier转换器和ExpressionEvaluator分别计算每个点在R、G、B三个波段的值,在后面绘制生成的3D数据时会用到。
上面提到的三个参数设置如下:
2、用方形替换点,建立一个连续的面。
根据CoordinateExtractor转换器提取的点坐标和单元格大小,使用2DboxReplacer转换器生成一个编辑重叠的矩形生成的矢量图,如图:
部分放大后的效果:
3、溶解内部的边界,并平滑边界
使用Dissolver转换器溶解内部边界,转换器设置如下:
输入的效果如下:
放大后可以看到有边界是锯齿状的:
用Generalizer转换器平滑边界后的效果如下:
4、生成3D文件
使用Extruder转换器给图片一定的高度达到3D效果,输出之前需要用一个StringConcatenator转换器设置一下fme_color属性,根据前面计算的red、green和blue值来设置输出的3D文件的颜色。
生成3D后的效果:
对于颜色定义较好的简单栅格数据,使用这种方法得到的效果较好。