span8
span4
图表可以动态使用FME被生成并Google的图表API。在以下示例中,坐标数据从ESRI的shapefile读取并连接到包含在CSV文件(逗号分隔值)选举结果。饼图使用HTML代码生成,其结果输出到KML(在谷歌地球查看)。
温哥华社区投票边界可用多边形形状文件。
选举结果以CSV格式提供。
1.读取源CSV数据
在一个空白工作区,添加一个CSV阅读器,并添加Vancouver2014ElectionResults.csv,默认参数都OK。此CSV文件包含选举结果数据来填充饼图。
2.爆炸属性
在所有的选区存储为列标题的源数据的通知。设计数据库时,最好的做法是共享一个共同的主题存储值(例如位置和在不同的表表决计数) - 或FME,作为单独的属性。要做到这一点,我们将使用AttributeExploder变压器。在参数,设定属性名称标签,以位置和属性值标签来VOTE_COUNT。我们仍然要保持我们的所有属性,我们已经取得了新的后,所以设置保留属性为是。连接督察变压器和运行转换。
将属性拆分成共享主题的存储值。
3.删除FME格式属性
FME创建某些属性的属性在幕后,通常情况下,这些属性被忽略,并且不会影响最终输出。查看从AttributeExploder输出,你可以看到有像CSV2_1和fme_no_geom的VOTE_COUNT列中添加的各种功能。使用测试仪变压器,设置左值到VOTE_COUNT,操作员可以包含正则表达式,然后设置正确的价值为[0-9]。这个正则表达式检查数据,以确保它是数字。
使用正则表达式,确保VOTE_COUNT只包含数值
4.为HTML创建属性
以下为文件Google的图表API,数据必须被转换成[“数据”,值]使用AttributeCreator格式。一个AttributeCreator变压器连接到测试仪上的过去的输出端口。在参数方面,创建一个新的属性称为_format_candidate和值设置为
[“@Value(候选)”,@值(VOTE_COUNT)]
5.按位置聚合属性
我们的目标是有在温哥华各投票区的饼图,所以我们需要由地点聚集了_format_candidate。添加聚合变压器到画布,设置组通过对位置和模式,以属性而已。然后请输入属性,选择是,设置属性来连接到_format_candidate。
使用聚合器,按位置分组
6.创建属性来包含饼图的HTML
现在要创建饼图,也可以使用chartgenerator transformer来完成,如果您想使用该方法,可以使用fme教程查看创建图表。对于这个例子,我们希望利用google maps api的强大功能,因此我们将编写自己的html和javascript。使用attributecreator,创建三个属性:html1、html2和html3。
对于HTML1,请输入以下值:
使用AttributeCreator创建HTML
7.将_html属性连接到表单1
既然我们已经创建了html属性,我们需要将它们连接到一个属性中才能读入图表。使用stringconcatenator将新属性命名为HTML,然后对于字符串部分,将字符串类型设置为属性值三次,然后在每个属性旁边分别将字符串值设置为HTML1、HTML2和HTML3。
使用StringConcatenator将所有三个_html属性连接在一起
8.读取Voting_Boundary shapefile
现在我们需要为地图创建管脚,以便在单击时包含饼图弹出窗口。将shapefile读取器添加到画布并读入voting_boundary.shp,默认参数为OK。多边形形状文件是温哥华市的市政投票边界,为放置包含饼图的管脚提供坐标。
9.创建一个更大的投票边界多边形
由于CSV中的选举数据被组织到投票区域中,因此分解器转换器用于为shapefile中包含的多个投票边界中的每一个创建一个较大的多边形-这确保为每个区域仅创建一个饼图。将溶解器添加到画布,并将其连接到shapefile读取器。在参数中,将“分组依据”设置为“局部区域”,并将“累积模式”设置为“合并传入特征”。
10.在每个多边形内创建一个中心点
我们需要在每个投票边界多边形内创建一个中心点,以便放置一个管脚,以便弹出包含图表的信息窗口。将CenterPointreplacer添加到画布并将其连接到溶解器上的区域输出端口。
11.提取坐标以存储为属性
现在已经建立了一个中心点,我们需要提取它的坐标来创建纬度和经度属性。添加CoordinateExtractor转换器,并将其连接到CenterPointreplacer上的点输出端口。在参数中,将模式设置为指定坐标,然后将x属性更改为经度,将y属性更改为纬度。
12.合并CSV数据和中心点
既然已经创建了html饼图和中心点,我们需要将它们合并在一起。将FeatureMerger添加到画布,将CoordinateExtractor上的输出端口连接到请求程序输入端口,将StringConcatenator上的输出端口连接到供应商输入端口。在参数中,将“请求者”设置为“本地”,将“供应商”设置为“位置”。然后将“要素合并类型”设置为“属性和几何体”。
13.Reproject数据
将数据重新投影到ll-wgs84中,使用连接到featuremerger上的合并输出端口的重新投影转换器,使用与google earth兼容的格式。
14.创建placemark大头针并插入饼图
将kmlpropertysetter转换器连接到重投影程序上的重投影输出端口。在参数中,将名称设置为Local_Area,然后将摘要设置为:
温哥华@value(location)区2014年选举结果
对于描述气球,将内容类型设置为HTML,将内容设置为HTML。然后将include属性表设置为no。这将创建placemark管脚并将饼图插入到信息气球中,单击管脚时可见。
15.创建背景多边形
要创建投票区域的背景多边形,请将attributekeeper转换器添加到溶解器上的区域输出端口。在参数中,将要保留的属性设置为“局部”。接下来,将kmlpropertysetter连接到attributekeeper输出端口。然后在参数中将名称设置为local_area,并将摘要设置为:
@价值(本地区)投票区
然后,对于“说明”气球,将“内容类型”设置为“文本”,将“内容”设置为“投票区域”。将include属性表设置为no。
16.(可选)样式针和多边形。
如果要更改管脚和投票区域多边形的样式,可以将kmlstyler添加到每个kmlpropertysetter,并将参数更改为所选样式。
17.写信给谷歌地球KML
将google kml编写器添加到画布,将功能类型定义设置为automatic…,单击ok。将要素类型名称更改为“选择”,然后单击“确定”完成写入程序的添加。将writer连接到两个kmlpropertysetters的输出端口,或者如果使用kmlstyler设置数据样式,则将writer连接到kmlstyler上的输出端口。
18.查看谷歌地球的输出
运行翻译,然后在google earth中打开选举kml以查看结果。单击任意管脚可查看包含2014年选举数据的饼图。
结果在谷歌地球
数据属性
此处使用的数据源于温哥华的城市,不列颠哥伦比亚省。它包含根据开放的政府许可证-温哥华许可的信息。
到目前为止,非常感谢你的帮助
第二张图片:
©2019安全亚搏在线软件公司|法律