python调用百度地图api定位,python调用百度地图api

  python调用百度地图api定位,python调用百度地图api

  基于地图的可视化数据的应用方便且易于实现,地图可视化的实现方式也有很多种包括excel的power map包,在线交互式地图可视化工具,如Echarts、Tableau Public、polyMaps等和地图库这里的实现就是通过软件调用百度地图的api,自己可视化地图这种方法需要具备软件编程知识,熟悉map api的具体用法从一个简单的需求出发,通过python调用百度地图api,实现位置信息转换和房价指数热图,需要经过申请key、批量经纬度转换、转换为js数据、百度热图API调整等过程百度地图开发平台提供了多种API供开发者调用,本文涉及到Place API和Geocoding API

  Place API用于查询某个地点的经纬度坐标信息;地理编码API用于查询经纬度坐标的结构化地址

  参考文件如下:

  place API:http://lbs yun . Baidu . com/index . PHP?title=web API/guide/web service-place API

  geocodeingapi:http://lbs yun . Baidu . com/index . PHP?title=web API/guide/web service-地理编码

  一   问题需求 

  根据房价指数数据,利用Python编程实现位置信息转换,通过百度地图API显示房价指数热图

  两种解决方案

  百度地图api上相关位置的显示是基于经纬度的比如在北京,经度是116.395645,纬度是39.929986这里需要通过百度的地理编码API获取不同城市的经纬度坐标

  所以可以将csv数据文件导入python,通过调用百度地图API,批量获取所有城市的坐标信息

  根据获取的json数据绘制热图

  三位置信息转换

  1.开发的第一步:注册密钥

  在做所有的工作之前,你需要注册百度地图api(首先你需要使用百度的账号)获得一个免费的密钥,这样才能充分的使用api登录地址:在http://lbsyun.baidu.com/,首页点击申请键按钮,填写个人信息、邮箱注册等后,在开放平台点击“创建申请”注册成功后,填写相关信息,填写应用名称,在IP白名单框中输入接入白名单如果不知道自己的IP地址,可以设置为0.0.0/0注:百度提醒,会有被泄露的风险提交后,您的密钥位于创建应用程序的Access Application (AK)列中2.整理城市房地产数据

  初始数据为2018年3月份70个大中城市商品住宅销售价格变动情况,国家统计局网站公布的数据链接为:3358 www.stats.gov.cn/tjsj/zxfb/201804/t20180418 _ 1594610.html,数据编制为201803house.csv,价格由两列组成

  3.信息转换的实现

  1)编写一个函数getBaidulnglat,用于从中国城市地址获取城市地图信息

  2)阅读201803house.csv,逐城调用GetBaidulnglat3)百度Web服务API下的地理编码API接口获取你需要的地址的经纬度坐标并转换成json结构化数据从urllib.request导入URL,Quote def getbaidulinglat(address):URL= 3358api.map.baidu.com/geocoder/v2/output= JSON #百度地图API可以指定JSON或XML返回数据ak= MMMMMMMMMMMs9SG539999999xxxxx

  Add=quote(address) #为防止乱码汉字,先用quote编码url=url ?address= add output= output AK= AK req=urlpen(URL)RES=req . read()。decode () #对于返回的响应对象,将其他编码字符串解码为unicode temp=json.loads(res) #解析json数据返回Tempfile=open(R files \ \ Baidu API _ point . JSON , w )file 1=open(R files \ \ Baidu API _ citys . JSON , w )with open(R files \ \ 2018 03 house . CSV ,R )as CSV file:reader=CSV . reader(CSV file)For line in reader:if reader . line _ num==1:continue b=1strip () #第一列city c=line[1]。strip()Get city=getBaidulnglat(b)#调用函数获取API返回包LNG=getBaidulnglat(b)[ result ][ location ][ LNG ]#调用函数获取经度lat=getBaidulnglat(b)[ result ][ location ][ lat ]#获取纬度str _ temp= {lat: str (lat), LNG: str (LNG), count: str (c)},输出 file.write。

  制作热图1。从百度开发平台获取初始HTML代码。

  首先,我们构建一个html文件,从http://developer.baidu.com/map/jsdemo.htm#c1_15网站复制源代码,先用你自己的密钥替换代码中的AK;(注意:这个键和python中用来调用百度API的键不一样,需要在刚刚创建键的地方重新创建一个,选择键类型作为前端来支持调用百度的javascriptAPI)

  2.更新数据。复制前面生成的baiduapi_point.json文件中的数据,用HTML代码替换var points=[]中的内容。

  3.设置热图中心点和地图级别,以Xi安为中心点和级别5。百度地图JavaScript API热图默认为以天安门广场为中心的北京地区地图,因此需要将热图中“设置中心点坐标和地图级别”的部分修改为合适的中心点和地图级别。(见下图)。具体设置请参考百度地图创建API:http://api.map.baidu.com/lbsapi/creatmap/.

  4.热图代码中的最大点数值修改为150。因为大多数价格数据(即点数)都超过100(默认最大值为100)。5.展示效果。只需运行本地HTML文件。

  6.展开描述。这里用本地页面实现,动态页面也差不多,这里就不赘述了。

  五另一个例子(地址信息转换)

  另一个例子,百度地图应用程序接口可以指定数据或者可扩展置标语言的返回数据,本例子展示不同返回格式的用法,放置应用程序接口使用的返回格式为JSON,地理编码应用程序接口使用的返回格式为XML,两种格式的处理方法稍有不同编码=utf-8 使用放置应用程序接口把从文本中提取出的地址转换为对应的经纬度坐标,再使用地理编码应用程序接口把经纬度坐标转换为结构化地址来自XML的“”。etree导入元素树导入JSON导入urllib。请求搜索=urllib。解析。引用(u 武汉编码( utf-8 )。区域=URL库。解析。引用(u 西安encode( utf-8 ))URL= http://API。地图。百度一下。com/place/v2/search?query=% s region=% scity _ limit=true output=JSON AK=你的AK%(search,region)req=urllib。请求。urlopen(URL)# JSON格式的返回数据res=req.read().解码( utf-8) #将其他编码的字符串解码成unicode temp=JSON。加载(RES)打印(temp)地址=temp[结果][0][地址]#地址location=temp[结果][0][位置] #经纬度坐标打印(地址,位置)lat=str(位置[lat])#纬度坐标lng=str(location[lng])#经度坐标URL 2=http://api.map.baidu.com/geocoder/v2/?callback=renderReverselocation= lat , lng output=xmlpois=1ak=你的AK req 2=URL lib。请求。urlopen(URL 2)# XML格式的返回数据res2=req2.read().解码( utf-8)#将其他编码的字符串解码成unicoderoot=元素树。from字符串(res2)#解析可扩展置标语言时直接将字符串转换为一个元素,解析树的根节点node _ find=root。find(结果/格式化地址)# find()用于查找属于某个标签的第一个元素,这里查找结构化地址print(node_find.text)#输出结构化的地址

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: