一些转换器的用法和注意事项(一)

原文发布时间:2010-05-06

作者:毛毛虫

对于这个题目,主要是在使用FME转换器时,针对一些用户提出的问题和我自己遇到的问题及相关解决方法,平时没有注意到的但是有用的转换器的一些说明和使用技巧。在后面我会不断补充,如有问题或者有相关的建议,欢迎大家给我留言。

1、使用Clipper转换器时,保留Clipper的属性

在用shape等矢量文件裁剪栅格数据时,有时候我们想把用来裁剪的shape文件的某个属性赋给裁剪后生成的栅格数据,实现这个要求很简单,只要把Merge Attributes参数设置为Yes即可(如图)。



2、图形放大问题

我在处理缓冲区问题时,无论如何设置,矩形生成的缓冲区域都不是直角。如图:


但是有时候我想要一个矩形,这时候可以试一下下面这两种方法:

1)转换器Bufferer和BoundingBoxReplacer结合使用

2)使用转换器Scaler,如果保持图形的中心点位置不变,设置Scale origin参数为Center Point。

3、提取波段的最大最小值转换器RasterBandMinMaxExtractor

这个转换器可以提取栅格数据中波段的最大最小值,调色板的最大最小键,调色板的最大最小值,并作为属性暴露出来。暴露的属性如下:

_band{}.min

_band{}.max

_band{}.palette{}.keyMin

_band{}.palette{}.keyMax

_band{}.palette{}.valueMin

_band{}.palette{}.valueMax

这个转换器可用于查看数据或进行计算操作。注意:这个转换器不考虑nodata值。

4、重设几何类型的转换器GeometryCoercer

这个转换器可以对要素的几何类型进行重新设置。比如,可以把一个fme_polygon(面积为25)类型的几何要素设置为fme_line(面积为0)。

5、抽样转换器Sampler

保留全部的要素或一个抽取的要素,根据抽样类型选择。剩下的输入要素被丢弃。

这个转换器典型的用于测试来减少数据量。

Sampling Amount是要保持的要素的编号,如果设置为1,则抽取所有要素,选0,丢弃所有要素。

Sampling Type是保留要素的编号还是要素的数目,比如Sampling Amount设置为10,选择Every Nth Feature表示所有的第十个要素被保留,如果选择First N Features表示只保留前十个要素。

6、字符型数据到数字型数据的转换

有的用户在处理数据时,遇到这样的问题,我有一个string类型的属性,我想把它写入integer类型的属性中,但是string类型的数据,比如有一个值为001,我想转换为整数1。

可以完成这个转换的转换器是StringFormatter。它可以格式化属性为strings, characters 或 numbers(包括十进制的floating point或integer、 八进制数、十六进制等),其语法为:

  [flags][width][precision]<type>


Flag Characters:

0   这个值表示把空格用0来填充。

-    这个值表示替代默认的右边填充,在左边填充。

+   数字化的值是有符号的。

Field Width:

这个可选域给出一个十进制数。如果这个值小于域的宽度,用空格填充。

Field Precision:

指定十进制数的小数位数。

Attribute Type:

必须要指定下面的一个类型。

d   整数

e   十进制数(科学技术法: -d.ddde+dd)

f    十进制数(浮点类型: -ddd.ddd)

o   八进制数

x    十六进制数

s   字符串

例:给出一个值12345,String Format设置与结果如下:

String Format设置

结果

08s

00012345

-8s

12345  

e

1.234500e+004

.5f

12345.00000

4.4f

12345.0000

x

3039

0

30071

7、读取list列表中的值

有的用户问过我怎么读取list的值的问题,可以使用转换器ListIndexer。


另外在如果Tester转换器中用到list中的值做判断条件,可以把该值直接输入,如下:


在Left Value中list是无法选择的,这时候我们可以直接输入该list中的属性值。

8、自动生成ID转换器

我们在把要素写入数据库时,有时设置一个主键ID,我们可以用转换器UUIDGenerator来生成,它产生一个36bit的UUID(通用唯一标识符),表达为8个十六位数,之后用连字符连接的3组4个六位数,连字符加12个十六进制数,如:7672aac8-fa0b-464c-b0b8-3efa9ae9cd86。

转换器GOIDGenerator对每个输入要素产生一个GOID(地理对象标识符),它是一个唯一的结合要素位置等其它数字的128bit数字,组成为:32个16位进制的ASCII字串,前16位对应位置,接着的10位定义时间,下面的4位到序列号。

9、根据坐标点生成线

使用2DpointAdder转换器把坐标转换为点,然后使用PointConnector转换器可以把点,连接成线或面。如果连接成面,注意点的第一个坐标和最后一个坐标要一致。

10、坐标小数位截取

CoordinateRounder转换器,如果不需要太高的精度,可以使用该转换器进行四舍五入截取坐标后的小数到设置的精度。








猜你喜欢

转载自blog.csdn.net/fmechina/article/details/80925124