获取高德路径规划数据

获取高德路径规划数据

1 使用高德在线地图,归还路径,并复制链接。

2 脚本自动获取

python3 gd_url_to_sdroute.py sdroute_url_copy.json
  • gd_url_to_sdroute.py

    # -*- coding: utf-8 -*-
    import urllib.parse
    from urllib.parse import urlparse, parse_qs
    import json
    import requests
    import os
    import sys
    from urllib.parse import urlparse
    
    
    def decode_url(url):
        decoded_url = urllib.parse.unquote(url)
        return decoded_url
    
    
    def create_file_with_path(filepath):
        print(filepath)
        # 获取文件所在路径
        directory = os.path.dirname(filepath)
        # 检查路径是否存在
        if not os.path.exists(directory):
            # 创建路径
            os.makedirs(directory)
    
    
    def extract_points_from_url(url):
        parsed_url = urlparse(url)
        query_params = parse_qs(parsed_url.query)
    
        # 提取起点信息
        start_name = query_params['from[name]'][0]
        start_lnglat = query_params['from[lnglat]'][0].split(',')
        start_point = {
            'name': start_name,
            'lng': float(start_lnglat[0]),
            'lat': float(start_lnglat[1])
        }
    
        # 提取终点信息
        end_name = query_params['to[name]'][0]
        end_lnglat = query_params['to[lnglat]'][0].split(',')
        end_point = {
            'name': end_name,
            'lng': float(end_lnglat[0]),
            'lat': float(end_lnglat[1])
        }
    
        # 提取途经点信息
        via_points = []
        for i in range(6):
            if f'via[{i}][name]' in query_params:
                via_name = query_params[f'via[{i}][name]'][0]
                via_lnglat = query_params[f'via[{i}][lnglat]'][0].split(',')
                via_point = {
                    'name': via_name,
                    'lng': float(via_lnglat[0]),
                    'lat': float(via_lnglat[1])
                }
                via_points.append(via_point)
    
        return start_point, end_point, via_points
    
    
    def get_sdroute_url(url):
        urldate = "https://restapi.amap.com/v3/direction/driving?key={key}&origin={start_longitude},{start_latitude}&destination={end_longitude},{end_latitude}&originid=&destinationid=&extensions=base&strategy=0&waypoints={waypoints}&avoidpolygons=&avoidroad="
        key = "you-key"
        
        start_point, end_point, via_points = extract_points_from_url(url)
        print("起点:", start_point)
        print("终点:", end_point)
        print("途经点:", via_points)
        start_lon = start_point['lng']
        start_lat = start_point['lat']
        end_lon = end_point['lng']
        end_lat = end_point['lat']
        waypoints = ''
    
        for point in via_points:
            waypoints += f"{point['lng']},{point['lat']};"
        urldate = urldate.format(key=key, start_longitude=start_lon, start_latitude=start_lat, end_longitude=end_lon, end_latitude=end_lat, waypoints=waypoints)
        response = requests.get(urldate)
        resdata = response.json()
        return resdata
    
    
    def sdroute_json_to_txt(data, output_txt_path):
        paths = data["route"]["paths"]
        polylines = ""
        for path in paths:
            steps = path["steps"]
            for step in steps:
                polylines += step["polyline"]
                polylines += ";"
        create_file_with_path(output_txt_path)
        with open(output_txt_path, 'w') as file:
            file.write(polylines)
    
    
    def is_valid_url(url):
        try:
            result = urlparse(url)
            return all([result.scheme, result.netloc])
        except ValueError:
            return False
    
    
    def get_urls_out_name(json_file):
        # 检查路径是否存在
        if not os.path.exists(json_file):
            print("json_file " + "no exists")
            exit()
        # 读取JSON文件
        with open(json_file, 'r') as file:
            data = json.load(file)
        routes = data["url"]["routes"]
        return routes
    
    
    if __name__ == '__main__':
        #######
        # python3 gd_url_to_sdroute.py ./sdroute_url_copy.json
        # python3 gd_url_to_sdroute.py url sdroute.txt
    
        if len(sys.argv) != 3 and len(sys.argv) != 2:
            print("python3 gd_url_to_sdroute.py url fileName ")
            print("python3 gd_url_to_sdroute.py ./sdroute_url_copy.json ")
            exit()
        routes = []
        if len(sys.argv) == 3:
            route = {}
            route["routeName"] = sys.argv[2]
            route["routeUrl"] = sys.argv[1]
            routes.append(route)
        if len(sys.argv) == 2:
            routes = get_urls_out_name(sys.argv[1])
        if len(routes) == 0:
            print("urls error null")
            exit()
        
        for route in routes:
            out_file_path = "./{output_files_name}".format(output_files_name=route["routeName"])
            if not is_valid_url(route["routeUrl"]):
                print("url error ")
                exit()
            out_file_path_txt = out_file_path + ".txt"
            sdroute_json_to_txt(get_sdroute_url(route["routeUrl"]), out_file_path_txt)
    
    
  • sdroute_url_copy.json

    {
        "url": {
            "routes": [
                {
                    "routeName": "xianlu1",
                    "routeUrl": "https://ditu.amap.com/dir?type=car&policy=1&from%5Bid%5D=regeo_1697598238943-from&from%5Bname%5D=%E7%BF%94%E6%AE%B7%E8%B7%AF&from%5Blnglat%5D=121.518294%2C31.300787&from%5Badcode%5D=310110&from%5Bmodxy%5D=&to%5Bid%5D=regeo_1697598206752-to&to%5Bname%5D=%E7%BF%94%E6%AE%B7%E8%B7%AF%E8%BE%85%E8%B7%AF&to%5Blnglat%5D=121.517799%2C31.300419&to%5Badcode%5D=310110&to%5Bmodxy%5D=&via%5B0%5D%5Bid%5D=regeo_1698410208281&via%5B0%5D%5Bname%5D=%E9%82%AF%E9%83%B8%E8%B7%AF&via%5B0%5D%5Blnglat%5D=121.515168%2C31.299788&via%5B0%5D%5Badcode%5D=310110&via%5B0%5D%5Bmodxy%5D=&via%5B1%5D%5Bid%5D=regeo_1697598136780&via%5B1%5D%5Bname%5D=%E6%94%BF%E6%B0%91%E8%B7%AF&via%5B1%5D%5Blnglat%5D=121.501945%2C31.300842&via%5B1%5D%5Badcode%5D=310110&via%5B1%5D%5Bmodxy%5D=&via%5B2%5D%5Bid%5D=regeo_1697598146420&via%5B2%5D%5Bname%5D=%E9%80%B8%E4%BB%99%E8%B7%AF&via%5B2%5D%5Blnglat%5D=121.489364%2C31.294117&via%5B2%5D%5Badcode%5D=310109&via%5B2%5D%5Bmodxy%5D=&via%5B3%5D%5Bname%5D=%E4%B8%8A%E6%B5%B7%E5%B8%82%E8%99%B9%E5%8F%A3%E5%8C%BA%E8%BF%90%E5%85%89%E8%B7%AF&via%5B3%5D%5Bid%5D=&via%5B3%5D%5Badcode%5D=310109&via%5B3%5D%5Bpoitype%5D=&via%5B3%5D%5Blnglat%5D=121.496274%2C31.290613&via%5B3%5D%5Bmodxy%5D=&via%5B4%5D%5Bid%5D=regeo_1697598194734&via%5B4%5D%5Bname%5D=%E6%94%BF%E4%BF%AE%E8%B7%AF&via%5B4%5D%5Blnglat%5D=121.50954%2C31.295081&via%5B4%5D%5Badcode%5D=310110&via%5B4%5D%5Bmodxy%5D="
                }
            ]
        }
    }
    

