西班牙
斯潘4
本文将继续探讨如何使用fme进行api调用。我们以前通过JSON阅读器是的。此方法是在fme中使用api的最简单方法,使用硬编码的请求url从AirVisual的REST API是的。由于读卡器没有输入端口,我们无法使用其他数据集的属性值进行动态API调用。为了创建提供更大的灵活性和功亚搏在线能性的API工作流,我们推荐了几种变压器。
下面的演示将提供有关如何使用三个不同的转换器访问airvision的api的说明,它们都会生成与以前的教程是的。本演示的目的是比较允许用户访问api的转换器。它们都提供了不同的好处,并且根据API的需求和所需的输出具有最佳的用例。
我们将通过FeatureReader, theJSONExtractor和HTTPCaller是的。我们将从最简单的方法到最复杂的方法,描述主要的差异,并为每个变压器推荐用例。每个方法的可用性将取决于响应格式和api的要求。airvision的API可以从每个变压器访问,因为:
要创建kml文件,这三个方法的前几个步骤都是相同的。如果已经从airvision检索到API密钥,则可以继续此演示。如果没有,请按照如何使用json读取器访问api文章检索您自己的API密钥。如果你想跟随使用安全软件总公司的坐标,请使用以下请求URL:亚搏在线
http://api.airvisual.com/v2/nearest_city?lat=49.178&lon=-122.842&key=
从启动页面中选择New workspace以打开空白画布。
参数可以保留为默认值,因为此转换器仅用于初始化工作区,而不必输入数据。如果您想创建一个动态请求URL,您可以使用包含有效GPS坐标和API键的现有工作流来替换创建者,因为这是请求URL所需的三个元素。亚搏在线出于本演示的目的,我们将使用一个创建者来确保每个方法是可比较的和一致的。
FeatureReader是一个转换器,它的作用类似于阅读器,但在转换过程中被合并到工作流中。亚搏在线这意味着有一个输入端口需要启动才能读取特性。与典型的阅读器一样,FeatureReader也可以读取JSON,将值输出到具有指定坐标系统的属性中。FeatureReader和reader之间的主要区别在于输入端口的存在,它允许在转换过程中读取数据。这种API方法的最佳用例应该包括以下情况:
FeatureReader工亚搏在线作流程
将您的创建者连接到FeatureReader的启动程序端口。在参数中,将格式设置为JSON (JavaScript对象表示法),将坐标系统设置为LL84。这将确保在创建点特性时正确解释纬度和经度值。数据集将是您的API键被替换的请求URL
运行带有功能缓存的工作空间,以便在可视化预览中查看输出。选择JSONFeature输出端口,在Visual Preview (Ctrl + Alt + F)中打开Feature Information窗口,查看属性列表。与JSON阅读器一样,响应中的每个值都被压缩成一个属性。
其余步骤来创建的几何形状,管理属性和写入KML是相同的5至9覆盖在与步骤如何使用json读取器访问api文章。对于每个以下步骤的详细说明,请参阅链接的文章。
将VertexCreator连接到FeatureReader的JSONFeature输出端口。AirVisual返回JSON数组中最近的监测站的坐标。因为这些值被读入FME as列表中的属性,您必须通过其索引指定要使用的值,该索引在花括号之间表示。注意,JSON索引从0开始,而不是1。
在VertexCreator的参数中,将X值设置为坐标数组(经度)中的第一个对象data.location。坐标{0},Y值作为第二个(纬度),data.location.coordinates{1}。
添加一个AttributeManager并打开参数。双击Output属性下的单元格以重命名属性。重命名以下属性:
使用表下的黑色箭头来安排输出属性的顺序。要删除额外的属性,请使用Ctrl或Shift单击选择它们的行,然后单击表下面的减号按钮。删除其余属性。
为输出的.kml文件选择一个文件目录和名称。如果尚未设置特性类型定义,则将其更改为Automatic,然后单击OK。当出现功能类型窗口时,将功能类型名称重命名为MonitoringStation_FeatureReader。将AttributeManager输出端口连接到KML写入器特性类型。
单击工具栏中的绿色Run按钮,如果转换成功,转到您的文件目录以确保编写了.kml文件。
在谷歌Earth中,选择File→Open→.kml文件
视图应该自动缩放到您最近的监测站的位置。单击pin查看属性数据。
FME桌面有各种各样的json专用的变压器。它们中的大多数允许JSON输入源是一个URL,这意味着这些工具非常适合读取、解析和验证从web获得的JSON数据。特别是JSONExtractor提供了最佳的解析能力,允许用户轻松地从JSON格式的嵌套值中创建特性属性。与JSON阅读器或FeatureReader不同,JSONExtractor不会自动创建JSON文本中每个值的属性。用户必须从JSON查询中选择所需的输出属性。使用此转换器的好处是,您将仅从API响应输出所需的内容。这是一个方便的特性,可以限制稍后在工作区中处理属性的数量,并且在API响应返回许多属性值时特别有用。这种API方法的最佳用例应该包括以下情况:
JSONExtractor工亚搏在线作流程
将您的创建者连接到JSONExtractor输入端口并打开参数。将输入源更改为file/url,然后将请求url复制到file/url参数中,替换airvision键
json查询(javascript属性访问器在本例中)通过将数据分段到其嵌套级别来描述属性的路径。如果您需要的值是深度嵌套的,那么json查询将更长。我们将从json树中选择每个查询,而不是手动输入查询。
首先在jsonextractor参数中填写target属性列。这包括我们以前使用的八个属性名,加上纬度和经度。
接下来,选择JSON查询列下的空白空间来公开椭圆。选择省略号以查看json树。使用箭头展开JSON,直到找到正确的属性。例如,要找到“城市”,我们只需要扩展“数据”。单击“确定”时,空白区域将自动填充您的JSON查询。
有些属性很难识别,因为它们不像城市、州和国家那样不言自明。对于这些缩写值,您必须引用API文档解码你的反应。其他属性将在数组中返回,例如坐标值。要指定所需的数组值,请首先选择
与json阅读器和featurereader不同,纬度和经度属性可以直接输入到vertecreator中,而不必担心数组,因为我们已经在上一步中分离了坐标。将x值设置为经度属性,将y值设置为纬度。
由于没有在jsonextractor中设置坐标系的选项,我们必须使用coordinatesystemsetter来指定如何读取x和y值。将坐标系设置为ll84。
添加AttributeManager并打开其参数。您将注意到,只有您提取的10个原始属性,加上创建者的产品“创建”实例。使用出现在“操作”列下的单元格中的下拉菜单,删除“创建”实例、纬度和经度属性。
为输出的.kml文件选择一个文件目录和名称。如果尚未设置特性类型定义,则将其更改为Automatic,然后单击OK。在出现“要素类型”窗口提示时,将要素类型名称重命名为MonitoringStation_jsonextractor。将AttributeManager输出端口连接到KML写入器特性类型。
单击工具栏中的绿色Run按钮,如果转换成功,转到您的文件目录以确保编写了.kml文件。
在谷歌Earth中,选择File→Open→.kml文件
视图应该自动缩放到您最近的监测站的位置。单击pin查看属性数据。
HTTPCaller设备完善,可以处理数千个api,而无需编码。它使用指定的HTTP/HTTPS方法访问请求URL,可以选择通过用户名/密码、命名连接、头或上载的实体进行身份验证。对于请求,用户可以选择修改其查询字符串参数、头,如果要放置、发布、修补或删除,则可以选择上载正文。响应可以保存到属性或文件中,同时在响应头中提供错误和状态代码。此api方法的用例将包括以下情况:
HTTPCaller工亚搏在线作流程
将创建者连接到输入端口并打开参数。为了提高可读性,请使用查询字符串参数分解请求URL的组件。使用设置为get的http方法输入以下url作为请求url。
http://api.airvision.com/v2/最近的城市?
HTTPCaller允许您添加URL查询字符串作为转换器参数。在“名称”列下输入lat、lon和key,然后在“值”列下输入49.178、-122.842和api键,其中
在启用了功能缓存的情况下运行工作区,以便在可视化预览中查看响应正文。如果使用提供的坐标,则“响应”body属性应返回类似的内容:
{“status”:“success”,“data”:{“city”:“New Westminster”,“state”:“British Columbia”,“country”:“Canada”,“location”:{“type”:“Point”,“coordinates”:[-122.910919999999,49.20678]},“current”:{“weather”:{“ts”:“2019-05-17T16:00:00.000Z”,“hu”:71,“ic”:“01d”,“pr”:1008,“tp”:12,“wd”:160,“ws”:3.6},“pollution”:{“ts”:“2019-05-17T15:00.000Z”,“aqius”:12,“mainus”:“p2”,“aqicn”:24,“maincn”:“n2”}}}}}
我们必须手动创建查询,因为jsonextractor在从属性读取json文档时不显示json树。因此,我们应该格式化JSON,以便读取其结构来构造查询。
我们可以用JSONFormatter是的。将httpcaller输出连接到jsonformatter,并将json文档设置为您的响应体属性。将其余参数保留为默认值,然后单击“确定”。在启用了功能缓存的情况下运行工作区,以便在可视化预览中查看重新格式化的JSON。你应该看到类似的东西:
{“status”:“success”,“data”:{“city”:“New Westminster”,“state”:“British Columbia”,“country”:“Canada”,“location”:{“type”:“Point”,“coordinates”:[-122.9109199999999,49.20678]},“current”:{“weather”:“ts”:“2019-05-17T16:00:00.000Z”,“hu”:71,“ic”:“01d”,“pr”:1008,“tp”:12,“wd”:160,“ws”:3.6}“污染”:{“ts”:“2019-05-17T15:00:00.000Z”,“aqius”:12,“mainus”:“p2”,“aqicn”:24,“maincn”:“n2”}}}}}}}}
json文本现在使用缩进和空格进行格式化,以提高可读性。嵌套结构布局清晰,便于构造JSON查询是的。例如,如果我们想根据美国的空气质量指数查询主要污染物,我们可以看到“mainus”嵌套在“pollution”下面,而“pollution”嵌套在“current”下面,而“data”嵌套在“current”下面。使用此逻辑,我们可以创建一个json查询:
json[“数据”][“当前”][“污染”][“主要”]
要查询数组中的值,例如监视站的坐标,您可以使用相同的逻辑,但是要在数组中指定对象,必须指定一个位置号。例如,经度的json查询是:
json[“数据”][“位置”][“坐标”][0]
我们使用零表示经度,因为它是数组中的第一个值。如果我们想指定纬度,我们将使用1作为方括号之间的位号。
在jsonextractor中,将json文档设置为响应体或格式化。它们都包含相同的JSON文本,但其中一个是用缩进和空格格式化的。重新格式化不会影响JSON查询的执行方式。
使用每个输出属性的名称填写目标属性列,如下所示:
在json查询列下,使用上一步中描述的逻辑用相应的查询填充每个单元格。在另一个窗口(如记事本)中打开重新格式化的响应正文可能会有所帮助。请参阅API文档解码响应体中的缩写值。
纬度和经度属性可以直接输入到vertecreator中,而不必担心数组,因为我们在前面的步骤中已经分离了坐标。将x值设置为经度属性,将y值设置为纬度。
由于没有在httpcaller中设置坐标系的选项,我们必须使用coordinatesystemsetter来指定如何读取x和y值。将坐标系设置为ll84。
添加AttributeManager并打开其参数。删除创建实例、响应体、http状态代码、经度、纬度和格式,方法是使用“操作”列下的下拉菜单选择“删除”。
为输出的.kml文件选择一个文件目录和名称。如果尚未设置特性类型定义,则将其更改为Automatic,然后单击OK。在出现“功能类型”窗口提示时,将功能类型名称重命名为MonitoringStation_HTTPCaller。将AttributeManager输出端口连接到KML写入器特性类型。
单击绿色的运行按钮,如果转换成功,请转到文件目录以确保保存了.kml文件。
在谷歌Earth中,选择File→Open→.kml文件
视图应该自动缩放到您最近的监测站的位置。单击pin查看属性数据。
所描述的三种方法中的每一种都将生成相同的.kml文件,因此如果使用提供的坐标,则在所有三种情况下都应看到类似的内容:
输出.KML文件包含了解析,改名重新排序,8个属性FME中使用不同的变压器。在考虑最终产品,最有效的方法是JSONExtractor,因为它使我们能够筛选出选择值,限制属性在工作流后处理量。亚搏在线此外,JSON树使我们能够轻松地创建查询,而不需要JSON格式的任何先前的知识。如果我们希望每一个响应值是一个输出属性,那么FeatureReader将是最好的选择。虽然HTTPCaller方法包含在JSONExtractor还有,我们不得不因为JSON树不是可用的功能,当输入数据源是动态的手动输入查询。用这种方法,就必须有两个API和JSON的工作知识,因为有更多的手动输入。
该HTTPCaller提供了访问的API是最用户控制,但本文的目的,这些特征不突出。有关如何利用HTTPCaller的功能的演示,请访问下一篇文章在API系列“如何访问使用HTTPCaller的API”。您将学习如何访问Movebank REST API返回包含活的动物运动数据的.csv文件。
?2019安全亚搏在线软件公司|合法的