span8
span4
一些web服务和api返回复杂的JSON,包括事务性调用,其中多个查询涉及访问嵌套数据。本文将展示如何使用这些数据,在本例中,调用返回JSON数据的洪水数据API,从JSON中提取指向洪水范围的GeoJSON数据的URL,然后将该GeoJSON作为几何体读入工作空间。输出将被写入KML文件,以便在谷歌Earth中查看。
本文中的数据来自Defra实时洪水监测API.
洪水数据:
URL:https://environment.data.gov.uk/flood-monitoring/id/floods
文件:floods.json
完成工作:advanced-json-reading.fmw
示例输出:floods.kml
1.在数据检查器中检查源数据
打开FME数据检查器,单击“打开数据集”。用以下参数填写对话框:
格式:JSON (JavaScript对象符号)
数据集:https://environment.data.gov.uk/flood-monitoring/id/floods(复制粘贴)
请注意:本文中使用的数据来自一个实时API,因此,与本文中显示的数据并不完全相同。此外,根据请求的时间,可能根本没有任何洪水警告。因此,如果您愿意,可以下载上面的洪水数据JSON文件来代替URL。
单击OK。
只显示一个特性,并从JSON层次结构的顶层公开一些属性。然而,要查看洪水数据本身,必须选择特征,并在特征信息窗口中查看未公开的列表属性。在这里,你可以看到在较低层次嵌套的其余数据:
我们可以看到,每个洪水警报都是items节点的子节点。这意味着如果我们改变Schema Scan Mode,我们可以将JSON平放一层,并将每个洪水警报作为一个单独的特性来读取。我们将在下一步中做这个。
现在,请注意项目{}. floodarea。多边形的属性。它们包含一个URL。如果您在浏览器中打开该URL(您可以右键单击> Copy Text来复制URL),您将看到该数据也是JSON,但包含一个“featureCollection”和几何数据,显示它是GeoJSON。你可以通过参考API文档.它看起来像这样:
{"type": "FeatureCollection", "features": [{"type": "Feature", "properties": {"AREA": "Lincs and Northants", "FWS_TACODE": "053WAF119MNK", "TA_NAME": " North Kesteven Minor水道"," description ": " heights, Dunston, Blankney Becks, Billinghay Skirth and River Slea. "分支也可能影响Dunston, Scopwick, Digby, Ruskington, South Kyme, Sleaford, Ancaster, Wilsford和Kelby", "LA_NAME": "Lincolnshire", "QDIAL": "207014", "RIVER_SEA": " heights ington Beck, Dunston Beck, Blankney Beck, Bil"}, "geometry": {"type": "Polygon", "coordinates":[[-0.513446263870744, 53.06191620889139],…
现在我们知道了我们正在处理的数据的结构,我们可以看到我们必须提取链接到多边形数据的url,并使用它们来读取几何体到我们的工作空间。
2.生成一个新的工作区
打开FME工作台并单击Generate Workspace。源数据是JSON格式的消息,通过URL通过API调用访问,输出是将在谷歌Earth中打开的KML文件。
读者格式:JSON
读者数据集:https://environment.data.gov.uk/flood-monitoring/id/floods
读者参数
Schema扫描模式:JSON查询
功能类型:洪水
查询:json(“项目”)(*)
作者格式:谷歌KML
数据集:……/输出/ floods.kml
单击OK。
如果您读一读数据,就会发现我们稍微简化了JSON,现在每个特性都是一个洪水警报,所有属性都暴露了。我们可以看到洪水区。每个特征的多边形属性。
3.添加一个FeatureReader
将featuereader转换器添加到工作区。确保读取器特性类型进入启动器端口,并且
我们将使用这个转换器从floodArea.polygon的URL中读取GeoJSON。
在featuereader中设置以下参数:
读者
格式:GeoJSON(地理JavaScript对象符号)
数据集:floodArea.polygon
Coord。系统:LL84
属性和几何处理
积累模式:“合并启动器和结果”
单击OK。
生成输出端口对话框将询问你是否想要提供一个数据集来生成输出端口,但在这种情况下,我们不需要这样做,所以我们可以单击Cancel:
运行启用了Feature Caching的工作区。检查featuereader的
4.添加一个KMLStyler
在featuereader和洪水写作功能类型之间添加一个KMLStyler:
我们将根据洪水区域多边形的严重性来使用它,严重性存储在属性severityLevel中,从1(最轻)到4(最严重)。
双击KMLStyler以打开其参数。单击“颜色”旁边的下拉箭头,选择“条件值”:
然后双击If旁边的第一个单元格。
像这样填写第一个测试条件:
左值:severityLevel
接线员:=
正确的值:1
颜色:0.3,1 0
单击OK。
单击Else If旁边下一行的第一个单元格。像这样填写测试条件:
左值:severityLevel
接线员:=
正确的值:2
颜色:0.85,1 0
单击OK。
对于最后一个Else If行,像这样填写测试条件:
左值:severityLevel
接线员:=
正确的值:3
颜色:1,0.9,0
单击OK。
最后,将最后一行Else的颜色设置为1,0.333,0。你现在应该有一个基于severityLevel的绿色、黄色和红色的配色方案:
我们还想使用相同的测试集来确定填充颜色,因此选择所有行并单击复制按钮:
单击OK。
再单击“填充颜色”的下拉菜单,然后再次选择“条件值”。选择所有的行使用Shift,点击,然后点击粘贴:
你必须再次手动输入Else Color(1,0.333,0)。单击OK。
设置不透明度和填充不透明度为0.9。单击OK。
4.运行工作区并检查结果
运行工作区并打开结果谷歌地球职业.你应该会看到洪水区域的多边形,点击时会显示它们的洪水警报属性:
注意:由于该数据源每天更新,您的结果可能看起来不同。如果多个警报出现在同一个区域,你必须在谷歌Earth Pro Places窗口中切换区域开关。
数据属性
本文使用环境局的洪水和河流水位数据来自实时数据API (Beta),该API是在开放政府许可证v3.0下许可的。
额外的资源
©2020 S亚搏在线afe Software Inc |法律