使用python批量处理excel百度地址的经纬度

使用python批量处理excel百度地址的经纬度,第1张

直接上代码

#这是最终版本
import pandas as pd
import json
import requests

#获取经纬度
def getlnglat(address): #从本地的xlsx文件中获取商圈名称,作为此函数的实参
    output = 'json'
    ak = '你的ak码(自行去百度地图平台申请)'  # 百度地图密钥ak,“控制台”-“应用管理”-“我的应用”-“创建应用”-“命名、*”提交后会生成AK
    url = 'http://api.map.baidu.com/geocoding/v3/?address={0}&output={1}&ak={2}'.format(address,output,ak)
    print(url)
    html = requests.get(url=url)
    html = html.text
    temp = json.loads(html, strict=False)

    lat = temp['result']['location']['lat']
    lng = temp['result']['location']['lng']

    return lat, lng                                     #纬度 latitude,经度 longitude

def re_html(data):  #生成HTML适配的格式
    data_html = pd.DataFrame(columns=['content'])        #建立一个列名为content的dataframe对象

    for indexs in data.index:  #重新整理成html里适配的格式
        data_html.loc[indexs, 'content'] = '{' + \
                                           '"lat":' + str(data.loc[indexs, '纬度']) + ',' + \
                                           '"lng":' + str(data.loc[indexs, '经度']) + ',' + \
                                           '"address":' + '"' + str(data.loc[indexs, '名称']) + '"' + \
                                           '}' + ','
    data_html.to_csv(r'C:\Users\lupo\OneDrive\桌面\school\school_result.xls', encoding="gbk")     #相对路径,生成了该csv文件

if __name__ == '__main__':
    data = pd.read_excel(r'C:\Users\lupo\OneDrive\桌面\school\pschool_b.xls')
    for index in data.index:                             #index为data的序号,从0开始
        get_location = getlnglat(data.loc[index, '名称'])  #通过序号进行索引,获得MC列下对应的地址名称
        lat = get_location[0]
        lng = get_location[1]
        data.loc[index, '纬度'] = lat
        data.loc[index, '经度'] = lng
        print(data)
    re_html(data)

我的原始数据格式(pschool_b.xls):

处理后的数据格式(school_result.xls): 

     下一步就可以愉快地基于结果使用Arcgis10.2在地图上根据经纬度标点了。

      ps:最大的体会的经常报错result,原来是其中的一个地名百度地图不确定是哪个经纬度,所以报错。类似于原始数据的第14行,如果我不加上西中街小学后面的地址(北京市东城区东直门外大街10号楼),那么这个程序就会报错(因为百度地图不确认西中街小学在哪里),这个时候就需要基于个别地名加具体的地址了,再跑程序。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/885553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存