如何使用HTTPCaller访问API
近年来兴起了一种社会化网络热潮。随着社交网络的发展,产生了大量的用户数据。如何有效的从大量的数据中提取到对我们有用的数据,已成为数据挖掘领域中极为重要的问题。
以下通过实际的案例为大家介绍如何使用FME做网络数据提取。
博客原文地址:
https://knowledge.safe.com/articles/92720/how-to-access-an-api-using-the-httpcaller.html
如何使用HTTPCaller访问API
1 介绍
本文将提供有关如何使用HTTPCaller访问Movebank的REST API的说明。Movebank是一个公共数据库,包含来自世界各地科学研究的动物运动数据。在本次演示中,HTTPCaller将从不列颠哥伦比亚省的一项研究中返回一只秃鹰的运动数据。提供的模板内允许用户从十个标记的鸟类中挑选一个作为研究对象。使用HTTPCaller转换器从Movebank网页中下载鹰运行的API数据,接收相关的动态运动轨迹及时间信息。使用每个GPS读数的时间戳,我们将按季节对点位置进行分类,以创建一个GeoJSON,显示全年的鹰的迁移模式。
Movebank的API需要基本身份验证,可以使用FME中的三种不同方法完成:
(1)HTTPCaller中的“身份验证”选项 - 选中“使用身份验证”框并指定“基本”作为身份验证方法。将您的Movebank用户名和密码直接填入HTTPCaller。该方法将用于以下演示。
(2)HTTPCaller中的Headers参数 - 使用Authorization标头并使用以下格式在Base64中对您的Movebank用户名和密码进行编码:username:password
(3)Web连接 - 从工具→FME选项→Web连接创建HTTP身份验证服务。经过身份验证后,您应该可以从HTTPCaller中进行选择。此方法允许您使用FME Server安全地共享凭据。
虽然Movebank API提供了返回JSON数据的请求URL,但我们感兴趣的请求URL仅返回CSV。由于我们每次运行都在修改请求URL,因此HTTPCaller中的查询字符串参数将用于提高可读性并合并用户参数。因为我们正在对需要基本身份验证并返回CSV数据的API进行动态调用,所以Movebank是在HTTPCaller中处理的理想API。
2 说明
(1)创建Movebank帐户以获取动物跟踪数据的权限
由于Movebank数据由相应研究的所有者管理,因此数据访问权限可能因所需数据集而异。虽然有些研究要求用户阅读并接受他们的使用条款,但我们感兴趣的数据只需要用户名和密码。要开始使用,请创建一个Movebank帐户。系统将指示您检查包含临时密码的立即发送的电子邮件。按照要求您更改密码的链接进行操作。创建新密码后,单击网页顶部的“跟踪数据地图”选项卡。
(2)查看秃鹰研究的元数据
使用搜索栏,输入“Bald Eagles”并放大加拿大西部。你应该在卑诗省温哥华附近看到一个绿点。单击该点以查看其他信息,然后选择“在研究页面中打开”。
研究细节概述了Movebank和数据所有者提供的所有相关信息。请注意Movebank ID号,它是访问本研究中数据的唯一键。我们稍后将其用作请求URL中的参数。另请注意,虽然研究中有12只动物,但只有10个跟踪标记。这将影响我们稍后创建的用户参数,以便为用户提供鹰列表。
(3)查看Movebank的API文档
Movebank的API文档在GitHub上共享,其中还详细说明了其他安全性,数据访问和身份验证信息。由于我们正在创建允许用户在运行时选择特定老鹰的工作流程,因此请从内容中选择“从研究中获取有关动物的信息”。请注意,我们将用于获取唯一eagle ID列表的请求URL将采用以下格式:
从内容中选择“获取单个动物的事件数据”。请注意,我们将用于获取所选鹰的跟踪数据的请求网址将采用以下格式:
(4)启动FME Workbench
从启动页面中选择“新建工作区”以打开空白画布。
(5)添加Creator作为工作区的触发器
参数可以保留为默认值,因为此变换器仅用于启动工作区而无需输入数据。
(6)添加HTTPCaller以设置对Movebank的第一次调用
将Creator连接到HTTPCaller的输入端口并打开参数。我们对Movebank API的第一次调用将使用请求URL来获取有关研究中动物的信息。使用以下请求URL并将HTTP方法设置为GET:
通过从Save Response Body To下拉菜单中选择File,更改响应正文的保存位置。对于输出文件名,选择省略号以选择目录,确保将“.csv”作为文件扩展名添加到输出的名称中。
选中“使用身份验证”复选框。选择Basic作为身份验证方法,然后输入您的用户名和密码。
(7)运行工作空间以确保CSV文件保存在正确的目录中
单击绿色的“运行”按钮,转换成功后,检查目录以确保文件已保存。在文本编辑器或Microsoft Excel中打开文件以查看数据。第五列将显示我们将作为用户参数输入的各个鸟ID。
(8)创建用户参数以在运行时选择单个鹰
右键单击导航窗格中的用户参数,然后选择创建用户参数。将类型设置为选项。此参数将在运行时为用户提供鸟ID的下拉列表。将您的用户参数命名为individual_id,并将提示设置为单个鸟ID:。取消选中“可选”框以确保每次运行都选择了一个ID。选择“配置”旁边的省略号,然后单击“导入”按钮。导入向导将打开,提示您输入格式和数据集。将格式设置为CSV,然后从上一步选择CSV文件作为数据集。
单击下一步,然后选择属性值作为导入模式。
单击Next并选择id作为您的Choice List。
单击“导入”,将显示12个单独的鹰ID列表。单击“确定”,“配置”框将自动填充您的数据。确保取消选中“可选”(这是必需选项),默认值保持空白,然后单击“确定”。
(9)返回HTTPCaller以再次调用Movebank API
自从我们完成此请求后,我们将重用之前的HTTPCaller。下一个请求网址将从我们的老鹰研究中接收个人的跟踪数据:
我们将使用查询字符串参数来分解URL的组件。在请求URL字段中输入以下URL并将方法设置为GET:
在Query String Parameters的Name列下输入entity_type,study_id和individual_id作为三个不同的行。在“值”列中,将实体类型设置为事件,将研究ID设置为430263960.对于单个ID,单击单元格内部时单击“值”列中显示的箭头。将光标向下移动到User Parameter,然后选择individual_id。
将输出文件名更改为您选择的目录,将文件重命名为TrackingData.csv。
(10)运行工作区以确保HTTPCaller正常工作
通过单击顶部工具栏上的“运行”,然后单击“提示用户参数”,确保每次运行工作区时都会提示您的用户参数。复选标记应出现在此文本旁边。运行工作区,系统将提示您选择单个Bird ID。从列表430270991中选择第一个值,然后单击“运行”。检查您的目录以确保响应正文已保存,并且它包含数据。
(11)删除不包含数据的单个ID
有12个ID可供选择,但您可能还记得,只有10个跟踪标记。如果使用每个ID运行工作空间,您将看到ID 768161195和768162242不包含任何数据。这将在以后导致工作空间出现问题,因此我们必须在继续之前删除这些值。
在导航窗格中右键单击_individual_id用户参数,然后选择编辑定义。单击“配置”的省略号,然后选择它们并单击减号来删除这两个ID。单击“确定”两次以退出“配置和用户参数”窗口。如果您现在尝试运行工作区,则只有10个选项可供选择。
(12)添加FeatureReader以读取CSV文件
将HTTPCaller输出连接到FeatureReader。在参数中,将Format设置为CSV并使用Dataset右侧的箭头指定_response_file_path属性作为输入。将坐标系设置为LL84,然后展开输出端口以选择单输出端口。
运行启用了功能缓存的工作区以在Visual Preview中查看输出。您可以在提示时选择任何ID。通用端口将具有数百到数千个输出功能,但如果单击<Generic>旁边的放大镜,则只会在Visual Preview中看到空行。这是因为属性未暴露。您仍然可以通过打开“功能信息”窗口(Ctrl + Alt + F)来查看它们。滚动浏览此窗口,您将看到我们的五个属性。
(13)添加AttributeExposer以显示隐藏属性
动态源数据导致属性从工作空间隐藏,因此我们必须公开它们以便使用下游属性。将FeatureReader的通用输出端口连接到AttributeExposer。使用上一步中“功能信息”窗口中的五个属性名称填写要显示的属性(如果您愿意,还可以使用TrackingData.csv上的“导入”并选择“属性名称”而不是“值”)。
再次运行工作区,您将看到属性现在在Visual Preview中可见。
(14)添加DateTimeConverter以重新格式化timestamp属性
要按季节对数据进行分类,我们必须先将时间戳属性设置为仅显示月和日。将AttributeExposer连接到DateTimeConverter并打开参数。从Datetime Attributes字段旁边的下拉菜单中选择timestamp属性。对于输出格式,请输入%m%d。单击确定。
(15)添加VertexCreator以创建点几何
在参数中,将X值设置为location_long属性,将Y值设置为location_lat。
(16)添加AttributeRangeMapper以将日期分类为季节
AttributeRangeMapper将基于数值范围创建新属性。选择时间戳作为源属性,并将输出属性设置为季节。由于春分和冬至每年都有所不同,我们将在2019历年之前指出每个季节的开始和结束日期。在“范围查找表”的第一行中,在“发件人”列中输入0000,在“收件人”列中输入0319。将输出值设置为冬季。这表明从年初(即0101)到3月19日,这个季节是冬季。对以下范围重复此过程:
从0320到0620→春天
从0621到0922→夏天
从0923到1220→秋季
从1221年到1231年→冬季
(17)为输出添加GeoJSON编写器
添加Writer并将格式指定为GeoJSON(地理JavaScript对象表示法)。将名为EagleOutput.json的文件写入所需的输出文件夹。确保“要素类型定义”设置为“自动”。单击确定,系统将提示您更改功能类型名称 - 输入BaldEagle。将AttributeRangeMapper连接到Writer。如果查看导航窗格中的已发布参数,您会注意到出现了一个新的参数,要求用户为其输出指定目标。由于每次运行可能包含不同的数据,因此用户必须能够指定不同的文件名以避免每次运行时覆盖其数据。
(18)运行工作区并确保将GeoJSON文件保存在正确的目录中
单击绿色“运行”按钮时,系统将提示您为GeoJSON选择一个鸟和一个目录。填写参数,然后单击“运行”。翻译成功后,转到目录以确保文件已写入。
(19)查看您选择的白头鹰的迁移模式
要查看迁移模式,您必须通过Season属性对数据进行符号化。有许多应用程序将直接读取GeoJSON文件(即QGIS,ArcMap)。在此示例中,我们将使用ArcGIS Online(您还可以通过使用FME Workbench读取GeoJSON进行快速可视化,然后将其发送到Inspector变换器,并在Season上设置Group-By)。将GeoJSON文件作为托管图层上载到ArcGIS Online,并在Map Viewer中打开它。当系统提示您选择要显示的属性时,请选择季节。输出映射将根据您选择的个人ID而有所不同,但迁移模式应保持相似。在春季和夏季,沿着卑诗省海岸的秃鹰往往会向北迁移到海湾群岛,而当气温下降时,它们会在秋季和冬季向南飞行。