Dmail 发表于 2019-1-11 15:38

[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加进去就可以了。

Dmail 发表于 2019-1-11 15:53

给自己加个油,努力写代码,记录当前代码量。
检查当前运行目录下的所有.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行代码

Dmail 发表于 2019-1-11 16:33

mengsiyiren 发表于 2019-1-11 16:21
大佬,还是有些看不懂,代码是复制到哪里?Python?

嗯需要搭建python环境,然后代码复制到ide里面执行一下就好了。
ide推荐notepad++ 或者 sublime text3。
python环境搭建教程,可以在站内搜索以下,有人发过相关教程的。
python比较好的地方,语法简洁,第三方库比较多,而且使用pip很方便安装

高苗苗 发表于 2019-1-11 16:12

祝你早日找到合适的工作

Wise_58 发表于 2019-1-11 16:14

mengsiyiren 发表于 2019-1-11 16:21

大佬,还是有些看不懂,代码是复制到哪里?Python?

YuLoo 发表于 2019-1-11 16:29

大佬,膜拜,默默的收藏

Hwk123 发表于 2019-1-11 17:00

真巧 我也在大沙··· 支持一下 说不定不久就用得上 ;www

superlaomao 发表于 2019-1-11 17:51

楼主是计算机毕业吗??

Dmail 发表于 2019-1-11 18:04

superlaomao 发表于 2019-1-11 17:51
楼主是计算机毕业吗??

是的..上学的时候学的东西都丢给老师了。
页: [1] 2
查看完整版本: [python]百度地图API,正/逆地理编码,路线规划接口的调用,实现输出出行的距离和...