前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白也能看懂的百度地图API使用案例(附全国高速收费站点数据~)

小白也能看懂的百度地图API使用案例(附全国高速收费站点数据~)

作者头像
陈南GISer
发布2021-09-14 11:34:52
2.2K0
发布2021-09-14 11:34:52
举报
文章被收录于专栏:点点GIS

写在前面

大家好,我是饭都吃不起的南南

昨天帮朋友爬了全国的高速站点收费站这里下载

【http://www.bestunion.cn/gaosu/p_4/sfzlist.html】

由于该网站并没有西藏和海南省的高速收费站,所以并没有获取到,爬取这个挺简单的,我就不说了.(说多了容易戴上银手镯,我怂)

数据如下

调用百度API批量拾取坐标

接下来需要调用百度API批量拾取坐标,不会python的同学也没关系,可以打开【https://maplocation.sjfkai.com/】这个网站批量转,但是要注意,在地址前面加上所在地区,不然就会QAQ!!!

下面开始写代码【复制粘贴】

pandas读取excel数据存为列表
代码语言:javascript
复制
import pandas as pd

def excel_one_line_to_list():
    df = pd.read_excel(r"C:\Users\Administrator\Desktop\收费站\2021-8-27-10-13-41-4442610865300-【陕西高速收费站一览表】.xlsx", usecols=[0],
                       names=None)  # 读取项目名称列,不要列名
    df_li = df.values.tolist()
    result = []
    for s_li in df_li:
        result.append(s_li[0])
    #print(result)
    return result#return返回结果值
if __name__ == '__main__':
        result = excel_one_line_to_list()#接收结果

地址转换为经纬度所以选择的是地理编码,如果要搞别的事情的话,可以去查帮助文档。

代码语言:javascript
复制
import requests
import json

def getUrl(*address):
    '''
    调用地图API获取待查询地址专属url
    最高查询次数30w/天,最大并发量160/秒
    '''
    ak = '你的key'
    if len(address) < 1:
        return None
    else:
        for add in address:   
            url = 'http://api.map.baidu.com/geocoding/v3/?address={inputAddress}&output=json&ak={myAk}'.format(inputAddress=add,myAk=ak)  
            yield url

key未认证的用户每天调用api的次数限制为0.6w,认证后为3w

代码语言:javascript
复制
def getPosition(url):
    '''返回经纬度信息'''
    res = requests.get(url)
    json_data = json.loads(res.text)

    if json_data['status'] == 0:
        lat = json_data['result']['location']['lat'] #纬度
        lng = json_data['result']['location']['lng'] #经度
    else:
        print("Error output!")
        return json_data['status']
    return lat,lng

if __name__ == "__main__":
    address = result
    for add in address:
        add_url = list(getUrl(add))[0]
        print(add_url)
        try:
            lat,lng = getPosition(add_url)
            print("{0}|经度:{1}|纬度:{2}.".format(add,lng,lat))
        except Error as e:
            print(e)
返回结果如下
代码语言:javascript
复制
http://api.map.baidu.com/geocoding/v3/?address=禹门口收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
禹门口收费站|经度:110.63335672712498|纬度:35.66392482522151.
http://api.map.baidu.com/geocoding/v3/?address=龙门收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
龙门收费站|经度:114.31678129149563|纬度:23.676445987337065.
http://api.map.baidu.com/geocoding/v3/?address=韩城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
韩城收费站|经度:110.47940351187505|纬度:35.48304612715598.
http://api.map.baidu.com/geocoding/v3/?address=芝川收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
芝川收费站|经度:110.41152009160538|纬度:35.38365354048929.
http://api.map.baidu.com/geocoding/v3/?address=合阳收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
合阳收费站|经度:110.1669576741416|纬度:35.218007273465126.
http://api.map.baidu.com/geocoding/v3/?address=澄城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
澄城收费站|经度:109.94180943535946|纬度:35.00705384279941.
http://api.map.baidu.com/geocoding/v3/?address=孙镇收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
孙镇收费站|经度:117.70541929687147|纬度:37.037346543797625.
http://api.map.baidu.com/geocoding/v3/?address=蒲城收费站&output=json&ak=yvc2TW9lD5rMiubbR0or57iVuDQiFcNU
蒲城收费站|经度:109.61161649430977|纬度:34.913113042128124.
......

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 点点GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
  • 数据如下
  • 调用百度API批量拾取坐标
  • 下面开始写代码【复制粘贴】
    • pandas读取excel数据存为列表
      • 返回结果如下
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档