使用百度地图Web服务API查询地点的经纬度信息

  • API地理编码服务
  • 数据
  • 结果


API地理编码服务

地理编码服务(又名Geocoder)是一类Web API接口服务;
地理编码服务提供将结构化地址数据(如:北京市海淀区上地十街十号)转换为对应坐标点(经纬度)功能;
用户可通过该功能,将结构化地址(省/市/区/街道/门牌号)解析为对应的位置坐标。地址结构越完整,地址内容越准确,解析的坐标精度越高。
官网介绍

import requests
import pandas as pd
import xlsxwriter
datapath = r'G:\jupyter_book\结合百度地图API的回收路线优化小项目\节点名称.xlsx'
def getnode_name(datapath):
    data = pd.read_excel(datapath,sheet_name='Sheet1')
    data['门店名称'] = data['门店名称'].apply(lambda x:"爱回收"+x[2:])
    data.to_excel(datapath)
    data = list(data['门店名称'])
    
    return data
def geocoding(address, currentkey):
    """
    address convert lat and lng
    :param address: address  #查询的地名
    :param currentkey: AK	#通过百度地图开放平台申请的文本服务API的密钥
    :return: places_ll
    """
    #向百度API发送请求的url
    url = 'http://api.map.baidu.com/geocoding/v3/?'
    #请求的参数
    params = {
        "address": address,
        "city": '广州市',#查询地区
        "output": 'json',#以json格式返回
        "ak": currentkey,
    }
    response = requests.get(url, params=params)
    places_ll = []
    answer = response.json()
    #判断是否成功
    if answer['status'] == 0:
        tmpList = answer['result']
        coordString = tmpList['location']
        coordList = [coordString['lng'], coordString['lat']]
        places_ll.append([address, float(coordList[0]), float(coordList[1])])
        return [address, float(coordList[0]), float(coordList[1])]
    else:
        return -1
ak = "*************"
savepath = r'G:\jupyter_book\结合百度地图API的回收路线优化小项目\节点坐标.xlsx'
def lookup(datapath,ak,savepath):
    node_name = getnode_name(datapath)
    position = []
    for address in node_name:
        position.append(geocoding(address,ak)) 
    #写入Excel中
    workbook = xlsxwriter.Workbook(savepath)
    worksheet = workbook.add_worksheet('坐标')
    counter = 0
    worksheet.write(counter,0,"名称")
    worksheet.write(counter,1,"经度")
    worksheet.write(counter,2,"纬度")
    for i in position:
        counter += 1
        worksheet.write(counter,0,i[0])
        worksheet.write(counter,1,i[1])
        worksheet.write(counter,2,i[2])
        
    workbook.close()

数据

爱回收天河又一城店
爱回收丽影广场店
爱回收番禺万达店
爱回收优托邦店
爱回收动漫星城店
爱回收乐峰广场店
爱回收五号停机坪店
爱回收西城都荟店
爱回收万菱汇店
爱回收白云万达店
爱回收萝岗万达店
爱回收东圃购物中心店
爱回收东方宝泰店
爱回收百信广场店
爱回收太阳新天地店
爱回收同和金铂天地
爱回收新塘万达广场店
爱回收海印都荟城店
爱回收正佳广场旗舰店
爱回收保利广场店
爱回收天河万科店
爱回收基盛万科里店
爱回收番禺奥园广场店
爱回收龙归金铂广场店
爱回收美林M·LIVE天地店
爱回收富力海珠城店

结果

名称 经度 纬度
爱回收天河又一城店 113.328032 23.13859534
爱回收丽影广场店 113.3263445 23.10148897
爱回收番禺万达店 113.355819 23.01281401
爱回收优托邦店 113.3364564 23.1240009
爱回收动漫星城店 113.270251 23.13203299
爱回收乐峰广场店 113.2661945 23.09450584
爱回收五号停机坪店 113.2716284 23.18845699
爱回收西城都荟店 113.2468785 23.11612262
爱回收万菱汇店 113.3355018 23.13880927
爱回收白云万达店 113.2729292 23.17831631
爱回收萝岗万达店 113.472991 23.17438998
爱回收东圃购物中心店 113.4097302 23.12721659
爱回收东方宝泰店 113.3313171 23.15323594
爱回收百信广场店 113.2679085 23.20037316
爱回收太阳新天地店 113.350738 23.12939886
爱回收同和金铂天地 113.3318736 23.20190759
爱回收新塘万达广场店 113.822038 23.28158705
爱回收海印都荟城店 113.331511 23.12399666
爱回收正佳广场旗舰店 113.3336306 23.13785576
爱回收保利广场店 113.3440909 23.1035333
爱回收天河万科店 113.314899 23.11429652
爱回收基盛万科里店 113.2857315 23.08867578
爱回收番禺奥园广场店 113.3642815 22.93007825
爱回收龙归金铂广场店 113.3001003 23.27370107
爱回收美林M·LIVE天地店 113.421486 23.1118018
爱回收富力海珠城店 113.2804039 23.10162501