高德地图进阶开发实战案例(4):计算骑行的距离和时间

本文介绍了如何使用高德地图的JS API和Web API进行骑行路线规划。首先展示了jsAPI的基本用法,通过AMap.Riding搜索骑行路线。接着,详细解释了webAPI的起始点处理函数,用于获取骑行路线的距离和时长。最后,展示了如何批量处理多个起终点的骑行路线规划,通过循环调用webAPI实现。注意,高德地图的路线规划批量处理接口已下线,每日限额300000次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

高德地图路线规划批量处理接口已下线,每日分配限额300000次。

jsAPI

var map = new AMap.Map("container", {
        center: [116.397559, 39.89621],
        zoom: 14
    });

    var ridingOption = {
        map: map,
        panel: "panel",
        policy: 1,
        hideMarkers: false,
        isOutline: true,
        outlineColor: '#ffeeee',
        autoFitView: true
    }

    var riding = new AMap.Riding(ridingOption)

    //根据起终点坐标规划骑行路线
    riding.search([121.548053,29.806799],[121.55715,29.805168], function(status, result) {
        // result即是对应的公交路线数据信息,相关数据结构文档请参考  https://lbs.amap.com/api/javascript-api/reference/route-search#m_RidingResult
        if (status === 'complete') {
            log.success('骑行路线数据查询成功')
          var json =JSON.stringify(result);
          console.log(json);
        } else {
            log.error('骑行路线数据查询失败' + result)
        }
    });

webAPI起始点处理

function getDriving($origin, $destination)
{
    $url = "https://restapi.amap.com/v3/direction/driving?origin=" . $origin . "&destination=" . $destination . "&extensions=base&output=json&key=4d9a765939**8a3341c2828d87c";
    $info = json_decode(file_get_contents($url), true);
    if ($info["info"] == "OK") {
        //var_dump($info["route"]["paths"][0]["distance"]);
        $res = [];
        $distance = round($info["route"]["paths"][0]["distance"] / 1000, 2);
        $duration = round($info["route"]["paths"][0]["duration"] / 60, 2);
        $res["data"]["distance"] = $distance;
        $res["data"]["duration"] = $duration;
        die(json_encode($res));
    } else {
        $res["msg"] = $info["info"];
        die(json_encode($res));
    }

}
$origin = "121.547919,29.806776";
$destination = "121.612332,29.915239";
getDriving($origin, $destination);

webAPI批量处理

function getDriving($origin, $destination)
{
    $url = "https://restapi.amap.com/v3/direction/driving?origin=" . $origin . "&destination=" . $destination . "&extensions=base&output=json&key=4d9a765939a2**2828d87c";
    $info = json_decode(file_get_contents($url), true);
    if ($info["info"] == "OK") {
        //var_dump($info["route"]["paths"][0]["distance"]);
        $res = [];
        $distance = round($info["route"]["paths"][0]["distance"] / 1000, 2);
        $duration = round($info["route"]["paths"][0]["duration"] / 60, 2);

        $res["data"]["distance"] = $distance;
        $res["data"]["duration"] = $duration;

        echo "<pre>";
        echo "距离:" . $res["data"]["distance"] . "千米 时间:" . $res["data"]["duration"] . "分钟<br>";
    } else {
        $res["msg"] = $info["info"];
        die(json_encode($res));
    }

}

$origin = "121.547919,29.806776;121.549689,29.803545";//起点集
$destination = "121.612332,29.915239;121.557821,29.8055";//终点集

$arr1 = explode(";", $origin);
$arr2 = explode(";", $destination);

//批处理;
for ($i = 0; $i < count($arr1); $i++) {
    getDriving($arr1[$i], $arr2[$i]);
}

lockdatav Done!

