[python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和...
本帖最后由 wushaominkk 于 2019-1-11 16:37 编辑说一些无关的:年前被裁,准备找一份离家近的工作,想偷懒在采集一些招聘信息,把招聘公司的地址给拔下来,然后计算出最近地铁站到公司的地址,离得比较近的就去看下公司里面有没有适合我的工作。(估计也就只有销售、客服之类的工作才有人要啊,难受!还是先回家过年,上一份工作也是客服...)最后给各位看官比个心,祝新年快乐!
[*]编程语言 python 3.71
[*]引用库:import urllib.parse
import urllib.request
import json
[*]百度地图webapi相关服务文档正/逆地理编码:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding
百度地图路线规划:http://lbsyun.baidu.com/index.php?title=webapi/direction-api-v2
网页查询图:
python运行结果图
下面贴出代码:
'''
文件名:L17.py
作者:小饭团
创建时间:2019年1月11日15:17:03
文件描述:调用Web服务API接口,百度地图路线规划 正/逆地理编码
'''
#-*- coding:utf-8 -*-
import urllib.parse
import urllib.request
import json
key='62PM27fx1Fbhq1pOWdpRlWt2o9B8tL9O'
#自定义类型
'''
属性名1:x 用于存储经度 类型 float
属性名2:y 用于存储纬度 类型 float
'''
class locationXY:
def __init__(self,x,y):
self.x=x
self.y=y
#正/逆地理编码
'''
函数名:getLocation
参数一:address 地名 类型 str 内部字符串类型
返回自定义类型数据 locationXY
'''
def getLocation(address):
data = urllib.parse.urlencode({'address': address, 'output': 'json','ak':key})
response = urllib.request.urlopen('http://api.map.baidu.com/geocoder/v2/?%s' % data)
html = response.read()
data = html.decode('utf-8')
result=json.loads(data)
lng=(result['result']['location']['lng'])
lat=(result['result']['location']['lat'])
l=locationXY(lng,lat)
return l
#百度地图路线规划服务
'''
函数名:计算所有路线
参数一:origin 起点位置 自定义类型locationXY
参数二:destionation 终点位置 自定义类型locationXY
无返回值
'''
def 计算所有路线(origin,destionation):
'''
tactics_incity 市内公交换乘策略
可选,默认为0
可选值:
0 推荐
1 少换乘
2 少步行
3 不坐地铁
4 时间短
5 地铁优先
'''
tactics_incity=0
data = urllib.parse.urlencode({'origin':'%s,%s'%(origin.y,origin.x),'destination':'%s,%s'%(destionation.y,destionation.x),'tactics_incity':tactics_incity,'ak':key})
response = urllib.request.urlopen('http://api.map.baidu.com/direction/v2/transit?%s' % data)
html = response.read()
data = html.decode('utf-8')
result = json.loads(data)
#print(data)
路线总数 = result['result']['total']
if (result['status']==0):
for x in range(路线总数):
if (result['status']==0):
distance=result['result']['routes']['distance']
duration=result['result']['routes']['duration']
print('路线:%s,距离%s米,花费%s分钟'%(x,distance,duration/60))
else:
print('error : %d'%result['status'])
'''
status 备注
0:成功
1:服务器内部错误
2:参数无效
1001:没有公交方案
1002:没有匹配的POI
'''
def main():
l1 = locationXY(113.464838,23.111949)#大沙东地铁站的坐标
l2 = getLocation('御富科贸园b2座205-20')
#print("%s\n%s"%(l1.x,l1.y))
计算所有路线(l1,l2)
#l2 =
if __name__ == '__main__':
main()
PS:代码里面的key,要换成自己的key。创建的应用类型为服务端,然后将自己电脑的ip加进去就可以了。 给自己加个油,努力写代码,记录当前代码量。
检查当前运行目录下的所有.py文件:
E:\pythonworkspace
共25个文件,1019行代码
检查当前运行目录下的所有.html文件:
G:\html5 code
共64个文件,1800行代码
检查当前运行目录下的所有.js文件:
G:\html5 code
共0个文件,0行代码
检查当前运行目录下的所有.css文件:
G:\html5 code
共19个文件,435行代码
检查当前运行目录下的所有.java文件:
E:\java code
共1个文件,17行代码
总计109个文件,3271行代码
mengsiyiren 发表于 2019-1-11 16:21
大佬,还是有些看不懂,代码是复制到哪里?Python?
嗯需要搭建python环境,然后代码复制到ide里面执行一下就好了。
ide推荐notepad++ 或者 sublime text3。
python环境搭建教程,可以在站内搜索以下,有人发过相关教程的。
python比较好的地方,语法简洁,第三方库比较多,而且使用pip很方便安装 祝你早日找到合适的工作 大佬,还是有些看不懂,代码是复制到哪里?Python? 大佬,膜拜,默默的收藏 真巧 我也在大沙··· 支持一下 说不定不久就用得上 ;www 楼主是计算机毕业吗?? superlaomao 发表于 2019-1-11 17:51
楼主是计算机毕业吗??
是的..上学的时候学的东西都丢给老师了。
页:
[1]
2