1.创建百度API应用

  类似爬虫程序,在百度地图API进行注册

   在此处点击控制台,在应用管理------我的应用处 创建自己的应用。  

  创建应用如图所示,在请求校验方式处选择sn校验方式

  

  记住自己的AK值

  

  点开设置,记住自己的SK值

  

2.实现

1、sn码及url的生成
url= http://api.map.baidu.com/geocoder/v2/?address=“输入的地点名”&output=json&ak='你的AK码'&sn='你的sn码'。
需要注意的是:

  • 由于url中有中文字符串,需要使用函数urllib.parse.quote(inputstr, safe="/:=&?#+!$,;'@()*[]")转换一下编码。
  • 在url里output可以选择输出为json格式或xml格式,默认是xml格式。

2、sn码的计算方式:

  python实现百度地图API获取某地址的经纬度

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File  : BaiduAPI.py
# @Author: 赵路仓
# @Date  : 2020/3/10
# @Desc  :
# @Contact : 398333404@qq.com import urllib.request, urllib.parse, urllib.error
import json
import hashlibMyAK = '你的AK'
MySK = '你的SK'
lat = 0
lng = 0
dictjson = {}  # 声明一个字典def JingWei(address):global lat, lng# 产生sn码queryStr = "/geocoding/v3/?address=" + address + '&output=json&ak=' + MyAKencodedStr = urllib.parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")rawStr = encodedStr + MySKsn = (hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())# 生成urlurl = urllib.parse.quote("http://api.map.baidu.com" + queryStr + "&sn=" + sn, safe="/:=&?#+!$,;'@()*[]")print('Retrieving', url)# 从API读取数据uh = urllib.request.urlopen(url)data = uh.read().decode()print('Retrieved', len(data), 'characters')# 解析数据try:js = json.loads(data)except:js = Noneif not js or 'status' not in js or js['status'] != 0:print('======Failure====')print(data)print(json.dumps(js, indent=4, ensure_ascii=False))# 获取经纬度坐标和地址类型lat = js["result"]["location"]["lat"]lng = js["result"]["location"]["lng"]print('纬度', lat, '经度', lng)level = js["result"]["level"]print('地址类型', level)# 基于百度地图API下的经纬度信息来解析地理位置信息
def getlocation(lat, lng):print(lat,"ss",lng)url = '/reverse_geocoding/v3/?ak='+MyAK+'&output=json&coordtype=wgs84ll&location='+str(lat)+','+str(lng)encodedStr = urllib.parse.quote(url, safe="/:=&?#+!$,;'@()*[]")rawStr = encodedStr + MySKsn = (hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())# 生成urlurl = urllib.parse.quote("http://api.map.baidu.com" + url + "&sn=" + sn, safe="/:=&?#+!$,;'@()*[]")print('Retrieving', url)req = urllib.request.urlopen(url)  # json格式的返回数据res = req.read().decode("utf-8")  # 将其他编码的字符串解码成unicodeprint(json.loads(res))return json.loads(res)def jsonFormat(lat, lng):str = getlocation(lat, lng)global dictjsondictjson={}# get()获取json里面的数据jsonResult = str.get('result')address = jsonResult.get('addressComponent')# 国家country = address.get('country')# 国家编号(0:中国)country_code = address.get('country_code')# 省province = address.get('province')# 城市city = address.get('city')# 城市等级city_level = address.get('city_level')# 县级district = address.get('district')# 区划代码adcode=address.get('adcode')# 街道street=address.get('street')# 街道编号street_number=address.get('street_number')# 把获取到的值,添加到字典里(添加)# dictjson['country']=country# dictjson['country_code'] = country_codedictjson['province'] = province+city+district+street+street_numberdictjson['adcode'] = adcode# dictjson['city_level'] = city_level# dictjson['district']=districtreturn dictjsonif __name__ == "__main__":JingWei("浙江大学")print(jsonFormat(lat,lng))print(dictjson.get('province')+"    行政区划代码"+dictjson.get('adcode'))JingWei("深圳大学")print(jsonFormat(lat, lng))print(dictjson.get('province')+"    行政区划代码"+dictjson.get('adcode'))

在 jsonFormat(lat, lng) 函数部分可以根据自己的需要进行添加字典。

address = jsonResult.get('addressComponent')# 国家country = address.get('country')# 国家编号(0:中国)country_code = address.get('country_code')# 省province = address.get('province')# 城市city = address.get('city')# 城市等级city_level = address.get('city_level')# 县级district = address.get('district')# 区划代码adcode=address.get('adcode')# 街道street=address.get('street')# 街道编号street_number=address.get('street_number')# 把获取到的值,添加到字典里(添加)# dictjson['country']=country# dictjson['country_code'] = country_codedictjson['province'] = province+city+district+street+street_numberdictjson['adcode'] = adcode# dictjson['city_level'] = city_level# dictjson['district']=district

输出的结果:

