暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用百度地图API获相关位置信息--Python代码

每日一Python 2018-08-30
1061

最近工作接触到GPS,想计算两个GPS之间的距离,查了一下发现百度地图有提供给开发者各种接口,地址是这个http://lbsyun.baidu.com/,利用自己的百度账号登录,创建应用ak,在调用各个接口时要加上你自己的应用ak;可以看一下开发文档中提供的接口和工具,如图:

我先试了一下“地图生成器”,利用GPS坐标,来生成以它为中心的地图。点击地图生成器会跳转到一个如下一个页面,点击获取代码就可以获取到生成地图的代码,只要输入你自己应用的ak和你想查询的GPS,就可以生成地图啦

另外看了一下服务接口中的“地图调起服务”中的各个接口,主要有

图区功能、搜索功能和信息显示,可以显示地址的全景图、坐标、路线规划等。

我这次主要是想计算两个GPS之间的直线距离和显示全景静态图,所以这边文章就讲一下这个,其余的大家可以看一下百度地图提供的官方接口文档,里面怎么配置参数写的都挺明确的,调用方法也基本都一致;

1.计算两个GPS之间的直线距离的基本是

http://api.map.baidu.com/telematics/v3/distance

  参数有waypoint,必填项,可传入两个以上GPS值,之间用 ; 来分开,output,输出的数据格式,选填,默认是xml格式,可选json格式,coord_type,GPS坐标类型,默认是gcj02经纬度坐标;


import pandas as pd
from urllib.request import urlopen 

#导入数据,这里计算的直线距离就是坐标1和坐标2之间的 data = pd.read_excel("坐标.xlsx") data


data['距离'] = None    
#在data中新建一列距离,来保存计算的GPS间的距离 def dist(data):    #计算两个坐标之间的距离    startLng = data['坐标1'].apply(lambda x: x.split(',')[1])
     #计算坐标1的经度    startLat = data['坐标1'].apply(lambda x: x.split(',')[0])    #计算坐标1的纬度    
        endLng = data['坐标2'].apply(lambda x: x.split(',')[1])      #计算坐标2的经度  
         endLat = data['坐标2'].apply(lambda x: x.split(',')[0])      #计算坐标2的纬度      for i in range(0,len(startLng)):        url= "http://api.map.baidu.com/telematics/v3/distance?output=json&ak=你的ak&waypoints="          url = url+startLng[i]+","+startLat[i]+";"+endLng[i]+","+endLat[i]        req = urlopen(url)        data['距离'][i] = eval(req.read())['results'][0]    return data

最终结果如图:

接下来求一个坐标的全景静态图:


import requests
from PIL import Image
from io import BytesIO
url = 'http://api.map.baidu.com/panorama/v2?ak=你的ak&width=512&height=256&fov=360'  
url = url + "&location=%s,%s" % ('121.533157','31.622408') req = requests.get(url) pic = Image.open(BytesIO(req.content)) pic.show()

结果为

其他的接口调用和这两个类似,配好参数利用requests或者urllib发送请求就可以啦

文章转载自每日一Python,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论