首页 历史故事利用应用程序接口获取数据

利用应用程序接口获取数据

【摘要】:应用程序接口是指一些预先定义的函数,或指软件系统不同组成部分衔接的约定,为开发人员提供访问应用程序一组例程的功能。图2.2调用API的基本流程百度地图、高德地图和天地图为用户提供了API接口来获取所需POI数据。三者API获取思路类似,这里以百度地图为例说明如何利用API来获取POI数据并存入Excel。然后,调用API获取数据。

应用程序接口(API)是指一些预先定义的函数,或指软件系统不同组成部分衔接的约定,为开发人员提供访问应用程序一组例程的功能(任德凌等,2001)。API使开发人员更容易创建复杂功能,而又无需访问源码或理解内部工作机制的细节。Web API是指互联网产品对外提供的服务接口,Web API为用户和开发者提供了存储服务、消息服务、计算服务等多种类型的服务(张志等,2018)。调用Web API服务时,首先必须保持网络连接正常,TCP/IP服务正常,然后访问API服务资源的URL,根据需求向服务器发送HTTP请求,进而对服务器资源进行操作。

Web API主要包括基于简单对象访问协议(SOAP)的Web Service和REST API。基于SOPA的Web Service相对较老,现在主流的Web服务以基于超文本传输协议(HTTP)的REST API为主。

HTTP是一种基于TCP/IP协议的应用层协议,用来在浏览器和Web服务器之间传输信息。HTTP协议一般是事务型协议,即一个请求对应一个响应,请求是由客户端发起HTTP请求给服务端的,服务端返回一个HTTP响应,通常称之为一次HTTP的事务(钱宏武,2008)。

表现层状态转化(REST)指一种Web架构原则。表现层是指将存储信息的实体资源具体呈现出来的多种形式(Fielding T R,2000)。例如,用txt格式表现文本信息,也可用xml格式、json格式表现。在REST架构中,URI只代表资源的实体,不代表它的形式(程小飞,2010)。它的具体表现形式应该在HTTP请求的头信息中用Accept和Content-Type字段指定。由于HTTP协议是一个无状态协议,因此所有数据的状态都保存在服务器端,如果客户端想要操作服务器,必须通过HTTP协议让服务器端发生状态转化。这种转化是建立在表现层之上的,因此就是表现层状态转化(李琦等,2016)。在HTTP协议里面,存在四个表示操作方式的动词:GET、POST、PUT、DELETE(姚明海等,2015),分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。总的来说,REST架构就是从资源的角度来观察整个网络,由URI确定分布在各处的资源,而客户端的应用通过URI来获取资源的表征,通过客户端的表现层来处理服务器端的资源。

如今的Web计算平台包含了广泛的功能,其中大部分均可以通过API访问。除了百度地图、高德地图、天地图提供的API外,政府部门也提供了数据共享平台,利用政府部门提供的API可以获取地理空间数据和属性数据。例如,深圳市政府数据开放平台,该开放平台由深圳市政务服务数据管理局主办,深圳市大数据资源管理中心负责建设运维,市、区各相关部门负责数据资源的提供、更新及维护,开放平台提供了大量的数据集和API,集成了各行各业的数据资源供研究人员使用。

利用平台提供的API能够很方便地获取数据,调用API的基本流程如图2.2所示,首先注册数据开放平台账号,并申请应用密钥,然后根据需求构建URL结构,解析URL返回的结果,提取出所需要的信息。

本节以兴趣点(POI)数据获取为例,介绍API获取数据的流程。兴趣点是一种专用的地理实体,比如房屋地点、餐厅、停车位、旅游景点等,既可以是永久性的,如文物古迹,也可以是临时性的,如商店、餐馆等。兴趣点是支持基于位置的应用程序的大多数数据的基础,通过在在线地图上演示空间信息,为基于位置的移动应用程序的用户提供空间信息服务(周春辉等,2009)。

图2.2 调用API的基本流程

百度地图、高德地图和天地图为用户提供了API接口来获取所需POI数据。三者API获取思路类似,这里以百度地图为例说明如何利用API来获取POI数据并存入Excel。

首先,申请服务密钥(ak)码。开发者进入百度地图开发者平台按照指示申请账号,在控制台创建浏览器端应用,选择需要的服务内容,创建成功后即可获取本应用的服务密钥(ak)码。

其次,确定需要采集数据的空间范围。获取方式分为三种:按照行政区获取POI、在圆形区域内获取POI、在方形区域内获取POI。三者接口的请求参数不同,但是返回参数是一致的。

然后,调用API获取数据。调用API请求通用格式如下:http://api.map.baidu.com/place/v2/search?query=?&region=?&ak=?。

根据上述的API请求通用格式,依据自身需求进行自定义构建,例如:url="http://api.map.baidu.com/place/v2/search?ak="+str(ak[0])+"&output=json&query="+str(query[0])+"&page_num="+str(page_num)+"&bounds="+str(bound[0]),表示应用检索第一方形区域内的第一类POI数据并以json格式返回数据,进行URL编码获得的json数据,对列表进行循环读取,提取出需要的信息。

最后,将获取结果写入Excel中。以武汉市中心城区为例,获取的医院POI分布如图2.3所示。

图2.3 医院兴趣点(POI)分布

如果采用高德地图或者天地图API,原理上是类似的,不同点在于构建URL时接口参数会有一些不同,具体设置请查阅官方文档,根据官方文档和示例来设置接口参数,构建合理的URL即可,在此不再赘述。