斯潘8
斯潘4
本文将继续探讨使用FME进行API调用。我们以前通过JSON读者.这种方法是在FME中使用API的最简单方法,使用硬编码请求URL从AirVisual的REST API.鉴于读卡器没有输入端口,我们无法使用其他数据集中的属性值进行动态API调用。要创建提供更大灵活性和功能的亚搏在线API工作流,我们推荐几种变压器。
以下演示将提供有关如何使用三种不同的变压器访问AirVisual的API的说明。所有生成的输出kml文件与上一个教程.本演示的目的是比较允许用户访问API的变压器。它们都提供了明显的好处,并且根据API的要求和所需的输出具有最佳的用例。
我们将通过特技演员,这个超声波提取机,以及电视传真机.我们将从最简单到最复杂的每一种方法,描述每个变压器的主要区别并推荐使用案例。每个方法的可用性将取决于响应格式和API的要求。AirVisual的API可以从每个变压器访问,因为:
要创建kml文件,这三种方法的前几步将是相同的。如果您已经从airvisual中检索到API密钥,您可以继续此演示。如果不是,按照中的步骤1和2如何使用JSON阅读器访问API文章检索您自己的API密钥。如果您想使用SAFE软件总部的坐标进行跟踪,亚搏在线请使用以下请求URL:
http://api.airvisual.com/v2/最近的城市?lat=49.178&lon=-122.842&key=
从“启动”页面中选择“新建工作区”以打开空白画布。
参数可以保留为默认值,因为此转换器仅用于启动工作区而无需输入数据。如果要创建动态请求URL,您可以用包含有效GPS坐标和API密钥的现有工作流替换创建者,亚搏在线因为这是请求URL唯一需要的三个元素。就本演示而言,我们将使用一个创建者来确保每个方法都是可比较和一致的。
FeatureReader是一个类似于阅读器的转换器,但它被合并到工作流的中间翻译中。亚搏在线这意味着有一个输入端口需要启动才能读取该功能。就像一个典型的读者,FeatureReader也可以读取json,将值输出到具有指定坐标系的属性中。FeatureReader和Reader的主要区别在于输入端口的存在,允许在翻译过程中读取数据。此API方法的最佳用例将包括以下情况:
FeatureReader工亚搏在线作流
将创建者连接到FeatureReader的发起程序端口。在参数中,将格式设置为JSON(javascript对象表示法),将坐标系设置为LL84。这将确保在创建点特征时正确解释纬度和经度值。数据集将是用您的API密钥替换的请求URL,其中
在启用功能缓存的情况下运行工作区,以在视觉预览中查看输出。选择JSonfeature输出端口,并在可视化预览(ctrl+alt+f)中打开Feature Information窗口以查看属性列表。像JSON阅读器一样,响应中的每个值都被展平为一个属性。
创建几何图形的其余步骤,管理属性和写入kml与如何使用JSON阅读器访问API文章。有关以下每个步骤的详细说明,请参阅相关文章。
从FeatureReader将VertexCreator连接到JSonFeature输出端口。airvisual返回JSON数组中最近监测站的坐标。因为这些值被作为列表属性,您必须指定其索引要使用的值,在花括号之间显示。注意,JSON索引从0开始,而不是从1开始。
在VertexCreator的参数中,将X值设置为坐标数组(经度)中的第一个对象,数据.位置.坐标0,Y值作为第二个(纬度),数据。位置。坐标1。
添加一个attributeManager并打开参数。双击“输出属性”下的单元格以重命名属性。重命名以下属性:
使用表下面的黑色箭头排列输出属性的顺序。要删除额外的属性,使用ctrl或shift-click选择行,然后单击表下面的减号按钮。删除其余属性。
为输出.kml文件选择一个文件目录和名称。如果尚未设置要素类型定义,请将其更改为“自动”,然后单击“确定”。当出现“Feature Type(功能类型)”窗口提示时,将功能类型名称重命名为“MonitoringStation_FeatureReader”。将attributeManager输出端口连接到kml writer功能类型。
单击工具栏中的绿色运行按钮,如果转换成功,转到您的文件目录以确保已写入.kml文件。
在谷歌地球上,转到文件→打开→您的.kml文件
视图应自动缩放到最近监测站的位置。单击管脚以查看属性数据。
FME桌面有各种特定于JSON的变压器。其中大多数允许JSON输入源是一个URL,这意味着这些工具非常适合阅读,解析,以及验证从Web获取的JSON数据。特别是JSonextractor提供了最好的解析能力,允许用户从JSON格式的嵌套值中轻松创建特性属性。不像JSON阅读器或FeatureReader,JSonextractor不会自动从JSON文本中的每个值中创建属性。用户必须从JSON查询中选择所需的输出属性。使用这个转换器的好处是,您将只从API响应中输出所需的内容。这是一个方便的特性,可以限制稍后在工作区中处理属性的数量,并且在API响应返回许多属性值时特别有用。此API方法的最佳用例将包括以下情况:
JSonextractor工亚搏在线作流
将创建者连接到JSonextractor输入端口并打开参数。将输入源更改为file/url,然后将请求URL复制到file/url参数中,在哪里替换您的AirVisual键
JSON查询(javascript特性访问器在本例中)通过将数据分割到其嵌套级别来描述属性的路径。如果您需要的值被深度嵌套,您的JSON查询将更长。而不是手动输入您的查询,我们将从JSON树中选择每一个。
首先在JSonextractor参数中填写目标属性列。这包括我们以前使用的八个属性名,加上纬度和经度。
下一步,选择JSON查询列下的空格以显示椭圆。选择省略号以查看JSON树。使用箭头展开JSON,直到找到正确的属性。例如,寻找“城市”,我们只需要扩展“数据”。单击“确定”时,空白空间将自动填充您的JSON查询。
有些属性很难识别,因为它们不像城市那样一目了然,州和国家。对于这些缩写值,你必须参考API文档解读你的回答。其他属性将在数组中返回,例如坐标值。要指定所需的数组值,第一选择
不像JSON阅读器和FeatureReader,纬度和经度属性可以直接输入到VertexCreator中,而不必担心数组,因为我们在前面的步骤中已经分离了坐标。设置X值作为经度属性,Y值作为纬度。
由于在JSonextractor中没有设置坐标系的选项,我们必须使用coordinateSystemsetter来指定如何读取x和y值。将坐标系设置为LL84。
添加一个attributeManager并打开其参数。您会注意到,只有您提取的十个原始属性,再加上创建者的产品\创建\实例。删除创建实例,通过使用出现在“操作”列下的单元格中的下拉菜单,可以获得纬度和经度属性。
为输出.kml文件选择一个文件目录和名称。如果尚未设置要素类型定义,请将其更改为“自动”,然后单击“确定”。当功能类型窗口提示时,将功能类型名称重命名为MonitoringStation_jsonextractor。将attributeManager输出端口连接到kml writer功能类型。
单击工具栏中的绿色运行按钮,如果转换成功,转到您的文件目录以确保已写入.kml文件。
在谷歌地球上,转到文件→打开→您的.kml文件
视图应自动缩放到最近监测站的位置。单击管脚以查看属性数据。
httpCaller设备齐全,可以处理数千个API,而无需编码。它使用指定的http/https方法访问请求URL,通过用户名/密码进行身份验证,命名连接,报头,或上传的正文。根据要求,用户可以选择修改其查询字符串参数,报头,如果他们要放,邮政,修补或删除,有上载正文的选项。响应可以保存到属性或文件中,同时在响应头中提供错误和状态代码。此API方法的用例将包括以下情况:
httpCaller工亚搏在线作流
将创建者连接到输入端口并打开参数。为了提高可读性,使用查询字符串参数拆分请求URL的组件。输入以下URL作为请求URL,并将HTTP方法设置为get。
http://api.airvisual.com/v2/最近的城市?
httpCaller允许您添加URL查询字符串作为转换器参数。进入LAT,lon,在“名称”列下键入,然后输入49.178,小精灵,以及值列下的API键,其中
在启用了功能缓存的情况下运行工作区,以在可视预览中查看响应正文。如果使用提供的坐标,响应主体属性应该返回类似于以下内容的内容:
“状态”:“成功”,“数据”:;“城市”:“新威斯敏斯特”,“状态”:“不列颠哥伦比亚”,“国家”:“加拿大”,“位置”:;“类型”:“点”,“坐标”:[-122.9109199999999-122.91091999999999999,49.20678],”,“当前”:;“天气”:;“TS”:“2019-05-17t16:00:00.000z”,“胡”:71,“胡”:71,“IC”:“01D”,“PR”:1008,“TP”:12,“WD”:160,“WS”:3.6,“国家”:“加拿大”,“国家”,“国家”:“加拿大”,“位置”:,“位置”:;“类型”:;“点”,“点”,:00.000Z,“Aqius”:12,“Mainus”:“P”2,“aqicn”:24,“maincn”:“n2”
我们必须手动创建查询,因为JSonextractor在从属性读取JSON文档时不显示JSON树。因此,我们应该格式化JSON,以便能够读取其结构来构造查询。
我们可以用JSON格式器.将httpcaller输出连接到JSonformatter,并将JSON文档设置为您的响应主体属性。将其余参数保留为默认值,然后点击确定。在启用功能缓存的情况下运行工作区,以在可视化预览中查看重新格式化的JSON。您应该看到类似的内容:
“status”:“成功”,“data”:“city”:“新威斯敏斯特”,“state”:“不列颠哥伦比亚”,“country”:“加拿大”,“location”:“type”:“点”,“坐标”:[-122.910919999999,49.20678],“current”:“weather”:“ts”:“2019-05-17t16:00:00.000z”,“胡”:71,“IC”:“01D”,“PR”:1008,“TP”:12,“WD”:160,“ws”:3.6,“pollution”:“ts”:“2019-05-17t15:00:00.000z”,“阿丘斯”:12,“mainus”:“p2”,“AQICN”:24,“maincn”:“n2”
JSON文本现在使用缩进和空格进行格式化,以提高可读性。嵌套结构布局清晰,使施工更容易JSON查询.例如,如果我们想根据美国的空气质量指数查询主要污染物,我们可以看到“mainus”嵌套在“pollution”下,后者嵌套在“current”下,后者嵌套在“data”下。使用这个逻辑,我们可以创建一个JSON查询:
json[“数据”][“当前”][“污染”][“缅因州”]
要查询数组中的值,比如监测站的坐标,你会用同样的逻辑,但是要在数组中指定一个对象,必须注明地点编号。例如,json经度查询为:
JSON[“数据”][位置”][坐标”][0]
我们使用零来表示经度,因为它是数组中的第一个值。如果我们想指定纬度,我们将使用1作为方括号之间的位置号。
在jsonextractor中,将JSON文档设置为“响应”正文或“格式化”。它们都包含相同的JSON文本,但其中一个是用缩进和空格格式化的。重新格式化不会影响JSON查询的执行方式。
使用每个输出属性的名称填写目标属性列,如下所示:
在json查询列下,使用上一步中描述的逻辑,用相应的查询填充每个单元格。在另一个窗口(如记事本)中打开重新格式化的响应正文可能会有所帮助。参考API文档解码响应正文中的缩写值。
纬度和经度属性可以直接输入到VertexCreator中,而不必担心数组,因为我们在前面的步骤中已经分离了坐标。设置X值作为经度属性,Y值作为纬度。
由于在httpcaller中没有设置坐标系的选项,我们必须使用coordinateSystemsetter来指定如何读取x和y值。将坐标系设置为LL84。
添加一个attributeManager并打开其参数。删除创建实例,γ反应体_ http_状态代码,经度,使用“操作”列下的下拉菜单选择“删除”来设置纬度和\的格式。
为输出.kml文件选择一个文件目录和名称。如果尚未设置要素类型定义,请将其更改为“自动”,然后单击“确定”。当出现“功能类型”窗口提示时,将功能类型名称重命名为MonitoringStation_httpCaller。将attributeManager输出端口连接到kml writer功能类型。
单击绿色的运行按钮,如果翻译成功,转到文件目录以确保.kml文件已保存。
在谷歌地球上,转到文件→打开→您的.kml文件
视图应自动缩放到最近监测站的位置。单击管脚以查看属性数据。
上述三种方法中的每一种都将生成相同的.kml文件,所以如果你使用提供的坐标,在这三种情况下,您应该看到类似的情况:
输出.kml文件包含八个已分析的属性,在FME中使用不同的变压器重新命名和排序。在考虑最终产品时,最有效的方法是jsonextractor,因为它允许我们过滤掉选择的值,限制稍后在工作流中处理属性的数量。亚搏在线此外,JSON树允许我们轻松地创建查询,不需要任何先前的JSON格式知识。如果我们希望每个响应值都是输出属性,那么,最好的选择就是羽毛球。尽管httpCaller方法也包含一个jsonextractor,我们必须手动输入查询,因为当输入数据源是动态的时,JSON树不是一个可用的特性。用这种方法,有必要同时掌握API和JSON的工作知识,因为有更多的手工输入。
httpCaller在访问API时提供了最多的用户控件,但就本条而言,这些功能没有突出显示。为了演示如何利用httpcaller的特性,参观下一篇文章在API系列“如何使用httpcaller访问API”中。您将学习如何访问movebank rest API,该API返回包含活动动物移动数据的.csv文件。
?2019安全亚搏在线软件公司|合法的