By wuzhenzhen, 31 March, 2025

描述:利用ArcGIS绘制地图一般需要经纬度信息,但是从大部分网站上获得的数据只有地理位置信息。因此需要基于地理位置信息从百度地图批量获取对应的经纬度

  1. 在百度地图上申请需要的密钥,具体网址为:https://lbs.baidu.com/apiconsole/key。
  2. 利用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')
  3. 上述代码中,替换 “密钥” 和 “地理位置的文件路径” 即可运行。
  4. 运行后,将输出地理位置的经纬度。