在python中调用高德地图(Amap)api


1 准备工作

首先去高德地图开放平台(https://lbs.amap.com/)上注册账号。

注册完成后,点击右边的控制台。

控制台
进入控制台后,选择管理Key。

进入管理Key 的界面后,选择添加Key,并在里面选择Web 服务。来创建后面需要使用的Key。

添加Key
这是我创建的Key。

key

1.1 其他任务

需要其他任务的话可以在首页的开发支持里面查看具体的操作方法。
准备工作


2 多个小任务

在开发支持里面选择Web 服务,再选择Web 服务API,里面有不同人物的API 文档。

总的来说,调用API 的方法就类似于用程序去访问网址,然后网站返回给我们一些可以使用的信息。比如在正地理编码中,我们访问这样一个网址,https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>,当然,因为我们对于API 有不同的需求,也就是需要设置不同的搜索条件。所以这个网址中,比如address=北京市朝阳区阜通东大街6号output=XML,这些就是我们需要设置的条件。

下面提供几个方面入手的Python 示例。

2.1 (正)地理编码

(正)地理编码将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.480881,39.989410
地标性建筑举例:天安门转换后经纬度:116.397499,39.908722

步骤:

  1. 申请Web 服务API 类型Key。
  2. 参考接口参数文档发起HTTP/HTTPS请求,第一步申请的 Key 需作为必填参数一同发送
  3. 接收请求返回的数据(JSON或XML格式),参考返回参数文档解析数据。如无特殊声明,接口的输入参数和输出数据编码全部统一为 UTF-8 编码方式。

根据文档可知,我们需要访问的网址是https://restapi.amap.com/v3/geocode/geo?parameters

在文档里可以看到需要我们设置的参数。

参数

通过python 的requests 包可以设置参数并进行访问。

下面是我用到的几个参数。

KEY = '<申请的Key>'
CITY = '成都市'
ADDRESS = '龙湖源著11号'
OUTPUT = 'json'

将参数传入网址,访问后返回的数据以json 的形式储存。

url = 'http://restapi.amap.com/v3/geocode/geo?parameters'
params = {
    'city': CITY,
    'address': ADDRESS, 
    'key': KEY,
    'output': OUTPUT}
j = json.loads(requests.get(url, params).content)
j
[output]:
{'status': '1',
 'info': 'OK',
 'infocode': '10000',
 'count': '1',
 'geocodes': [{'formatted_address': '四川省成都市成华区龙湖',
   'country': '中国',
   'province': '四川省',
   'citycode': '028',
   'city': '成都市',
   'district': '成华区',
   'township': [],
   'neighborhood': {'name': [], 'type': []},
   'building': {'name': [], 'type': []},
   'adcode': '510108',
   'street': [],
   'number': [],
   'location': '104.109009,30.674991',
   'level': '兴趣点'}]}

返回的参数含义在官网中也可以看到。

2.2 逆地理编码

逆地理编码将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。
例如:116.480881,39.989410 转换地址描述后:北京市朝阳区阜通东大街6号

我用到的参数。

KEY = '<申请的Key>'
LOCATION = '121.513782,31.3003'
RADIUS = 3000
OUTPUT = 'json'
EX = 'all
POI_type = '商场|购物服务'
url = 'https://restapi.amap.com/v3/geocode/regeo'
# params = {
#     "location": str(lat)+','+str(lng),
#     "output": 'json',
#     "key": KEY,
# }
params = {
    "location": LOCATION,
    "output": OUTPUT,
    "key": KEY,
    'radius': RADIUS,
    'extensions': EX,
    'poitype': '商场|购物服务'
}
response = requests.get(url, params = params)
# answer = json.loads(response.content)
# 这种方式也可以
answer = response.json()

其实我们也可以填好了网址之后,直接进行访问。不过传入参数的方法要灵活很多。

url = 'https://restapi.amap.com/v3/geocode/regeo?output=json&location=116.310003,39.991957&key=498d61ca9873202aed8cff9c380fd34f&radius=1000&extensions=all'

response = requests.get(url)
answer = response.json()

2.3 步行路径规划

步行路径规划 API 可以规划100KM以内的步行通勤方案,并且返回通勤方案的数据。

我用到的参数。

# 出发地和目的地
KEY = '<申请的Key>'
ORI = '116.481028,39.989643'
DES = '116.434446,39.90816'
url = 'https://restapi.amap.com/v3/direction/walking?parameters'
params = {
    "origin": ORI,
    "destination": DES,
    "key": KEY,
    'radius': 1000
}
response = requests.get(url, params = params)
answer = response.json()
# answer

参考文档:
https://lbs.amap.com/api/webservice/guide/api/georegeo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值