span8
span4
http://www.drivebc.ca/api/events/region/mainland?format=rss
练习5:ex5-jsontemplater-vantraffic-xml2json.fmwt
输出文件:ex5-jsontemplater-vantraffic-output.json
在前一篇文章中,JSON编写-概述,我们仔细查看来自DriveBC的实时流量数据的数据结构,并在阅读器中输入URL作为数据集。输出文件用数据检查器显示。我们使用GeoRSS/RSS格式的阅读器来获取感兴趣的特性。
本文将通过使用JSONTemplater在两个不同级别上组合XML阅读器读取的属性来扩展不列颠哥伦比亚省实时流量更新的相同数据集。这允许我们以JSON格式编写文本文件,以便用于更多的分析或显示。我们的目标是展示如何访问更嵌套的属性。我们不作出免责声明,以可用的数据,因为它不断变化。
这个简单的工作区由两个XML读取器和一个文本文件编写器组成。我们从频道功能阅读器“rss/channel”生成根内容,从“rss/channel/item”功能阅读器生成子内容。JSONTemplater和JSONFormatter将用于转换数据。输出数据文件是一个JSON格式的文本文件,用于存储感兴趣的数据。
FME使用模板方法来编写JSON。一个模板表示数据的结构,然后将fme:get-attribute函数、fme:get-json-attributes或fme:process-features放置在模板中,合并fme特征的属性值。JSON文档可以由每个特性或根模板和子模板生成。子模板用于对具有基于多记录数据集的根和多个子元素的文档建模。
使用此数据集,我们将教您如何生成根文档和子模板文档。可以通过在XML读取器的功能路径配置中设置要匹配的元素来选择感兴趣的功能类型。
不使用JSON写入器,而是选择Text File写入格式并指定JSON作为输出格式。使用Text File编写器而不是JSON编写器的原因是,目前JSON编写器只支持简单、扁平的结构。
1.打开FME工作台。
通过从空白工作区开始创建新工作区。
2.添加一个XML阅读器。
将该数据集转换为JSON的第一步是生成根元素。为了创建JSON模板,我们添加了一个XML阅读器并输入数据集URL http://www.drivebc.ca/api/events/region/mainland?format=rss
XML读取器参数
3.第一个XML阅读器中的阅读器配置。
在Feature Type Parameters中,点击省略号[…],然后单击Feature Paths Configuration and Elements to Match again[…]]按钮。选择元素匹配对话框打开,我们将选择属性“rss/channel”作为根。此选择将出现在底部的“已选项目”中。这将为根模板提供具有通道特性的工作区。
XML读取器配置树
单击ok三次,您的第一个Feature Reader将被放置在您的工作区中。
4.在第二个XML读取器中设置特性路径配置。
添加第二个XML阅读器,再次输入相同的URL http://www.drivebc.ca/api/events/region/mainland?format=rss作为数据集。在Feature Type Parameters中,点击省略号[…],并在特征路径配置和元素中再次匹配[…]。然后选择“rss/频道/项目”,并注意“已选项目”框,在那里你可能想复制树结构以供稍后使用。这将为子模板提供带有项特性的工作空间。如果在“选定项目”框中同时出现rss/频道和rss/频道/项目,则取消频道旁边的复选框。我们只对这个阅读器的rss/频道/项目感兴趣。
第二个XML阅读器的阅读器配置树
单击ok 3次,您的项目特征类型将在工作区中打开。
5.JSONTemplater根模板配置
添加一个JSONTemplater变压器并将通道特性类型连接到JSONTemplater Root输入端口。这将用来自通道阅读器的FME特性属性值填充JSON文档。在参数“port”和“ROOT”下,点击省略号按钮[…],然后将打开一个名为ROOT模板表达式的新对话框。在这里,您可以构建JSON数据结构。注意,左侧列出的属性与输入数据相匹配。查找XQuery函数“get-attribute”和“process-features”。
JSONTemplater参数
在右侧的窗口中键入以下表达式。单击“确定”两次。请注意,Result属性设置为_Result。
带有FME字段插入语句的JSON根模板示例
在进一步了解JSONTemplater如何使用根模板工作之前,让我们先进行测试。从根模板中删除{fme:process-features(" SUB ")}表达式。在JSONTemplater之后添加一个Logger,并以完全检查的方式运行工作区,以查看根模板的输出是什么。当你双击生成的特性气泡时,Data Inspector会打开,你应该会在属性“_result”旁边看到如下输出:
{“标题”:“DriveBC事件”,“链接”:http://www.drivebc.ca“,”说明“:”DriveBC事件“,”功能“:[]}”
属性" _result "的输出数据结构
现在将{fme:processfeatures(“SUB”)}表达式添加回根模板,并继续执行以下子模板步骤。在继续之前断开记录器的连接。
6.JSONTemplater sub-template配置
首先,将条目特征类型与JSONTemplater-Root输入连接起来,以便能够选择属性。在JSONTemplater参数下,单击子模板,然后单击+符号以添加新的子模板表达式。这将向JSONTemplater添加一个新的输入端口。单击省略号按钮[…]并输入此模板结构。
JSON子模板使用插入语句定义JSON对象
单击ok两次,然后将项目特性类型的连接从Root更改为现在可用的Sub Input端口。请注意,如果您犯了一个错误,FME将生成关于未找到属性等的警告。
7.添加JSONFormatter并输入以下参数
使用格式类型“漂亮打印”。这有助于使文档更具可读性,在出现问题时更易于调试。它还可以作为JSON验证器,因为无效的JSON不能被格式化,并将生成错误。在输入设置和JSON文档下选择“_result”。输出设置的Result属性应该设置为“text_line_data”。现在按ok接受JSONFormatter转换器中的更改。
JSONFormatter设置
8.添加一个文本文件写入器并保存到VanTraffic_output.json。
您完成的工作区现在将如下所示。保存并运行此工作区。你也可以下载完成的工作区.
完成工作
9.打开text_line JSON输出文件
导航到“打开包含文件夹”并打开youroutput.json.您可以使用点符号或括号符号访问嵌套的JSON对象。检查使用括号符号和点符号的表格格式的数据文档。
{“标题”:“DriveBC事件”,“链接”:http://www.drivebc.ca“,”描述“:”DriveBC事件“,”特征“:[{”几何体“:{”类型“:”点“,”坐标“:[“-124.562445”,“49.888015”],”属性“:{”Id“:”http://www.drivebc.ca/~RTMC_13103,“描述”:“由于特殊事件,Joncas Pl和Sutherland Ave之间的101号公路北行线将被关闭。特殊事件将于2017年5月19日上午9:15至上午9:45生效。预计会延迟。更新时间为太平洋时间4月5日星期三下午3:57。(ID#RTMC_13103),“发布日期”:“2017年4月5日星期三15:57:13-0800”,“严重程度”:“重大”}”
JSON输出文件的数据结构
geometry.type | geometry.coordinates | 属性。Id | properties.description | properties.pubDate | 属性。严重性 |
点 | -124.562445”、“49.888015 | http://www.drivebc.ca/~RTMC_13103 | 因特殊事件,位于Joncas Pl和Sutherland大道之间的101号公路北行将关闭。特别活动将于2017年5月19日上午9:15至9:45生效。预计延迟。更新于4月5日星期三下午3:57太平洋夏令时。(ID # RTMC_13103) | 星期三,Apr 2017 15:57:13 -0800 | 主要 |
相同的表格格式的数据结构示例
10.预期的输出
打开数据检查器,然后单击文件>打开数据集。将格式更改为JSON并浏览到我们刚刚创建的文件。打开参数,将模式扫描模式设置为JSON查询。然后单击功能对象JSON查询旁边的省略号[…],打开树。在树中单击json、features,然后单击
在Data Inspector中查看的输出文件
本练习演示了如何将URL中的实时数据集转换为JSON文件作为输出。首先,由两个XML读取器读取数据,以组合JSONTemplater中的属性,然后将输出文件设置为文本文件。输出文本文件以JSON格式编写。我们希望演示JSONTemplater填充JSON文档具有FME特性属性值,这与XMLTemplater的工作方式非常相似。您可以看到JSONTemplater为您提供对模式的完全控制。JSON格式化程序添加在JSONTemplater之后,以选择_result语句作为输入,并连接到文本_line_数据编写器。生成的JSON文件可以用于进一步分析。
JSON入门
JSON读者配置
从JSON转换为空间格式(GIS)
JSON阅读高级
最多可使用10个附件(包括图片),每个附件不得超过4.0 MB,总附件不得超过4.0 MB。
©2019 S亚搏在线afe Software Inc |法律