西班牙
斯潘4
可以使用FME和谷歌的图表API是的。在下面的示例中,坐标数据是从Esri Shapefile读取的,并与CSV文件(逗号分隔值)中包含的选举结果相关联。使用html代码生成饼图,结果导出到kml(在google earth中可见)。
可作为一个多边形的Shapefile温哥华附近表决边界。
选举结果CSV格式。
1。阅读源CSV数据
在空白工作区中,添加CSV读取器,然后添加Vancouver2014ElectionResults.CSV,默认参数为ok。此csv文件包含用于填充饼图的选举结果数据。
2。爆炸属性
请注意,在源数据中,所有投票区都存储为列标题。设计数据库时的最佳实践是存储共享一个主题的值(例如。位置和投票计数)在单独的表格中-或对于FME,作为单独的属性。为此,我们将使用AttributeExploder转换器。在参数中,将“属性名称”标签设置为“位置”,将“属性值”标签设置为“投票计数”。我们仍然希望在创建新属性后保留所有属性,因此将“保留属性”设置为“是”。连接检查器转换器并运行转换。
爆炸属性来存储共享一个共同的主题值。
3。删除FME格式属性
在幕后,fme为某些属性创建属性,通常这些属性会被忽略,不会影响最终输出。查看attributeexploder的输出,可以看到在vote_count列中添加了各种功能,如csv2_1和fme_no_geom。使用测试仪转换器,将左值设置为vote_count,将运算符设置为contains regex,然后将右值设置为[0-9]。此正则表达式检查数据以确保它是数字。
使用正则表达式,确保VOTE_COUNT只包含数值
4。创建的HTML属性
遵循以下文档谷歌的图表API,必须使用attributecreator将数据转换为[“data”,value]格式。将AttributeCreator变压器连接到测试仪上通过的输出端口。在参数中,创建一个名为“候选格式”的新属性,并将该值设置为
['@value(候选)',@value(投票计数)]
5。按位置聚合属性
我们的目标是在温哥华的每个投票区都有一个饼图,所以我们需要按地点汇总我们的候选人。将聚合器转换器添加到画布,将group by设置为location,将mode设置为attributes only。然后,对于“保持输入属性”,选择“是”并将属性设置为“连接到候选格式”。
由LOCATION使用聚合器,基
6。创建属性包含饼图的HTML
现在要创建饼状图,也可以使用ChartGenerator transformer来完成,如果您想使用该方法,可以查看FME教程中的创建图。对于本例,我们希望利用谷歌映射API的强大功能,因此我们将编写自己的HTML和JavaScript。使用AttributeCreator创建三个属性_html1、_html2和_html3。
对于_html1,输入以下值:
使用AttributeCreator创建HTML
7。串联_html属性,形成一个
现在我们已经创建了HTML属性,我们需要将它们连接到一个属性中,以便读取到图表中。使用StringConcatenator,将新属性命名为_html,然后对于字符串部分,将字符串类型设置为属性值三次,然后分别将每个字符串值设置为_html1、_html2和_html3。
使用StringConcatenator来连接所有三个属性_html一起
8。阅读在Voting_Boundary shape文件
现在,我们需要为地图创建大头针,以包含单击时弹出的饼图。将Shapefile阅读器添加到画布并在voting_boundary中进行读取。shp,默认参数是ok的。多边形形状文件是温哥华市的市政投票边界,它提供了放置包含饼状图的大头针的坐标。
9。创建投票边界的大多边形
因为CSV中的选举数据被组织到投票区域中,所以使用Dissolver转换器为Shapefile中包含的许多投票边界中的每一个创建一个更大的多边形—这确保每个区域只创建一个饼图。向画布添加一个溶解器,并将其连接到Shapefile读取器。在参数中,将Group By设置为LOCAL_AREA,并设置累加模式来合并传入的特性。
10。创建每个多边形内部的中心点
我们需要在每个投票边界多边形内创建一个中心点,以便放置大头针,以便弹出包含图表的信息窗口。将CenterPointReplacer添加到画布并将其连接到溶解器上的区域输出端口。
11。提取存储在属性中具有坐标
现在已经建立了一个中心点,我们需要提取它的坐标来创建纬度和经度属性。添加一个坐标提取器变压器,并将其连接到CenterPointReplacer上的点输出端口。在参数中,将模式设置为指定坐标,然后将X属性更改为经度,将Y属性更改为纬度。
12。合并CSV数据和中心点
现在已经创建了HTML饼图和中心点,我们需要将它们合并在一起。向画布添加一个FeatureMerger,将CoordinateExtractor上的输出端口连接到请求程序输入端口,将StringConcatenator上的输出端口连接到供应商输入端口。在参数中,将请求者设置为LOCAL_AREA,将供应商设置为LOCATION。然后将特性合并类型设置为属性和几何图形。
13。重新投影数据
使用连接到FeatureMerger的合并输出端口的re幻灯机变压器,将数据重新投影到LL-WGS84中,使用的是与谷歌地球兼容的格式。
14。创建标针,插入饼图
将KMLPropertySetter变压器连接到re幻灯机上的重新投影输出端口。在参数中,将名称设置为LOCAL_AREA,然后将摘要设置为:
2014年温哥华地区选举结果
对于Description气球,将内容类型设置为HTML,将内容设置为_html。然后将Include属性表设置为No。这将创建placemark大头针并将饼图插入到信息气球中,当大头针单击时,信息气球是可见的。
15。创建背景多边形
要创建投票区域的背景多边形,请在溶解器的区域输出端口上添加一个AttributeKeeper转换器。在参数中,将属性设置为LOCAL_AREA。接下来,将KMLPropertySetter连接到AttributeKeeper输出端口。然后在参数中将名称设置为LOCAL_AREA,将摘要设置为:
@ value (LOCAL_AREA)投票
然后对于Description气球,将内容类型设置为Text,将内容设置为Voting District。将Include属性表设置为No。
16。(可选)式引脚和多边形。
如果您想更改您的大头针和投票区多边形的样式,您可以向每个KMLPropertySetter添加一个KMLStyler,并将参数更改为您所选择的样式。
17。写信给谷歌地球KML
向画布添加一个谷歌KML写入器,将特性类型定义设置为Automatic…,单击OK。将特性类型名称更改为Elections并单击OK完成添加写入器。将写入器连接到KMLPropertySetters的输出端口,或者如果使用KMLStyler对数据进行样式设置,则将写入器连接到KMLStylers的输出端口。
18。查看谷歌地球输出
运行翻译,然后打开选举KML在谷歌地球查看结果。点击任何一个图钉都可以看到包含2014年选举数据的饼状图。
结果谷歌地球
数据归属
这里使用的数据来源于由温哥华市不列颠哥伦比亚省。它包含在开放政府许可下的信息-温哥华。
到目前为止,非常感谢你的帮助
第二张图片:
html文件中的折线图看起来没有问题,但是在kml中与气球连接时它不会出现。?2019安全亚搏在线软件公司|合法的