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

转自每日一Python 微信公众号

最近工作接触到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发送请求就可以啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值