deepseek-v3-调用高德地图-线路规划和距离预报

import requests

class RoutePlanner:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = "https://restapi.amap.com/v3/direction/driving"

    def get_route(self, origin, destination):
        # 清理坐标格式
        origin = origin.replace(' ', '')
        destination = destination.replace(' ', '')

        params = {
            'key': self.api_key,
            'origin': origin,
            'destination': destination,
            'strategy': 0,  # 0-速度优先
            'extensions': 'base'
        }

        try:
            response = requests.get(self.base_url, params=params)
            data = response.json()

            if data['status'] == '1':
                route = data['route']['paths'][0]
                distance = int(route['distance']) / 1000  # 转换为公里
                duration = int(route['duration']) / 60  # 转换为分钟
                steps = route['steps']

                print(f"规划路线成功!")
                print(f"总距离:{distance:.1f}公里")
                print(f"预计时间:{duration:.1f}分钟")
                print("\n路线详情:")
                for step in steps:
                    print(f"- {step['instruction']} ({int(step['distance'])/1000:.1f}公里)")
            else:
                print(f"路线规划失败,错误信息:{data.get('info', '未知错误')}")
        except requests.exceptions.RequestException as e:
            print(f"网络请求失败:{str(e)}")
        except ValueError as e:
            print(f"数据解析失败:{str(e)}")

def main():
    api_key = "61d923addb5fc1--youkey"
    planner = RoutePlanner(api_key)

    print("高德地图小车路径规划系统")
    print("示例:经度,纬度(如:116.397428,39.90923)或详细地址")
    origin = input("请输入起点:")
    destination = input("请输入终点:")

    # 处理坐标格式
    def format_coord(coord):
        if ',' in coord:
            return coord
        if len(coord) < 14:
            return coord
        # 尝试在合适位置插入逗号
        try:
            # 经度通常在3位整数+6位小数
            lon = float(coord[:9])
            lat = float(coord[9:])
            return f"{lon},{lat}"
        except ValueError:
            return coord

    origin = format_coord(origin)
    destination = format_coord(destination)

    print(f"起点坐标:{origin}")
    print(f"终点坐标:{destination}")

    planner.get_route(origin, destination)

if __name__ == "__main__":
    main()

运行结果: 

PS F:\开发\work> python route_planner.py
高德地图小车路径规划系统
示例:经度,纬度(如:116.397428,39.90923)或详细地址
请输入起点:105.058433,29.580228
请输入终点:104.096488,30.635261
起点坐标:105.058433,29.580228
终点坐标:104.096488,30.635261
规划路线成功!
总距离:173.0公里
预计时间:127.2分钟

