csv文件数据内容:
具体代码如下:
#注册登录百度地图开放平台进行注册,获取自己的ak
ak ="您的ak"
#在开发文档中获取全球逆地理编码API地址,这里添加了extensions_town=True参数,来获取所需的乡镇级数据
#使用f字符串中的{}对ak,经度,纬度占位
url="https://api.map.baidu.com/reverse_geocoding/v3/?ak={您的ak}&output=json&coordtype=bd09ll&extensions_town=True&location={纬度},{经度}"
import requests
import json
#读取经纬度数据csv文件
file="csv文件的路径"
with open(file,'r',encoding='utf-8') as f:
#循环读取文件中的每一条坐标经纬度数据
while True:
#每次读取一行数据
lng_lat=f.readline()
if"小区经度,小区纬度" in lng_lat:
continue
if lng_lat:
#替换经纬度字符串后的换行符号\n
lng_lat=lng_lat.replace("\n","")
#用列表拆包的方法分别获取读取的经度和维度
lng,lat=lng_lat.split(',')
response=requests.get(url.format(ak,lat,lng))
#json.loads()方法,将响应获取的Jason文本转换成字典数据格式,方便获取所需数据
address_dic=json.loads(response.text)
#观察数据格式通过索引获取数据
addressComponent=address_dic['result']['addressComponent']
#获取国家信息
country=addressComponent["country"]
#获取省份信息
province= addressComponent["province"]
#获取城市信息
city= addressComponent["city"]
#获取区的信息
district= addressComponent["district"]
#获取乡镇信息
town= addressComponent["town"]
#获取街道信息
street= addressComponent["street"]
#写入本地
with open("result.csv","a",encoding="utf-8") as fil:
fil.write(f"{lng},{lat},{country},{province},{city},{district},{town},{street}")
#每写一句,换行
fil.write("\n")
#如果读取的文件序列为空,则退出循环
else:
break
4点说明:
1.介绍全球逆地理编码服务:
通过调取全球逆地理编码服务的API,用户可通过该功能,将位置坐标解析成对应的行政区划数据以及周边高权重地标地点分布情况,整体描述坐标所在的位置
2.获取访问秘钥:
访问密钥AccessKey(简称AK)是阿里云提供给阿里云用户的永久访问密钥,用于通过开发工具(API、CLI、SDK、Cloud Shell、Terraform等)访问阿里云时的身份验证,不用于控制台登录。