斯潘8
斯潘4
http://www.drivebc.ca/api/events/region/大陆?格式化=RSS
练习5:ex5-jContemplater-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:获取属性函数,fme:get json attributes或fme:process features放置在模板中,以合并来自fme features的属性值。JSON文档可以每个特性生成一个,也可以通过根和子模板生成。子模板用于对具有根的文档进行建模,该文档具有基于多记录数据集的多个子元素。
有了这个数据集,我们将教您如何生成根文档和子模板文档。通过在XML读卡器的功能路径配置中设置要匹配的元素,可以选择感兴趣的功能类型。
而不是使用JSON编写器,选择文本文件写入格式并指定JSON作为输出格式。使用文本文件编写器而不是JSON编写器的原因是当前JSON编写器只支持简单的,扁平结构。
1。打开FME工作台。
从空白工作区开始创建新工作区。
2。添加XML读取器。
将此数据集转换为JSON的第一步是生成根元素。为了创建JSON模板,我们添加了一个XML阅读器并输入数据集URL http://www.drivebc.ca/api/events/region/continue?格式化=RSS
XML读取器参数
三。第一个XML读取器中的读取器配置。
在要素类型参数中,通过单击省略号[…]打开树控件,然后在要素路径配置和元素中单击以再次匹配“…”按钮。选择要匹配的元素对话框打开,我们将选择属性“rss/channel”作为根。所选内容将显示在所选项目的底部。这将为工作区提供根模板的通道功能。
XML读取器配置树
单击“确定”三次,您的第一个功能阅读器将放置在您的工作区中。
4。在第二个XML读取器中设置功能路径配置。
添加第二个XML读取器,再次输入相同的URL作为数据集http://www.drivebc.ca/api/events/region/continland?格式= RSS。在要素类型参数中,通过单击省略号[…]打开树控件,在要素路径配置和元素中再次匹配[…]。然后选择“rss/channel/item”并注意“selected items”框,您可能希望在其中复制树结构以供以后使用。这将为工作区提供子模板的项功能。如果在“选定项目”框中,RSS/频道和RSS/频道/项目都出现,取消选中“频道”旁边的框。我们只对这个读者的RSS/频道/项目感兴趣。
第二个XML读卡器的读卡器配置树
单击“确定”3次,您的项目功能类型将在工作区中打开。
5。JSontemplater根模板配置
添加一个JSontemplater转换器,并将通道功能类型连接到JSontemplater根输入端口。这将使用来自通道读卡器的FME特性属性值填充JSON文档。在“port”和“root”下的参数中,单击它旁边字段中的省略号按钮“…”,将打开一个名为“根模板表达式”的新对话框。在这里,您可以构建JSON数据结构。请注意,左侧列出的属性与输入数据匹配。查找xquery函数“get attribute”和“process features”。
JSontemplater参数
在右侧窗口中键入以下表达式。单击OK两次。请注意,result属性设置为\u result。
带有FME字段的插入语句的JSON根模板示例
在我们进一步了解JSontemplater如何只使用根模板之前,我们先测试一下这个问题。从根模板中删除fme:process features(“sub”)表达式。在JSontemplater之后添加一个记录器,并运行带有完全检查的工作区,以查看根模板的输出是什么。双击生成的特征编号时,数据检查器打开,您应该在属性“_result”旁边看到以下输出:
“title”:“DriveBC事件”,“link”:“http://www.drivebc.ca”,“description”:“DriveBC事件”,“功能”:[]
属性“结果”的输出数据结构
现在将fme:流程功能(“Sub”)表达式添加回根模板,并继续执行以下子模板步骤。继续之前断开记录器。
6。JSontemplater子模板配置
第一,将item feature类型与jsonTemplater-root输入连接,以便能够选择属性。在jContemplater参数下,单击子模板,然后单击+号以添加新的子模板表达式。这将向JSontemplater添加一个新的输入端口。单击省略号按钮[…]并在此模板结构中输入。
JSON子模板用insert语句定义JSON对象
单击“确定”两次,然后将项功能类型的连接从根更改为现在可用的子输入端口。请注意,如果您犯了错误,FME将生成关于未找到属性的警告,等。
7。添加JSonformatter并输入以下参数
使用格式类型“漂亮打印”。这有助于使文档在出现问题时更易于阅读和调试。它还充当JSON验证器,因为无效的JSON不能被格式化并将生成一个错误。在输入设置和JSON文档下,选择“_result”。输出设置结果属性应设置为“文本行数据”。现在按OK接受JSonformatter转换器中的更改。
JSonformatter设置
8。添加文本文件编写器并保存到vantraffic_output.json。
您完成的工作区现在将如下所示。保存并运行此工作区。您也可以下载已完成的工作区.
已完成的工作区
9。打开文本行json输出文件
导航到“打开包含文件夹”并打开YouOuttoP.JSON.可以使用点表示法或括号表示法访问嵌套的JSON对象。用括号表示法检查数据文档,用点表示法检查表格格式。
“title”:“DriveBC事件”,“link”:“http://www.drivebc.ca”,“description”:“DriveBC事件”,“features”:[“geometry”:“type”:“点”,“坐标”:[“-124.562445”,“49.888015”}“properties”:“id”:“http://www.drivebc.ca/~rtmc_13103”,“说明”:“101号公路北行将因特殊事件在joncas pl和sutherland ave之间关闭。特殊活动将于2017年5月19日上午9:15至上午9:45生效。预计延误。4月5日星期三下午3:57更新。(ID RTMC_)”,“pubdate”:“周三,2017年4月5日15:57:13-0800“,“严重性”:“主要”]
JSON输出文件的数据结构
几何类型 | 几何.坐标 | 属性ID | 属性.描述 | 属性.pubdate | 属性.严重性 |
点 | - 124.562445,“49.888015 | http://www.drivebc.ca/~rtmc_ | 由于特殊事件,101号公路北行将在joncas pl和sutherland ave之间关闭。特殊活动将于2017年5月19日上午9:15至上午9:45生效。预计延误。4月5日星期三下午3:57更新。(ID RTMC_) | 结婚,2017年4月5日15:57:13-0800 | 少校 |
表格格式的相同数据结构示例
10。预期产量
打开数据检查器,然后单击文件>打开数据集。将格式改为json并浏览到刚才创建的文件。打开参数,将模式扫描模式设置为JSON查询。然后单击json query for feature对象旁边的省略号[…]打开树。在树中单击json,特征,然后
在数据检查器中查看的JSON输出文件
本练习演示了如何将URL中的活动数据集作为输出转换为JSON文件。第一,两个XML读卡器读取数据,以组合jsonTemplater中的属性,然后将输出文件设置为文本文件。输出文本文件是以JSON格式编写的。我们想证明JSontemplater使用fme特性属性值填充JSON文档,这与xmlTemplater的工作方式非常相似。您可以看到JSontemplater为您提供了对模式的完全控制。JSON格式化程序被添加到JSontemplater之后,以选择结果语句作为输入并连接到文本行数据编写器。生成的JSON文件可用于进一步分析。
JSON入门
JSON读卡器配置
从JSON转换为空间格式(GIS)
JSON高级阅读
?2019安全亚搏在线软件公司|合法的