[Python]调用百度地图API对地点进行搜索,利用 JSON 返回纬度/行政区域编号相关推荐

  1. python 调用百度地图api 实现批量经纬度转换为实际省市地点(api调用,json解析,mysql读取与写入)

    1.获取秘钥 调用百度地图API实现得申请百度账号或者登陆百度账号,然后申请自己的ak秘钥.链接如下:添加链接描述 下面是百度创建的app设置: 2.调用API将经纬度信息解析成json信息 def ...

  2. python调用百度地图API爬取西安市POI数据

    任务前提 做该项目之前,首先得有基础知识: 编程语言:python 编译工具:PyCharm 网络爬虫相关知识,xpath库,numpy,pandas等库. 任务准备: 去百度地图开放平台申请密匙:h ...

  3. Python调用百度地图api路径查询

    通过调用百度地图api获取两个地点的距离和时间.参数详见百度地图api官方文档. # -*- coding: utf-8 -*- """ Created on Thu M ...

  4. python调用百度地图API 实现单点沿线轨迹运动

    百度地图API 可以做很多好玩的事情,自己闲来无事,先是照着一些资料做了热力图,然后借助pyqt5做了一个简单的界面,实现gps单点沿线(行车)的轨迹. 先上程序界面和效果图: 过程:1. 申请百度地 ...

  5. python调用百度地图api定位_python 调用百度地图地点检索webAPI

    百度地图提供了开放的API,使用方法 右上角登陆账号 -> 点击"获取密钥" -> "创建应用" -> 填写应用名称&白名单IP -& ...

  6. python调用百度地图API批量查询全国高速收费站点经纬度

    写在前面 大家好,我是饭都吃不起的南南 昨天帮朋友爬了全国的高速站点收费站这里下载 [http://www.bestunion.cn/gaosu/p_4/sfzlist.html] 由于该网站并没有西 ...

  7. Python 调用 百度地图API接口 查询 详细地址名称 [转载]

    需要批量 查询文件中的地址在 百度地图中的名称 与坐标 Step 1 . 下载chromedriver 下载地址 : ChromeDriver下载. 注意需要下载和chrome浏览器相同版本的driv ...

  8. python调用百度地图api定位_逆地理编码 rgc 反geo检索 | 百度地图API SDK

    使用方法 如不访问境外POI,走以下服务使用流程 编码说明 API请求中需要用到中文或一些特殊字符的参数,如query.region等,为了避免提交到后台乱码,需要对这几个参数值进行编码处理,转换成U ...

  9. Python调用百度地图api获取起点终点路线规划距离和预估时长

    现有起点和终点坐标值(经纬度lng.lat),目的是通过百度地图开发者平台的路线规划功能获取起点终点路线规划距离和预估时长,百度地图开发者平台路线规划使用说明网址为:http://lbsyun.bai ...

最新文章

  1. Ubuntu16.04 Table无法自动补全
  2. CV之YOLO:深度学习之计算机视觉神经网络tiny-yolo-5clessses训练自己的数据集全程记录
  3. 【Python】pandas 分类数据处理大全(附代码)
  4. 面向对象程序设计课程进度条
  5. js特效代码-鼠标样式
  6. 进制转换中dbho是什么意思_什么是网段?二进制十进制如何互相转换?看完这篇,你就全明白了...
  7. 数据结构思维 第十二章 `TreeMap`
  8. Spring AMQP + Rabbit 配置多数据源消息队列
  9. 【转】【C#.NET】ASP.NET状态管理 APPlication,Session,Cookie和ViewStat用法
  10. javascript异步机制 — call stack
  11. 【挨踢人物传】向立天:从电视编导到技术总监,只要努力,你也能铸就传奇(第七期)...
  12. html将英文日期格式转化为中文日期格式,excel中文日期与英文日期的转换
  13. 51虚拟安卓系统v1.1.0.6-安卓端的虚拟机(支持root,xposed框架)
  14. C++学习——基于binance的AS做市模型
  15. 诺贝尔奖得主罗伯特·莫顿—唯有信任,方得科技创新
  16. 几款常见的数学教学软件
  17. 【DX-BT24蓝牙模块连接Arduino与手机透传教程】
  18. php laravel lumen 快速接入网易云信 im
  19. QT常用实用的界面设计技巧
  20. SQL怎么实现模糊查询

热门文章

  1. java读取aac文件_以AAC格式录制和播放声音
  2. 老友记台词学习笔记 SE01EP01(四)
  3. HTML绝对单位,CSS长度单位有绝对单位和相对单位,其中px就是绝对单位,em就是相对单位。...
  4. Mybatis返回树形结构
  5. uml活动图 各个功能的操作流程和分支_UML活动图介绍和用法图解
  6. C++面试知识-计算机网络
  7. Android布局页面自定义字体
  8. 额度策略矩阵,贷中的调额策略如何开发?
  9. C++ opencv Erode and Dilate
  10. 如何选择DHTMLX Gantt与DHTMLX Scheduler?