### NVIDIA Jetson 开发板 TensorRT 模型部署与推理教程 #### 一、TensorRT 的基本概念 TensorRT 是一个专为深度学习推理设计的高性能优化工具,能够显著提升基于 NVIDIA GPU 平台的应用程序运行效率[^2]。它通过减少计算冗余优化内存访问模式来降低延迟并提高吞吐量。 #### 二、Jetson 开发板上的模型部署流程概述 在 NVIDIA Jetson 系列开发板(如 Jetson Nano, TX2, Xavier NX 等)上使用 TensorRT 进行模型推理通常涉及以下几个方面: 1. **模型转换** PyTorch 或其他框架中的模型需要先被导出为 ONNX 格式,然后再导入至 TensorRT 中完成进一步优化[^1]。此过程确保了不同框架之间的兼容性。 2. **环境搭建** 需要在 Jetson 设备上安装必要的依赖项以及配置好 Python C++ 编译环境以便支持后续操作[^4]。对于网络较慢的情况可考虑更换国内镜像源加快资源获取速度[^5]。 3. **加载预训练权重文件** 利用脚本自动下载或者手动上传已经过训练好的参数集到目标机器上供下一步骤调用。 4. **构建引擎 (Engine Building)** 使用 tensorrt api 构建 inference engine ,该阶段会根据输入尺寸固定化网络结构从而达到最佳性能表现效果。 5. **执行预测任务** 最终编写应用程序接口实现图片/视频流处理等功能,并展示结果输出。 以下是具体实施过程中可能涉及到的一些技术细节说明: --- #### 三、详细步骤解析 ##### (一)准备工作 - 安装最新版本 CUDA Toolkit 及 cuDNN 库匹配当前硬件驱动情况; - 下载对应系统的 TensorRT SDK 软件包解压后设置 LD_LIBRARY_PATH 环境变量指向其 lib 文件夹路径下动态链接库位置; ```bash export TENSORRT_DIR=/path/to/tensorrt/installation/ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TENSORRT_DIR/lib ``` - 如果计划利用 python 接口,则还需额外 pip install nvidia-pyindex 同时 clone https://github.com/NVIDIA-AI-IOT/deepstream_python_apps.git 获取更多示例项目参考资料。 ##### (二)ONNX 导出实例演示(Python) 假设原始 pytorch model 存储于 `model.pth` 当中,下面给出了将其转化为 .onnx 文件形式的一般方法: ```python import torch from torchvision import models dummy_input = torch.randn(10, 3, 224, 224).cuda() # example input shape model = models.resnet18(pretrained=True).eval().cuda() output_onnx = 'resnet18.onnx' input_names = ["actual_input_1"] output_names = ["output1"] torch_out = torch.onnx._export(model, dummy_input, output_onnx, export_params=True, verbose=False, input_names=input_names, output_names=output_names) ``` 注意上述代码片段仅作为模板参考实际应用需调整 batch size ,image resolution 参数满足特定需求场景下的要求。 ##### (三)TRT Engine 创建逻辑(C++) 一旦拥有了合适的 onnx descriptor 就可以通过 c++ sdk 来定义 builder class 实例进而生成序列化的 plan file 如 trt.engine : ```cpp #include "NvInfer.h" using namespace nvinfer1; // ... other includes and definitions ... IBuilder* builder = createInferBuilder(gLogger); INetworkDefinition* network = builder->createNetworkV2(0U); parseOnnx(network,"./resnet18.onnx",true,&gLogger); ICudaEngine* engine = builder->buildCudaEngine(*network); assert(engine != nullptr); serializeAndSaveEngine(*engine,"trt.engine"); destroyResources(builder,network); ``` 此处省略部分辅助函数声明但整体思路清晰明了即依次经历读取外部描述符 -> 解析节点关系 -> 设置约束条件 -> 执行编译动作最后保存成果物结束整个环节. ##### (四)实时推断服务端架构建议 考虑到边缘侧算力有限推荐采用异步多线程机制分摊负载压力同时引入队列管理机制平衡前后端速率差异避免瓶颈现象发生影响用户体验质量下降等问题出现. --- ### 总结 综上所述,在 NVIDIA Jetson 上成功运用 TensorRT 技术不仅可以极大程度缩短响应时间而且还能有效控制功耗水平非常适合移动终端领域内的各类 AI 场景落地实践推广开来具有重要意义价值非凡值得深入探索研究下去不断挖掘潜力所在创造更大社会经济效益回报给广大开发者群体共享科技成果带来的便利之处造福人类生活方方面面无处不在处处体现科技改变生活的魅力无限美好未来前景广阔令人期待万分!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏刻有时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值