描述:利用ArcGIS绘制地图一般需要经纬度信息,但是从大部分网站上获得的数据只有地理位置信息。因此需要基于地理位置信息从百度地图批量获取对应的经纬度
- 在百度地图上申请需要的密钥,具体网址为:https://lbs.baidu.com/apiconsole/key。
利用Python脚本,从百度地图官网获取经纬度:
import json from urllib.request import urlopen from urllib.parse import quote import openpyxl #定义函数 def Getlnglat(address): root_url = 'http://api.map.baidu.com/geocoding/v3/' output = 'json' ak ="***********" #申请的API密钥' add = quote(address) url = root_url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak req = urlopen(url) res = req.read().decode() # 将其他编码的字符串解码成unicode temp = json.loads(res) # 对json数据进行解析 return temp #解析 def Analy(file_path): wb = openpyxl.load_workbook(file_path) ws = wb.active ws.cell(1,2).value='经度' ws.cell(1,3).value='纬度' for i in range(2, ws.max_row + 1): try: address=ws.cell(i,1).value lng = Getlnglat(address)['result']['location']['lng'] # 获取经度 lat = Getlnglat(address)['result']['location']['lat'] # 获取纬度 ws.cell(i,2).value=lng ws.cell(i,3).value=lat print(address,lng,lat) except: ws.cell(i,4).value = "该地点目前未能获取,请重新尝试" wb.save(file_path) #主函数 Analy(file_path='地理位置的文件路径.xlsx')
- 上述代码中,替换 “密钥” 和 “地理位置的文件路径” 即可运行。
- 运行后,将输出地理位置的经纬度。