斯潘8
斯潘4
可以使用FME和谷歌图表API.在下面的示例中,坐标数据从ESRI形状文件中读取,并与包含在csv文件中的选举结果(逗号分隔的值)相联接。饼图是使用HTML代码生成的,结果输出到kml(在GoogleEarth中可查看)。
温哥华社区投票边界可用作多边形形状文件。
选择结果以csv格式提供。
1。读取源csv数据
在空白工作区中,添加一个csv阅读器,并添加vancouver2014electionresults.csv,默认参数正常。此csv文件包含用于填充饼图的选举结果数据。
2。分解属性
请注意,在源数据中,所有投票区域都存储为列标题。设计数据库时的最佳实践是存储共享一个共同主题的值(例如位置和投票计数)在单独的表格中-或对于FME,作为单独的属性。为此,我们将使用一个attributeexploder变压器。在参数中,将属性名标签设置为位置,将属性值标签设置为投票计数。我们仍然希望在制造出新的属性之后保留所有的属性,所以将keep属性设置为yes。连接一个inspector transformer并运行翻译。
分解属性以存储共享公共主题的值。
三。删除FME格式属性
在幕后,FME为某些属性创建属性,通常,这些属性被忽略,不会影响最终输出。查看attributeExploder的输出,您可以看到投票计数列中添加了各种功能,如csv2_1和fme_no_geom。使用测试变压器,将左边的值设置为投票计数,包含regex的运算符,然后将正确的值设置为[0-9]。此正则表达式检查数据以确保数据是数字。
使用正则表达式,确保投票计数仅包含数值
4。为HTML创建属性
遵循文档谷歌图表API,必须将数据转换为[“data”,value]使用attributeCreator格式化。将attributeCreator变压器连接到检测仪上通过的输出端口。在参数中,创建一个名为“format”的新属性,并将该值设置为
['@value(候选者)',@value(投票数)]
5。按位置聚合属性
目标是为温哥华的每个投票区制作一个饼图,因此,我们需要按地点汇总我们的“格式”候选人。向画布中添加聚合转换器,将分组依据设置为位置,并且模式仅限于属性。然后对于保留输入属性,选择“是”,并将属性设置为“连接”为“格式”候选项。
使用聚合器,按位置分组
6。创建包含饼图HTML的属性
现在要创建饼图,这也可以使用ChartGenerator变压器完成,如果你想使用这个方法,你可以通过FME教程查看创建图表。对于这个例子,我们想利用谷歌地图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。重新投影数据
将数据重新投影到ll-wgs84中,与是一个谷歌地球兼容的格式,使用的是连接到功能合并上合并的输出端口的转发器。
14。创建放置标记销并插入饼图
将kmlpropertySetter变压器连接到重新喷射器上的重新喷射输出端口。在参数中,将名称设置为本地区域,然后将摘要设置为:
温哥华2014年@value(location)区选举结果
对于描述气球,将内容类型设置为HTML,内容设置为HTML。然后将include属性表设置为no。这将创建放置标记销并将饼图插入信息气球中,单击PIN时可见。
15。创建背景多边形
要创建投票区的背景多边形,向溶解器上的区域输出端口添加一个attributekeeper变压器。在参数中,设置要保留到本地区域的属性。下一步,将kmlpropertySetter连接到attributeKeeper输出端口。然后在参数中,将名称设置为本地区域,将摘要设置为:
@价值(当地)投票区
然后对于描述气球,将内容类型设置为文本,以及投票区的内容。将include属性表设置为no。
16。(可选)样式销和多边形。
如果你想改变你的大头针和投票区多边形的样式,您可以向每个kmlpropertySetter添加一个kmlstyler,并将参数更改为您选择的样式。
17。写入Google Earth KML
在画布上添加一个Google KML编写器,将功能类型定义设置为自动…,单击确定。将要素类型名称更改为“选择”,然后单击“确定”完成添加编写器。将编写器连接到两个kmlpropertySetter的输出端口,或者如果使用kmlstyler设置了数据的样式,将编写器连接到kmlstyler上的输出端口。
18。在Google Earth中查看输出
运行翻译,然后打开GoogleEarth中的选举kml查看结果。点击任意一个别针查看包含2014年选举数据的饼图。
谷歌地球的结果
数据属性
此处使用的数据源于温哥华市,不列颠哥伦比亚省。它包含根据开放式政府许可证(温哥华)获得许可的信息。
?2019安全亚搏在线软件公司|合法的