span8
span4
实时数据馈送:
输入:https://environment.data.gov.uk/flood-monitoring/id/floods?最小严重性=4
要么
http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon
已完成的工作区:ex3-readadv-floodareas-json2kml.fmwt号
输出:ex3-readadv-live-output.kml
基于文件的方案:
输入:flood_ID_Apr7.jsonflood-id-apr7.json版本
已完成的工作区:ex3-readadv-file-floodareas-json2kml.fmwt文件
输出:ex3-readadv-file-output.kml
JSON是存储数据结构简单的文本格式。JSON格式的这些数据集有许多形状。以GeoJSON还使用JSON(JavaScript对象符号)规范。以GeoJSON有一种方式,一个Javascript的网页浏览器可以即时显示它来指定数据的能力。无论您从网站下载文件或订阅您感兴趣的Web Feed中,你可能会通过JSON访问数据,或消费GeoJSON的。
甲以GeoJSON对象可以表示几何形状,特征或特征集合。这些功能包括点,多边形,和这些类型的多部分藏品。几何形状可以存储在坐标的形式或可进行地理编码地址和位置的形式。虽然以GeoJSON能有几何,默认情况下FME不显示它。需要更复杂的JSON的服务在多个查询涉及访问嵌套数据。在这篇文章中的先进书写,我们需要使用查询来提取,我们感兴趣的是JSON的子集。
本文中的高级阅读JSON例子包括,将使用数据检查的JSON格式的阅读器来读取数据。该数据检查将被用来检查数据。然后,我们将创建一个工作空间,使我们能够读取洪水警报API的JSON消息,并解释在时间的多个场景中存在或不洪水发出警告洪水多边形。输出将被写入到一个KML文件进行查看在谷歌地球。
该文件,以及如何的结构深度嵌套的特点是,将使它是多么容易阅读的差异。这次演习,由英国政府使用数据约洪水警报,洪水警报,水位和流量的测量。环境署洪水监测API为开发人员提供访问近实时信息。我们不作任何声明,以这个数据的可用性,因为它不断变化。请注意,本文从实时数据API(测试版),它是根据许可使用环境局洪水和河流水位数据开放政府许可证V3.0。API提供通过简单的HTTP GET请求REST风格的访问数据,以JSON格式返回数据。此数据结构例嵌套的,这意味着它具有包含子对象的对象。阵列是一种特殊类型,它包含重复元素的对象。JSON响应中的“items”元素将包含单个项目的描述或项目数组。
由于我们无法控制示例数据,而且有时可能没有洪水,因此您可能会遇到洪水列表中有items[],或者没有项。在本例中,我们已经包含了错误处理,并且我们还包含了一个基于文件的场景,如果跟踪链接没有返回任何项,您可以使用该场景。
第一个web链接https://environment.data.gov.uk/flood-monitoring/id/flood ?min-severity=4
包含许多嵌入的weblinks,多边形数据位于第二个web链接http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon。当从features数组查询时,数据结构可以在表中表示。严重性级别可以通过更改最后一位数字从4更改为更低。
表1显示了洪水区域链接(第一个链接)的数据结构
表2显示了洪水区域连接的连续数据结构
http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon
表3显示了多边形嵌入链接(第二个链接)的数据结构
我们正在读取的JSON格式的消息是嵌套的,这意味着数组在数组中。这意味着在提取几何图形之前,我们不希望将文件压平。
在创建这个示例的当天,我们看到了英国政府对格洛斯特郡地区发出的洪水警告信息。
打开数据检查器,并确保你有雄蕊背景地图或同等装载。选择JSON作为读取器格式,输入数据的文件位置或链接(https://environment.data.gov.uk/flood-monitoring/id/flood ?min-severity=4)。在单击ok之前需要指定参数,因为此时只能访问特性树,这是2017.0版本的新特性。点击参数,将模式扫描模式设置为JSON查询,然后点击省略号按钮[…]JSON查询背后的功能对象。
json阅读器格式和url作为数据集
在打开的对话框中,单击“json”并注意“所选项目”部分的文本,您可能希望复制它以供以后使用。
读卡器配置树
设置好参数后,单击一条记录,您将看到该文件是深度嵌套的。注意,在这个视图中有几个属性,但是没有几何图形。在右侧的功能信息窗口中,您可以看到它包含到其他站点的链接,这些站点包含洪水区域多边形。
数据检查器视图没有几何图形,并显示此深度嵌套文件包含指向多边形数据的链接
我们将仔细查看数据,以了解如何存储多边形数据。如前所述,JSON响应中的items元素将包含单个项的描述或项的数组。然而,它也可能包含项目[]或零,这发生在一个没有洪水警告的季节。我们将在最后的错误处理中查看该场景。
{“物品”:[{“@ id”:“http://environment.data.gov.uk/flood-monitoring/id/floods/99528”、“描述”:“Coln河及其支流”,“eaAreaName”:“西泰晤士河”,“eaRegionName”:“东南”、“floodArea”: {“@ id”:“http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln”、“县”:“格洛斯特郡”、“符号”:“061 waf06coln”、“多边形”:“http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon”,“riverOrSea”:《都格罗夫溪的科尔河》}
多边形嵌套json数据示例
多边形数据存储在http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon的polygon元素链接下,并包含定义该多边形的坐标对。下面列出了多边形数据的摘录。注意,值对存储在geometry下。
“几何”:{“类型”:“多个多边形”、“坐标”:[[[[-1.758934661685646,51.68604258983194],[-1.758826005513945,51.68598898294504],[-1.758905679948403,51.68588139134682],[-1.760186905019262,51.6852519605945],[-1.760259206697431,51.685342301483914],[-1.759446753960602,51.68571307418105],[-1.759578091859035,51.685836831189455],[-1.759519936229592,51.68589262464122],[-1.758934661685646,51.68604258983194]]]]}
存储在单独链接中的多边形数据示例
在这个例子中,一个JSON提要被读取并显示在数据检查器中。特征信息窗口显示该视图中没有几何图形,但是显示了包含多边形数据的外部链接。在研究外部链接时,我们找到了以JSON格式定义洪水多边形的坐标对。
对于这样一个嵌套的JSON文件,我们需要设置一个工作空间来访问几何图形。第一个URL只给我们一个id和一个URL,我们需要解析它来获得实际的多边形数据。本节将指导您完成这些步骤的自动化。
打开FME工作台并生成一个带有数据集的工作空间,该数据集演示了一个更复杂的JSON消息高级读取工作流。亚搏在线添加一个创建者变压器,AttributeCreator和FeatureReader变压器来创建初始请求。输入是一个JSON格式的消息,由访问的URL,并且输出将在谷歌地球中打开的KML文件。
造物主变压器添加到画布上。这种变压器来创建特征,即使数据不产生功能的结果。这需要的,没有洪水多边形数据是在当时的链接的可能性护理。
在导航窗格左侧,公布的参数下,右键单击创建新的用户参数。输入以下内容:
类型 | 文本 |
姓名 | 严重程度 |
出版 | 是的 |
可选的 | 是的 |
提示 | 严重级别1-4 |
属性赋值 | 违约 |
默认值 | 4个 |
“添加用户参数”对话框
添加AttributeCreator变压器,这将创建一个新的属性,我们将称之为“_request1”并包含严重级别作为属性值,我们将在第一场粘贴在属性值略微修改URL。网址是:https://environment.data.gov.uk/flood-monitoring/id/floods?最小严重性=$(严重性)
洪水警报有1-4级。我们将在这个练习中显示严重性级别3和4,以证明数据可以有两种错误条件或根据天气预期的洪水多边形。如果你正在运行该工作区,而当时没有洪水警报或警告实际上是由于季节看到替代方案:基于文件的工作流程在本文介绍如何使用基于文件的工作流程,而不是结束。亚搏在线
结果可能有:
属性创建者参数
在功能参数读者进入JSON格式下和数据集URL https://environment.data.gov.uk/flood-monitoring/id/floods?min-severity=4粘贴到下读卡器数据集中的部分。
点击阅读器的参数,这将打开阅读器参数对话框。在这里,我们有一次我们指定JSON查询的模式扫描模式,以便在树中选择该选项并没有如Geometry格式。选择省略号[...]打开树。输入“JSON [‘项目’] [*]”作为JSON查询点击
功能读卡器参数
读卡器配置树
点击OK 3次后,你的功能现在读入工作区,你可以保存文件。
该AttributeExposer变压器暴露出隐藏属性,使他们能够通过其它变压器使用。该变压器连接到FeatureReader
添加StringLengthCalculator并将其连接到以前的变压器。分配“floodArea.polygon”作为参数源属性,并接受“_length”作为StringLength属性默认。
我们将演示阅读的情况下,所产生的功能不包含几何此JSON消息的选项。当加入本测试仪变压器,测试器的输出将通过两个变压器被读入。如果有几何它传递的特性,让HTTPCaller。如果测试失败,并且不包含任何几何形状,我们希望通过AttributeCreator到输出显示到传递的消息。这是一个错误处理方案。
添加测试变压器,并将其连接到StringLengthCalculator。在左边的值类型,或从下拉菜单中选择选择“_length”。之所以选择“>”作为运营商和类型“0”作为权的价值。单击确定。
测试仪参数
一个AttributeCreator连接到测试仪上的失败输出端口。那么它的输出端口连接到作家。在参数输入以下内容:
新属性 | 属性值 |
消息 | 严重性级别$(严重性)没有洪水特征多边形 |
克米尔 | 无洪水特征 |
KML_U说明 | 严重性级别$(严重性)没有洪水特征 |
属性创建者处理消息
本次AttributeCreator因为它通过测试仪的故障端口结果作家连接到作家。
添加HTTPCaller变压器,并将其连接到测试仪上的变压器传递的输出端口。根据请求的URL“floodArea.polygon”指定的HTTP方法应设置为GET和确保响应主体属性isset到“_response_body”。接受一切的默认值。单击确定。这个请求URL的结构来自于文件。
“floodArea”:{ “多边形”: “http://environment.data.gov.uk/flood-monitoring/id/floodAreas/061WAF06Coln/polygon”}
多边形数据结构摘录
下一步我们将增加在JSONFragmenter。由于该文件的结构嵌套,我们需要另一个查询更深下井到文件的结构,以获取几何形状。坐标数据是特征和几何形状内。输入以下内容:
json属性 | _反应体 |
JSON查询 | json[“features”][*][“geometry”] |
将查询结果展平为属性 | 是的 |
递归展平对象/数组 | 不 |
jsonfragmenter参数
这样做的原因查询结构嵌套。
{ “类型”: “的FeatureCollection”, “特征”:[{ “类型”: “功能”}, “几何”:{ “类型”: “的MultiPolygon”, “坐标”:[[[[-1.758934661685646,51.68604258983194]]]}}
压缩数据结构
另一个AttributeExposer变压器将被添加到工作流程下一个。亚搏在线在添加参数“几何”和“floodAreaID”。单击确定一次输入到空白字段。
设置几何图形编码GeoJSON的,然后在点击省略号[...]旁的符号几何源看到的文本编辑器。在文本编辑器设置源参数@Value(_response_body)双击“_response_body”,你会看到在现场设置右边的参数。最后,设置删除属性选项:“不”。
geometryreplacer参数
一个CoodinateSystemSetter添加对GeometryReplacer输出端口,并设置坐标系,以ESPG:4326。
下一步,我们将重复加入,以前AttributeCreator。在附加到测试仪上的失败输出端口AttributeCreator单击鼠标右键,然后单击复制。复制的AttributeCreator连接到在CoordinateSystemSetter输出端口。
属性创建者参数
连接输出到KMLStyler然后到FloodAreas作家。设置KML造型的颜色参数为您选择的颜色。例如绿颜色,填充颜色为蓝色,不透明0.3,填充不透明度0.4。运行与重定向数据查验工作区。笔者格式将KML和数据集的路径将被设置。
已完成的工作区
当选择严重性3的洪水警报,并有洪水警报生效同时运行时,完成工作空间将这个样子。运行时会提示你的工作空间,其严重程度,你想选择。如果你只得到1周的结果在FeatureReader发起者端口,这意味着没有洪水警报已生效。我们将在年底错误处理部分处理这个问题。
当重定向到数据检查已开启您的结果将类似于此,取决于有多少领域有洪水警报和警报发布。该数据检查将显示洪水多边形生成的特征记录。这个例子说明了如何使用URL和写入KML文件中读取一个JSON格式的复杂信息。
使用数据检查器整体应用多边形视图
当重定向到数据检查被关闭,你的结果将是一个KML文件。点击JSON特写作家打开包含文件夹,然后双击该KML文件,将在谷歌地球打开。您将看到您在KML造型或一条消息,提醒您没有洪水警告在当前时间发出选择了颜色突出了洪水的多边形。
google earth中的kml文件以您选择的颜色显示突出显示的泛光多边形
只有在某些季节和洪水造成的多边形不一定出现在任何时候都洪水警报发生。如果您正在测试这个工作流程中的低预期洪水的季节,亚搏在线您将收到一条消息作为输出。当洪水警报或警告存在,与洪水特性相关的洪水面将具有以下变压器顺序进行处理。
在谷歌地球输出KML文件看起来像这样当发现此严重性级别没有任何特点。有可能是多边形上市和其他但是严重性级别显示。
在本例中,当找不到任何功能时将在Google Earth中显示的消息
使用本教程中创建的原始工作区,添加一个测试变压器的
所述一个AttributeCreator将被连接到测试仪通过端口来处理没有结果的功能。该变压器发生故障的端口连接到作家和传递,有没有功能的消息。这种情况下实际上是当阵列是空的。
其他AttributeCreator将处理从失败的测试端口的结果,并会在发送的情况下链接没有洪水的多边形并没有任何特点被发现输出消息。设置参数如下:
复制AttributeCreator_2和调整消息。然后将其连接到测试仪上的过去的输出端口。此AttributeCreator将处理从测试仪通过端口的结果,并在壳体的数组为空将发送输出消息。
新属性 | 属性值 |
消息 | 没有严重性级别$(严重性)的功能 |
克米尔 | 找不到功能 |
KML_U说明 | 没有严重性级别$(严重性)的功能 |
重复这个新AttributeCreator并将其连接到测试仪的故障端口。然后将其连接到作家。这种情况下实际上是当严重性级别选择不具有例如电平1洪水警报。连接这两个新创建AttributeCreators的作家。得到的消息可以在数据检查器或谷歌地球可以看到。
一个记录器连接到
这个练习演示了如何读取JSON格式是复杂和嵌套的消息。因此,它可以被认为是先进的阅读例子,展示了如何访问隐藏的几何形状在英国环境机构的洪水警报API的嵌入式链接。
而此时洪水警告API不包含洪水的多边形和上述工作流程时间只能说明没有几何体,那么你可以使用我们的基于文件的数据集flood_ID_Apr7.json。亚搏在线使用此完成工作区:EX3-readadv文件-floodareas-json2kml.fmwt和输入:flood_ID_Apr7.json。输出是:EX3-readadv文件,output.kml。
json入门
从JSON转换为空间格式(GIS)
请注意,本文使用的是环境署洪水和河流水位数据,这些数据来自实时数据api(beta),该api是在open government license v3.0下获得许可的。
©2019安全亚搏在线软件公司|法律