FME中的栅格数据操作之十四——使用FME自动生成Google Chart及随机彩色化图表(二)
原文发布时间:2010-06-17
作者:毛毛虫
在上一篇中大体对WebCharter函数的使用做了下介绍,这一部分是一些注意事项及部分解决方法。
使用WebCharter函数时有一个问题,就是不能像在Excel中那样,对每一条生成它们自己的颜色。Google Chart API允许对每条设置各自的颜色,但是FME没有通过这个函数的端口公开这一部分(Google Chart API允许对每条设置各自的颜色)。
我们可以使用FME技术用另一种方法来对每条设置不同的颜色,即使用RasterExtentsCoercer和Deaggregator函数把图表中的每一条分布转换为多边形,使用函数RandomColorSetter对每一个多边形随机赋予不同的颜色。
(图片已丢失)
注意函数RasterExtentsCoercer中Extents Type的三个选项中需要选择Data Extents(这个函数在前面文章中有详细说明,在此不再重复)。
具体过程如下:
从ImageFetcher函数的输出端口输出的数据如下:
(图片已丢失)
为了能提取出每个条,需要把这些条从栅格数据中区分出来,通过观察发现,除了条的颜色,标题(图中为region)和横竖坐标轴及坐标轴上的标注中各个像素的R、G、B值相同,背景颜色是白色,即RGB为(255,255,255)。
可以使用函数RasterExpressionEvaluator,表达式设置如下:
if(A[0]==A[1]&&A[0]==A[2],0,100);if(A[0]==A[1]&&A[0]==A[2],0,100);if(A[0]==A[1]&&A[0]==A[2],0,100)。
这样除了每条的颜色为(100,100,100)外,其余的颜色为(0,0,0)。
然后使用RasterBandNodataSetter设置0为Nodata值,即可以得到下面的效果:
然后使用上面提到的两个函数:RasterExtentsCoercer和Deaggregator,把每一条转换为一个多边形:
(图片已丢失)
使用RandomColorSetter函数对每个多边形随机赋予不同的颜色:
然后使用VectorOnRasterOverlayer函数把这个矢量图层和前面从ImageFetcher中输出的栅格数据进行叠加:
(图片已丢失)
还需要注意的问题是该函数不支持中文,也就是对标题或标注赋值为中文时,显示不出来。
如我把WebCharter的设置修改如下:
(图片已丢失)
也就是Chart Title和Data Label都修改为了中文(xzq{}.XZQHMC值如下图)。
(图片已丢失)
此时生成的图标如下:
没有把标题和下面的中文标注显示出来。