span8
第4排
可以使用FME和谷歌图表API。在下面的示例中,坐标数据从Esri Shapefile读取,并连接到CSV文件(逗号分隔的值)中包含的选举结果。使用HTML代码生成饼图,并将结果导出到KML(可在谷歌Earth中查看)。
温哥华社区投票边界可用作多边形形状文件。
选举结果以CSV格式提供。
1。读取源csv数据
在空白工作区中,添加一个csv阅读器,并添加Vancouver2014ElectionResults.csv,默认参数正常。此csv文件包含用于填充饼图的选举结果数据。
2.爆炸属性
请注意,在源数据中,所有投票区域都存储为列标题。设计数据库时的最佳实践是存储共享一个共同主题的值(例如位置和投票计数)在单独的表格中-或对于FME,作为单独的属性。为此,我们将使用attribute爆炸式变压器。的参数,将属性名标签设置为位置,将属性值标签设置为投票计数。我们仍然希望在创建新属性之后保留所有属性,所以将keep属性设置为yes。连接一个inspector transformer并运行翻译。
分解属性以存储具有相同主题的值。
三。删除FME格式属性
FME在幕后为某些属性创建属性,通常,这些属性被忽略,不会影响最终输出。查看attribute爆炸式程序的输出,您可以看到投票计数列中添加了各种功能,如csv2_1和fme_no_geom。使用测试变压器,将左边的值设置为投票计数,包含正则表达式的运算符,然后将正确的值设置为[0-9]。这个正则表达式检查数据以确保它是数值型的。
使用正则表达式,确保投票计数仅包含数值
4。为HTML创建属性
遵循文档谷歌图表API,请必须将数据转换为[“data”,使用AttributeCreator的格式。将AttributeCreator转换器连接到测试器上传递的输出端口。的参数,创建一个名为_format_candidate的新属性,并将其值设置为
['@value(候选者)',@value(投票数)]
5.按位置聚合属性
目标是为温哥华的每个投票区制作一个饼图,因此,我们需要按位置聚合_format_candidate。向画布中添加聚合转换器,将分组依据设置为位置,并且模式仅限于属性。然后对于保留输入属性,选择Yes并将属性连接到_format_candidate。
使用聚合器,按位置分组
6.创建属性以包含饼图的HTML
现在要创建饼图,这也可以使用ChartGenerator变压器完成,如果你想使用这种方法,你可以查看创建图表与FME教程。对于这个例子,我们想要利用谷歌Maps API的强大功能,所以我们将编写自己的HTML和JavaScript。使用属性创建器,创建三个属性,HTML1,_ HTML2和HTML3。
对于_html1,输入以下值:
使用AttributeCreator创建HTML
7。连接HTML属性以形成一个
既然我们已经创建了HTML属性,我们需要将它们连接到一个属性中以读取图表。StringConcatenator,命名新属性\u html,然后对于弦部分,将字符串类型设置为属性值三次,然后在每个设置字符串值的旁边将其设置为_html1,_html2,和HTML3,分别。
使用StringConcatenator将所有三个_html属性连接在一起
8。读取投票边界形状文件
现在,我们需要为我们的地图创建管脚,以便在单击时包含饼图弹出窗口。在画布中添加一个shapefile reader并在voting_boundary.shp中读取,默认参数正常。多边形形状文件是温哥华市的市政投票边界,它提供放置将包含饼图的销的坐标。
9。创建投票边界的较大多边形
因为csv的选举数据被组织到投票区,分解器转换器用于为shapefile中包含的多个投票边界中的每个创建一个更大的多边形-这可确保为每个区域只创建一个饼图。在画布上添加溶解剂,并将其连接到shapefile reader。的参数,将Group By设置为Local_Area,并将累积模式设置为合并传入功能。
10.在每个多边形内创建一个中心点
我们需要在每个投票边界多边形中创建一个中心点,以便放置一个大头针,以便弹出一个包含图表的信息窗口。将CenterPointReplacer添加到画布,并将其连接到溶解器上的区域输出端口。
11。提取要存储为属性的坐标
既然已经建立了一个中心点,我们需要提取它的坐标来创建纬度和经度属性。添加一个coordinatextractor转换器,并将其连接到CenterPointReplacer上的点输出端口。的参数,设置模式以指定坐标,然后将x属性更改为经度,将y属性更改为纬度。
12.合并csv数据和中心点
现在已经创建了HTML饼图和中心点,我们需要将它们合并在一起。在画布上添加一个功能合并,将coordinatextractor上的输出端口连接到请求者输入端口,以及连接到供应商输入端口的StringConcatenator上的输出端口。在参数中,将请求者设置为本地区域,将供应商设置为位置。然后将特征合并类型设置为属性和几何体。
13.Reproject数据
将数据重新投影到LL-WGS84中,与是一个谷歌地球兼容的格式,使用的是连接到功能合并上合并的输出端口的转发器。
14。创建放置标记销并插入饼图
将kmlpropertySetter变压器连接到重新喷射器上的重新喷射输出端口。的参数,将名称设置为本地区域,然后将摘要设置为:
温哥华2014年@Value(LOCATION)地区选举结果
对于描述气球,将内容类型设置为HTML,将内容设置为_html。然后将include属性表设置为no。这将创建placemark大头针,并将饼图插入到信息气球中,单击PIN时可见。
15。创建背景多边形
要创建投票区的背景多边形,向溶解器上的区域输出端口添加一个attributekeeper变压器。的参数,设置要保留到本地区域的属性。下一步,将kmlpropertySetter连接到attributeKeeper输出端口。然后在参数中,将名称设置为本地区域,将摘要设置为:
@ value(LOCAL_AREA)投票
然后对于描述气球,将内容类型设置为Text,以及投票区的内容。将Include属性表设置为No。
16。(可选)样式引脚和多边形。
如果你想改变你的大头针和投票区多边形的样式,您可以向每个KMLPropertySetter添加KMLStyler,并将参数更改为您选择的样式。
17.写入Google Earth KML
在画布上添加一个Google KML编写器,将功能类型定义设置为自动…,单击“确定”。将要素类型名称更改为“选择”,然后单击“确定”完成添加编写器。将编写器连接到两个kmlpropertySetter的输出端口,或者如果使用kmlstyler设置了数据的样式,将写入器连接到kmlstyler上的输出端口。
18。在Google Earth中查看输出
运行翻译,然后打开GoogleEarth中的选举kml查看结果。点击任意一个别针查看包含2014年选举数据的饼图。
谷歌地球的结果
数据属性
此处使用的数据源于温哥华市,请不列颠哥伦比亚省。它包含根据开放政府许可证-温哥华许可的信息。
?2019安全亚搏在线软件公司|合法的