python学习笔记 – 使用百度地图api,根据给定经纬度获取城市信息

py小白一枚,用于记录分享个人学习心得,专业的大佬们不要嘲笑啊T T

参考学习资料1:python地址解析经纬度,城市

  • 这位大佬17年blog中无私分享的程序是本学习心得中程序部分的重要来源
  • 一开始没有运行起来,又参考了一些其他的内容,总算调试出来了
  • 参考学习资料2:Python调用百度地图API爬取经纬度

  • 这位大佬的分享也很详尽,但也并非最新的文档
  • 本学习心得基于两份参考资料的结合及本人的尝试与总结
  • Contents

  • 百度地图API的使用
  • 简介
  • 注册方法
  • 使用方法
  • 在python中实现
  • 具体程序
  • x_y.txt文档内容
  • 百度地图API的使用

    简介

    百度地图开放平台
    地址:https://lbsyun.baidu.com/

    注册方法

  • 进入百度地图开放平台
  • 滑动到页面底端
  • 点击立即注册
  • 建议选择成为个人开发者(因为当天申请即可使用)
  • 按照提示一步步完成即可
  • 使用方法

  • 一句话总结:要用什么API,就看什么API的服务文档

  • 我们需要使用的是正/逆地理编码API

  • 具体步骤如下

  • 完成注册后,返回首页,点击“开发文档”,选择“Web服务API”
  • 在“web服务API”页面选择,“正/逆地理编码”。

  • 服务文档:

  • 服务文档中详细介绍了api的使用格式为:
  • https://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194
  • 一共需要三个参数:你的ak,需要查询的纬度、经度
  • 所以需要先获取ak

  • 点击页面右上角“控制台”,“应用管理”,“我的应用”

  • 在“我的应用”界面,点击“创建应用”,填好相关信息即可生成你的应用

  • 在应用列表里找到相应的应用,即可复制AK

  • 在python中实现

    本人使用anaconda自带的python3.9,编译使用自带的spider,具体安装方法可以参考别人的笔记

    具体程序

    import requests
    import json
    
    with open("x_y.txt","r", encoding="utf-8") as fr:
        with open("x_y_city.txt", "w", encoding="utf-8") as fw:
            for line in fr.readlines():
                # 去除换行符
                line = line.strip('\n').replace('#',' ')
                # 去除特殊字符
                line1 = line.replace('#', ' ').replace('/',' ')
                #生成名为line_str的列表,列表有三个值,接下来分别将三个值存成三个要用的参数
                line_str=line1.split(",")
                # 几个参数设置
                ak = "AKXXXXXX"		#这个ak就是我们刚刚复制的ak号,把AKXXXXXX几个字母替换成复制的ak号即可
                id = line_str[0]	#这个id是我们用来计数的,最后print出来看写到哪一行了
                lng = line_str[1]
                lat = line_str[2]
                # 经纬度获取城市
                baiduUrl = "https://api.map.baidu.com/reverse_geocoding/v3/?ak=%s&output=json&coordtype=wgs84ll&location=%s,%s" % (ak, lat, lng)
                req = requests.get(baiduUrl)
                content = req.text
                # 将content读取到的内容存入名为baiduAddr的字典中
                baiduAddr = json.loads(content)
                # 调用字典的相应内容,存到内存的变量中
                province = baiduAddr["result"]["addressComponent"]["province"]
                city = baiduAddr["result"]["addressComponent"]["city"]
                district = baiduAddr["result"]["addressComponent"]["district"]
                # 写入到x_y_city.txt
                new_line = str(id)+","+str(lng) + "," + str(lat) + "," + province + "," + city + "," + district
                fw.write(new_line)
                fw.write("\n")
                print(id)
    

    x_y.txt文档内容

    1,102.408,36.4878
    2,100.308,25.6834
    3,102.717,25.0526
    4,114.558,25.7906
    5,115.865,28.6883
    6,114.772,25.6671
    7,115.865,28.6883
    8,118.205,31.1083
    9,114.772,25.6671

    直接复制粘贴,保存成 x_y.txt 即可

    来源:yuan2er

    物联沃分享整理
    物联沃-IOTWORD物联网 » python学习笔记 – 使用百度地图api,根据给定经纬度获取城市信息

    发表评论