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 features的属性值。每个特性或根和子模板都可以生成一个JSON文档。子模板用于对文档建模,该文档的根具有基于多记录数据集的多个子元素。
有了这个数据集,我们将教会您如何生成根文档和子模板文档。可以通过设置XML阅读器的特性路径配置中匹配的元素来选择感兴趣的特性类型。
不使用JSON写入器,而是选择文本文件写入格式并指定JSON作为输出格式。之所以使用文本文件编写器而不是JSON编写器,是因为目前JSON编写器只支持简单的平面结构。
一。打开FME工作台。
从一个空白的工作空间开始创建一个新的工作空间。
2.添加XML读取器。
将这个数据集转换为JSON的第一步是生成根元素。为了创建JSON模板,我们添加了一个XML阅读器并输入数据集URL http://www.drivebc.ca/api/events/region/mainland?
XML读取器参数
三。第一个XML读取器中的读取器配置。
在功能类型的参数通过单击省略号树控制[...],然后单击特征路径配置和要素重新匹配[...]按钮。选择元素以匹配对话框打开,我们会选择属性“RSS /通道”为根。这一选择将出现在选定项目中的底部。这将提供与用于根模板信道特征的工作区。
XML读取器配置树
单击三次确定和你的第一个功能阅读器将被放置在您的工作空间。
四。在第二个XML读取器中设置要素路径配置。
添加第二个XML阅读器中,输入再次设置相同的URL http://www.drivebc.ca/api/events/region/mainland?format=rss数据。在功能类型参数点击省略号打开树控件[...]和特征路径配置和要素重新匹配[...]。然后选择“RSS /渠道/项目”,并注意所选项目框,在这里你可能希望将树结构复制供以后使用。这将提供工作空间与项目特征的子模板。如果选定项框中RSS /通道和RSS /渠道/同时出现的项目,取消选中通道的框。我们只是在此阅读RSS /渠道/项目感兴趣。
第二个XML读取器的读取器配置树
点击确定3次,您的项目特征类型将在您的工作空间打开。
5个。jsontemplater根模板配置
添加JSONTemplater变压器和连接信道特征类型到JSONTemplater根输入端口。这将填充与FME特征的JSON文件从通道读写属性值。在在“端口”和“ROOT”的参数,点击在该领域的省略号按钮[...]旁边和一个新的对话将打开名为根模板表达。在这里,您可以建立JSON数据结构。请注意左边列出的属性匹配您的输入数据。认准XQuery函数“获取属性”和“过程的功能”。
jsontemplater参数
在右边的窗口中键入下面的表达式。单击确定两次。请注意,结果属性设置为_result。
带有fme字段的insert语句的json根模板示例
让我们测试这一点,我们再往前走之前看到JSONTemplater是如何工作的,只需根模板。删除{FME:过程的功能(“SUB”)}从根模板表达。添加一个记录器的JSONTemplater后并运行全面检验工作区看到根模板的输出是什么。当您双击生成的功能,泡沫,数据查验打开,你会看到下面的输出旁边的属性“_result”:
{“标题”: “DriveBC事件”, “链接”: “http://www.drivebc.ca”, “描述”: “DriveBC活动”, “特征”:[]}}
属性“_result”的输出数据结构
现在加回在{FME:过程的功能(“SUB”)}表达式到根模板并使用以下子步骤模板继续进行。继续之前断开记录器。
6.JSONTemplater子模板配置
首先,连接与JSONTemplater项功能类型 - 根输入,以便能够选择属性。在JSONTemplater参数,点击子模板,然后+号添加一个新的子模板表达式。这将添加一个新的输入端口到JSONTemplater。点击省略号按钮[...],并在此模板结构进入。
json子模板使用insert语句定义json对象
单击确定两次,然后更改项目要素类型的从根到,现在是可用的副输入端口的连接。请注意,如果你犯了一个错误FME会产生大约属性的警告没有发现,等
7。添加jsonformatter并输入以下参数
使用格式类型“漂亮打印”。这有助于使文档更容易阅读和调试的时候有问题。它还可以作为自无效JSON一个JSON验证无法格式化,并会产生错误。在输入设置和JSON文件选择“_result”。输出设置result属性应设置为” text_line_data”。现在按OK接受在JSONFormatter变压器的变化。
jsonformatter设置
八添加文本文件编写器并保存到vantraffic_output.json。
你完成的工作区现在这个样子。保存并运行这个工作空间。您也可以下载已完成的工作区。
已完成的工作区
九打开文本行json输出文件
导航到打开包含文件夹并打开yourOutput.json输出。您可以通过使用点符号或括号来访问嵌套的JSON对象。检查与支架符号和点符号表格格式的数据文件。
{ “标题”: “DriveBC事件”, “链接”: “http://www.drivebc.ca”, “描述”: “DriveBC事件”, “特征”:[{ “几何”:{ “类型”: "Point", "coordinates" : [ "-124.562445", "49.888015" ]}, "properties" : { "Id" : "http://www.drivebc.ca/~RTMC_13103", "description" : "Highway 101 Northbound will be closed between Joncas Pl and Sutherland Ave due to Special Event. Special Event will be in effect 19/05/2017 at 9:15 AM until 9:45 AM. Expect delays. Updated on Wed Apr 5 3:57 pm PDT. (ID# RTMC_13103)", "pubDate" : "Wed, 05 Apr 2017 15:57:13 -0800", "severity" : "Major" }}]}
json输出文件的数据结构
几何图形.type | 几何.坐标 | 属性.id | 属性.描述 | properties.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。(编号:RTMC 13103) | 2017年4月5日星期三15:57:13-0800 | 少校 |
表格格式的相同数据结构示例
10个。预期产量
打开数据检查,并单击文件>打开数据集。格式更改为JSON并浏览到我们刚刚创建的文件。打开参数,设置模式扫描模式,以JSON查询。然后单击省略号[...]旁边的JSON查询为特征对象开辟树。在树点击JSON,功能,然后
在数据检查器中查看的json输出文件
这个练习展示了如何将来自URL的实时数据集转换为JSON文件作为输出。首先,两个xml读取器读取数据,以便在jsontemplater中组合来自这两个xml读取器的属性,然后将输出文件设置为文本文件。输出文本文件是以json格式编写的。我们想演示jsontemplater使用fme特性属性值填充json文档,这与xmltemplater的工作方式非常相似。可以看到jsontemplater让您完全控制模式。JSON格式格式化程序添加在jsontemplater之后,以选择结果语句作为输入,并连接到文本行数据编写器。生成的json文件可用于进一步分析。
JSON入门
JSON读者配置
从JSON转换为空间格式(GIS)
JSON阅读先进
最多可使用10个附件(包括图像),最多4个MB和4个MB。
@petrahammoser我有问题”JSONTemplater子模板配置“。”
“type”:“行字符串”,
“coordinates”:[]如何将linestring解析为“coordinates”?你能帮帮我吗?
©2019安全亚搏在线软件公司法律