高德地图poi数据获取
时间: 2025-06-15 10:53:23 浏览: 80
### 使用高德地图API获取POI数据
#### 准备工作
为了使用高德地图API获取兴趣点(Point of Interest, POI)数据,首先需要创建一个开发者账户并申请Web服务API Key[^4]。
#### API请求构建
高德地图提供了多种方式来查询POI数据,其中常用的方式包括关键词搜索、周边搜索和多边形搜索。对于大规模的数据采集,推荐采用多边形搜索方法,该方法允许用户定义一个多边形区域作为搜索边界,并将其分割成多个较小的子区域以规避单次请求返回数量限制[^2]。
#### Python代码示例
下面是一个简单的Python脚本例子,用于演示如何调用高德地图API执行POI搜索:
```python
import requests
from math import radians, cos, sin, asin, sqrt
def haversine(lon1, lat1, lon2, lat2): # 经度1,纬度1,经度2,纬度2 (十进制度数)
"""
计算两点间距离
:param lon1: 起始位置经度
:param lat1: 起始位置纬度
:param lon2: 结束位置经度
:param lat2: 结束位置纬度
:return: 返回两个坐标之间的公里数
"""
# 将十进制度数转化为弧度制
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
c = 2 * asin(sqrt(a))
r = 6371 # 地球平均半径,单位为公里
return c * r
def get_poi_data(keyword, city_code, key):
url = 'https://restapi.amap.com/v3/place/text'
params = {
'keywords': keyword,
'city': city_code,
'output': 'json',
'offset': 20,
'page': 1,
'key': key,
'extensions': 'all'
}
response = requests.get(url, params=params).json()
pois = []
if response['status'] == '1':
for poi in response['pois']:
pois.append({
'name': poi['name'],
'location': poi['location'].split(','),
'address': poi['address']
})
return pois
if __name__ == '__main__':
api_key = '<Your_API_Key>' # 替换成自己的Key
result = get_poi_data('医院', '025', api_key)
print(result)
```
此段代码实现了基于给定的城市编码(如南京为`'025'`)和关键词(`'医院'`)向高德地图发送HTTP GET请求,并解析JSON响应中的POI列表。注意这里的`<Your_API_Key>`应替换为你自己从高德开放平台上获得的有效密钥[^3]。
#### 数据处理与可视化
一旦获得了原始POI数据,可以根据具体应用场景进一步加工这些信息。例如,可以将CSV格式保存下来以便后续分析;也可以借助地理信息系统软件像ArcGIS来进行更复杂的空间数据分析和可视化操作。
阅读全文
相关推荐