3 注册高德获取key(没有高德账号,自行注册)

https://lbs.amap.com/api/webservice/guide/api/direction/

注册Key:https://console.amap.com/dev/index

3.1 创建应用

在这里插入图片描述
在这里插入图片描述

3.2 添加key

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述### 3.3 填充key 值,使用脚本
在这里插入图片描述

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现高德路径规划设置爬取地点和时间的功能,可以使用Python进行开发。 首先,需要安装相应的库,如requests和json库来处理网络请求和处理返回的数据。 其次,需要通过高德地图的路径规划API来获取路径信息。可以根据用户提供的起点、终点和时间等参数来构建请求URL,然后通过requests库发送GET请求,并将返回的数据解析为JSON格式。 在解析返回数据时,可以获取到路径的详细信息,包括步行距离、驾车距离、方向指示等。可以根据需要的信息,将其存储到数据库或进行其他处理。 对于路径规划设置爬取地点和时间的需求,可以在构建请求URL时,将起点、终点和时间等参数与相应的数值进行拼接。例如,可以使用时间戳表示时间参数,具体的格式可以根据API文档进行确认。 在获取到返回的路径信息后,可以根据需要进行进一步的处理。例如,可以根据时间参数,筛选出到达目的地的最短耗时路径。 最后,可以根据业务需求对获取到的路径信息进行展示或进一步处理。 总之,通过使用Python编写程序,结合高德地图路径规划API,可以实现高德路径规划设置爬取地点和时间的功能。 ### 回答2: 高德地图路径规划是一种获取地点之间最短路径的功能,它可以通过爬取地点之间的路线信息来实现。要实现这个功能,可以使用Python编程语言和相应的库来进行开发。 首先,需要使用高德地图API来获取节点之间的路径信息。通过在Python中发送请求,可以获取到包含路径信息的JSON数据。例如,可以使用requests库发送GET请求获取路径数据。 然后,需要解析返回的JSON数据,提取出需要的路线信息。可以使用Python中的json库来解析JSON数据,将其转化为Python对象,然后根据所需的信息进行提取。 接下来,可以进行数据的处理和可视化。使用Python中的pandas库可以方便地处理和分析数据,例如将路径信息转化为DataFrame进行进一步分析。使用plotly或matplotlib库可以将路径信息可视化,帮助用户更直观地了解路径规划结果。 最后,需要将路径规划的设置与爬取时间结合起来。可以设置不同的参数来根据用户需求选择最短路径、避开拥堵等条件,从而得到不同的路径规划结果。通过监测路况和交通信息,可以根据实时数据进行路径规划,并计算出爬取地点所需的时间。 总结来说,高德路径规划设置爬取地时间的实现方法是使用Python编程语言,通过高德地图API获取路径信息,解析JSON数据,处理和可视化数据,最后结合爬取地点的时间来进行路径规划设置。这样就可以满足用户的需求并获得准确的路径规划结果。 ### 回答3: 高德路径规划是一种常用的地理位置导航服务,通过API接口可以使用python进行爬取地时间的设置。 首先,需要导入相应的库。使用Python中的requests库可以发送HTTP请求,获取需要的数据;使用json库可以解析返回的JSON数据。 其次,需要获取高德地图API的key,将其作为参数传入请求中,以进行权限验证。 然后,使用requests库发送请求,指定请求类型为GET,将请求的URL设置为高德地图API的路径规划接口地址,通过设置请求参数传入起始点和终点的经纬度信息。 接着,解析返回的数据。将请求返回的内容转换为JSON格式,可以利用json库中的loads方法进行解析。根据API返回的结果结构,可以提取出所需要的路径规划信息,例如预计时间、行驶距离等。 最后,将获取到的路径规划信息输出或者进行进一步处理。 需要注意的是,使用高德地图API进行地理位置的爬取需要传入有效的经纬度信息,请求的次数和频率要符合相关的API使用规定,同时需要遵循API的授权使用方式,否则可能会导致请求失败或者遭受限制。 通过以上步骤,可以使用Python爬取高德路径规划的地时间数据,并根据实际需求进行进一步的处理和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值