路线详情:
- 向东行驶8米进入环岛 (0.0公里)
- 向东北行驶160米离开环岛 (0.2公里)
- 沿新华路向北行驶65米左转 (0.1公里)
- 沿玉溪路向西行驶488米向左前方行驶 (0.5公里)
- 沿邱家嘴立交桥途径双洞路向西南行驶1.1千米向右前方行驶 (1.1公里)
- 沿双洞路向西行驶728米靠左 (0.7公里)
- 沿双洞路途径内江枢纽向西行驶162米减速行驶到达收费站 (0.2公里)
- 沿内江枢纽向西行驶33米靠右 (0.0公里)
- 沿内江枢纽向西行驶135米靠右 (0.1公里)
- 沿内江枢纽途径G76厦蓉高速向西北行驶4.6千米靠左沿主路行驶 (4.6公里)
- 沿G76厦蓉高速途径球溪河大桥向西北行驶90.0千米向右前方行驶进入匝道 (90.0公里)
- 沿清泉枢纽向东北行驶290米靠左 (0.3公里)
- 沿清泉枢纽途径S3成资渝高速、S3天府国际机场高速向西北行驶40.5千米靠左沿主路行驶 (40.5公里)
- 沿S3天府国际机场高速向西北行驶1.2千米直行进入隧道 (1.2公里)
- 沿龙泉山2号隧道途径S3天府国际机场高速向西北行驶2.5千米直行进入隧道 (2.5公里)
- 沿龙泉山1号隧道途径S3天府国际机场高速向西北行驶5.5千米靠左沿主路行驶 (5.5公里)
- 沿S3天府国际机场高速途径川心特大桥、新兴特大桥向西北行驶14.5千米减速行驶到达收费站 (14.5公里)
- 沿S3天府国际机场高速途径三圣特大桥向西北行驶4.3千米向右前方行驶进入匝道 (4.3公里)
- 沿娇子立交向东北行驶1.1千米靠左 (1.1公里)
- 沿娇子立交途径龙兴大道、龙兴大道静宁路、静安路、净居寺路向西北行驶3.2千米右转 (3.2公里)
- 沿净居寺路向东北行驶20米左转 (0.0公里)
- 沿娇子立交向东北行驶1.1千米靠左 (1.1公里)
- 沿娇子立交途径龙兴大道、龙兴大道静宁路、静安路、净居寺路向西北行驶3.2千米右转 (3.2公里)
- 沿娇子立交向东北行驶1.1千米靠左 (1.1公里)
- 沿娇子立交向东北行驶1.1千米靠左 (1.1公里)
- 沿娇子立交途径龙兴大道、龙兴大道静宁路、静安路、净居寺路向西北行驶3.2千米右转 (3.2公里)
- 沿净居寺路向东北行驶20米左转 (0.0公里)
- 沿净居寺路途径龙兴大道净居寺路、龙舟路向西北行驶1.4千米右转 (1.4公里)
- 沿莲桂南路向东北行驶633米左转 (0.6公里)
- 沿莲桂西路向西北行驶290米到达目的地 (0.3公里)
PS F:\开发\work>

 方法二

import requests


def amap_route_planning(start, end, key):
    url = "https://restapi.amap.com/v3/direction/driving"
    params = {
        "key": key,
        "origin": start,
        "destination": end,
    }
    response = requests.get(url, params=params)
    data = response.json()
    if data.get("status") == "1":
        route = data.get("route", {})
        paths = route.get("paths", [])
        if paths:
            # 取第一条规划路径
            path = paths[0]
            distance = path.get("distance", 0)  # 距离,单位:米
            duration = path.get("duration", 0)  # 时长,单位:秒
            print(f"距离: {distance} 米")
            print(f"时长: {duration} 秒")
            # 详细的路径信息,包含各个路段的信息,这里仅作示例
            steps = path.get("steps", [])
            for step in steps:
                print(step.get("instruction"))
        else:
            print("未找到规划路径")
    else:
        print("请求失败,错误信息:", data.get("info"))


if __name__ == "__main__":
    # 请将以下的 'your_api_key' 替换为你自己申请的高德地图 API 密钥
    amap_route_planning("116.310003,39.991957", "116.405285,39.904989", "61d923addb5fc--youkey")
S F:\开发\work> & E:/Python/Python311/python.exe f:/开发/work/gueihua_1.py
距离: 19630 米
时长: 2651 秒
沿求知路向西行驶468米左转
沿颐和园路向南行驶834米左转
沿北四环西路辅路向东行驶339米向左前方行驶进入主路
沿北四环西路入口途径北四环西路、北四环中路向东行驶3.3千米向右前方行驶进入辅路
沿北四环中路出口途径北四环中路辅路向东行驶435米右转
沿学院路向南行驶788米靠左
沿西土城路途径学知桥向南行驶2.1千米靠左沿主路行驶
沿西土城路途径西直门北大街向南行驶1.7千米靠左沿主路行驶
沿西直门北大街途径西二环向南行驶3.9千米向右前方行驶进入右岔路
沿复兴门桥向南行驶202米靠左
沿复兴门桥向南行驶345米靠右
沿复兴门桥向西南行驶14米右转
沿复兴门桥向北行驶155米右转
沿复兴门内大街途径西长安街、东长安街向东行驶4.3千米右转
沿正义路向南行驶484米右转
向西行驶32米右转
向北行驶163米左转
向西行驶84米到达目的地
PS F:\开发\work> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值