本文主要内容是利用python获取高德地图上的感兴趣点(POIs)。
高德开放平台:https://lbs.amap/
下载POI分类编码和城市编码表
搜索POI相关文档:https://lbs.amap/api/webservice/guide/api/search
前言:虽说在我使用ChatGPT的第一天就遇到了bug,这让我觉得ChatGPT不过如此,但是在后续使用的过程中,体验感还行,因此将其作为一个工具辅助工作或者学习能够起到一定作用提高效率,但如果想要完全依赖ChatGPT是根本不现实的。所以大家合理使用ChatGPT。
今天就偷懒使用ChatGPT,让它帮我写个利用python获取高德地图POI的程序,试用了一下,虽然很简单但是能运行,于是就跟它交流反馈一步步改进了程序,满足了自己的需求。
当然这个程序特别简单,所以对ChatGPT来说应该不在话下。
主要思想就是利用python脚本结合关键词搜索法从高德地图获取特定区域内的 POI 数据
(对于小区域范围的POI数据获取还是比较方便的,但是如果范围较大建议使用多边形搜索法,否则容易获取到不全面的POI数据)
代码如下:
import pandas as pd
import requests
# 高德地图 Web API 的 URL
url = "https://restapi.amap/v3/place/text"
# 输入需要搜索的关键字列表
keywords_list = ["公园", "银行"]
for keywords in keywords_list:
# API 的参数
params = {
# 高德地图的API_KEY(即你的密匙)
"key": "********************",
"keywords": keywords,
# 需要搜索的城市范围 可以是城市中文、citycode、adcode
"city": "北京市",
"offset": "20",
"page": "1",
"extensions": "all"
}
poi_list = []
page = 1
while True:
# 发送 GET 请求并获取结果
response = requests.get(url, params=params)
result = response.json()
pois = result["pois"]
poi_list.extend(pois)
# 如果返回的 POI 数据少于 20 条,说明已经获取完了所有数据,退出循环
if len(pois) < 20:
break
# 将 page 的值加 1,以便获取下一页的数据
page += 1
params["page"] = str(page)
# 将 POI 数据保存到 DataFrame 中
df = pd.DataFrame(poi_list)
# 将 DataFrame 中的数据保存到 CSV 文件中
filename = f"{keywords}_poi.csv"
df.to_csv(filename, index=False)
使用时只需要将keywords_list
、"key"
、"city"
分别改为自己所需要搜索的关键词
、高德地图 Web 服务 API 密钥
和城市
即可。
如果想要通过高德地图的分类代码types
来搜索,将keywords
参数改为types
参数即可。
下面是示例代码:
import pandas as pd
import requests
# 高德地图 Web API 的 URL
url = "https://restapi.amap/v3/place/text"
# 输入需要搜索的分类代码
types = "060000|070000|080000"
# API 的参数
params = {
# 高德地图的API_KEY(即你的密匙)
"key": "*******************",
"types": types,
# 需要搜索的城市范围 可以是城市中文、citycode、adcode
"city": "北京市",
"offset": "20",
"page": "1",
"extensions": "all"
}
poi_list = []
page = 1
while True:
# 发送 GET 请求并获取结果
response = requests.get(url, params=params)
result = response.json()
pois = result["pois"]
poi_list.extend(pois)
# 如果返回的 POI 数据少于 20 条,说明已经获取完了所有数据,退出循环
if len(pois) < 20:
break
# 将 page 的值加 1,以便获取下一页的数据
page += 1
params["page"] = str(page)
# 将 POI 数据保存到 DataFrame 中
df = pd.DataFrame(poi_list)
# 将 DataFrame 中的数据保存到 CSV 文件中
filename = f"{types}_poi.csv"
df.to_csv(filename, index=False)
使用时同样只需要将types
、"key"
、"city"
分别改为自己所需要搜索的分类代码
、高德地图 Web 服务 API 密钥
和城市
即可。
注意:关键词搜索法获取到的POI数量最多不超过200条,因此当你观察到你的POI数据为190+的时候,就说明数据达到爬取极限了,但是POI数据并没有爬取完整,所以建议数据较大时使用多边形搜索法!
这是利用多边形搜索法爬取POI的教程:python获取高德地图POI——多边形搜索
更多推荐
python获取高德地图POI——关键字搜索
发布评论