西班牙
斯潘4
一些web服务和api返回复杂的JSON,包括访问嵌套数据涉及多个查询的事务调用。本文展示了如何处理这些数据,在本例中,调用返回JSON数据的flood数据API,从JSON中提取指向flood区段的GeoJSON数据的URL,然后将GeoJSON作为几何体读入工作区。输出将写入KML文件,以便在Google Earth中查看。
本文中的数据来自Defra的实时洪水监测API。
洪水数据:
网址:https://environment.data.gov.uk/flood-monitoring/id/floods
文件:floods.json
已完成的工作区:先进JSON-reading.fmw
示例输出:floods.kml
1。检查在数据检查源数据
打开FME数据检查器并单击打开数据集。使用以下参数填写对话框:
格式:JSON (JavaScript对象表示法)
数据集:https://environment.data.gov.uk/flood-monitoring/id/flood(复制和粘贴)
注意:本文中使用的数据来自一个实时API,因此,不会与本文中显示的完全相同。此外,根据请求的时间,可能根本没有洪水警告。因此,如果愿意的话,可以下载上面的泛洪数据JSON文件来代替URL。
单击“确定”。
将显示一个单独的特性,并从JSON层次结构的顶层公开一些属性。但是,要查看整体应用数据本身,必须选择特征并查看“特征信息”窗口中的“未曝光列表”属性。在那里,您可以看到嵌套在较低级别的其余数据:
我们可以看到,每个洪水警报都是items节点的子节点。这意味着如果我们改变模式扫描模式,我们可以将JSON扁平化一个级别,并将每个洪水警报作为一个单独的功能读取。下一步我们会做的。
现在,请注意项{}.floodArea.polygon属性。它们包含一个URL。如果在浏览器中打开该URL(您可以右键单击>复制文本以复制URL),您将看到该数据也是JSON,但包含一个“featureCollection”和几何数据,显示它是GeoJSON。您可以参考API文档来确认这一点。它看起来像这样:
{ “类型”: “的FeatureCollection”, “功能”:[{ “类型”: “功能”, “属性”:{ “AREA”: “LINCS和NORTHANTS”, “FWS_TACODE”: “053WAF119MNK”, “TA_NAME”: "Minor Watercourses in North Kesteven", "DESCRIP": "Heighington, Dunston, Blankney Becks, Billinghay Skirth and River Slea. Tributaries may also affect Dunston, Scopwick, Digby, Ruskington, South Kyme, Sleaford, Ancaster, Wilsford, and Kelby", "LA_NAME": "Lincolnshire", "QDIAL": "207014", "RIVER_SEA": "Heighington Beck, Dunston Beck, Blankney Beck, Bil" }, "geometry": { "type": "Polygon", "coordinates": [ [ [ -0.513446263870744, 53.06191620889139 ], ...
现在我们知道,我们所处理的数据的结构,我们可以看到,我们将要提取链接到多边形数据的网址,并利用它们在几何上我们的工作区阅读。
2。产生一个新的工作区
打开FME Workbench和点击生成工作区。源数据是JSON格式的邮件,通过通过URL API调用访问,并且输出将在谷歌地球中打开的KML文件。
读者格式:JSON
读者数据集:https://environment.data.gov.uk/flood-monitoring/id/floods
读者参数
模式扫描模式:JSON查询
功能类型:洪水
查询:json(“项目”)(*)
编写器格式:谷歌KML
数据集:……/输出/ floods.kml
单击“确定”。
如果您在数据读取方面,你会看到我们的扁平化JSON咯,现在的每一个特征洪水警报,其所有属性暴露出来。我们可以看到每个功能的floodArea.polygon属性。
3。添加FeatureReader
一个FeatureReader变压器添加到工作区。确保阅读器功能类型为进入到启动器端口和
我们将使用这台变压器从floodArea.polygon的URL以GeoJSON阅读。
坐落在FeatureReader以下参数:
读者
格式:GeoJSON(地理JavaScript对象表示法)
数据集:floodArea.polygon
Coord。系统:LL84
属性和几何图形处理
积累模式:合并启动程序和结果
单击“确定”。
发电输出端口对话框问你是否要提供一个数据集用于生成输出端口,但在这种情况下,我们并不需要这样做,所以我们可以单击取消:
运行与功能启用高速缓存的工作区。检查FeatureReader的
4.添加一个KMLStyler
添加KMLStyler的FeatureReader和洪水作家特征类型之间:
我们将使用这颜色根据其严重性,这是存储在属性severityLevel从1(最严重)洪水区域多边形4(最严重)。
双击KMLStyler打开它的参数。点击下拉箭头旁边为颜色,并选择有条件的价值:
在旁边,如果第一个单元格,然后双击。
填写这样的第一测试条件:
左值:severityLevel
接线员:=
正确的值:1
颜色:0.3,1 0
单击“确定”。
单击下一行的第一个单元格旁边,否则如果。填写这样这个测试条件:
左值:severityLevel
接线员:=
正确的值:2
颜色:0.85,1 0
单击“确定”。
在过去否则如果行,填写这样的测试条件:
左值:severityLevel
接线员:=
正确的值:3
颜色:1,0.9,0
单击“确定”。
最后,对于最终否则行设置颜色为1,0.333,0。你现在应该有基于severityLevel绿色,黄色和红色的配色方案:
我们想用这个相同的一组测试,以确定填充颜色一样,所以选择所有的行,并点击复制按钮:
单击“确定”。
点击填充颜色下拉以及和再次选择条件值。选择所有使用Shift键点击行,然后单击粘贴:
你必须手动在else颜色(1,0.333,0)再次输入。单击“确定”。
设置不透明度和填充不透明度到0.9。单击“确定”。
4.运行工作区并检查结果
运行工作空间,打开谷歌地球专业版的结果。您应该看到洪水区域多边形,点击时将显示其洪水警报属性:
注:由于此数据源每日更新,你的结果可能会有所不同。如果多个警报出现在同一地区,你必须在谷歌地球专业邻居窗口打开和关闭的领域。
数据属性
本文从它的开放政府许可下V3.0许可的实时数据API(测试版)使用环境局洪水和河流水位数据。
额外的资源
?2019安全亚搏在线软件公司|合法的