LBS 开发微课堂|轨迹重合率分析API升级:距离无上限,操作更简便

news2024/9/25 17:18:28

为了让广大的开发者

更深入地了解

百度地图开放平台的

技术能力

轻松掌握满满的

技术干货

更加简单地接入

位置服务

我们特别推出了

“位置服务(LBS)开发微课堂”

系列技术案例

第二期的主题是

轨迹重合率分析API升级


百度地图的鹰眼轨迹服务是一款行业领先的商用级轨迹管理服务,它结合百度地图专业精准的地理位置数据优势,助力开发者更高效地进行轨迹的分析和处理,让轨迹数据创造更大的价值。

在轨迹数据的分析处理中,重合率是非常重要的指标,不仅可用于聚类分析,还能帮助识别出异常数据。结合用户反馈,鹰眼轨迹服务对轨迹重合率分析API进行了全面的升级。

此次升级在轨迹上限、分析精度以及可用范围上均实现了显著提升,不仅突破了以往轨迹点数、轨迹距离的限制,同时也降低了使用门槛,使用该服务更加便捷高效。


01 问题引入

轨迹重合率分析在众多行业中都展现出了广泛的应用价值。

例如,在危化品运输过程中,要求运输车辆必须严格按照规划路线行驶。这就需要从车辆采集的数千公里长距离轨迹中,准确识别出偏航情况并标识出偏航路段。

图片

同样,在网约车行业中,顺风车拼单是一个典型的业务场景。这需要从愿意拼车的候选轨迹集合中,找出收益最高的轨迹组合,并评估拼单对原订单的影响。

图片

轨迹 1

图片

轨迹 2

在这些实际应用场景中,对轨迹的重合率分析服务都提出了较高的要求。


02 轨迹重合率分析升级

2.1 效果提升

为了更好地满足实际应用场景中的各类复杂需求,鹰眼轨迹服务的重合率分析API进行了以下升级:

1. 支持的点数提升到单条轨迹5万点,且对轨迹长度不作限制。这一升级可以满足货运客户纵贯南北、横贯东西的超长距离轨迹分析需求。

2. 消除了对路网数据的强依赖,可以对全球用户提供效果一致的重合率分析能力。

3. 提供了可配置的匹配半径功能,让用户能够自由定义“重合”的标准。这一功能既可以满足网约车米级精度的偏航识别需求,也可以用于海运海里级的偏航分析。

4. 消除了对轨迹时间戳和点间距的依赖。路线规划出的路线简单拼接后就可以直接进行分析,极大地降低了使用难度。

新旧版本特性对照:

优化点

优化前

优化后

轨迹点数

500 ~ 2000点

50000点

距离提升

500km

不限距离

轨迹真实时间戳

必须

可选

可用区域

路网覆盖(国内)

不限

重合判定阈值

固定

可调

2.2 匹配算法优化

旧版API:采用"线-线"匹配的方式判断重合

(1)图中待分析轨迹的c'、d'两段,与基准轨迹中的c段属性要素(方向/经纬度)差异大于阈值,则视为不重合,其他段则视为重合。

(2)引入基础路网绑路,使用修正后的轨迹进行判断,可以有效减少匹配错误,但也限制了使用区域,增加了资源成本。

图片

新版API:采用"点-线"匹配的方式判断重合

(1)将待分析轨迹中的形点,根据匹配半径召回基准轨迹中的线段,并根据属性要素(距离/方向/点序)计算形点落在线段上的放射概率,取放射概率最大的线段计算投影点。若相邻原始点组成的直线(如ab)与投影点在基准轨迹截取的折线(如a'b')小于阈值,则视为重合。

(2)若形点(如d)未召回任何线段,则该形点与前后点组成的线段(cd和de)视为与基准轨迹不重合。

图片

2.3 细分场景表现

2.3.1 无路网场景

海面无路网的情况,仍可以提供重合率分析能力。

图片

重合率结果(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 67.65,
        "standard_track_distance": 151002.05,
        "track_distance": 154475.49,
        "unmatched_distance": 51060.44,
        "matched_distance": 103415.05,
        "standard_match_ratio": 68.37,
        "standard_matched_distance": 103246.76
    }
}

2.3.2 相同位置多次轨迹重叠

轨迹AB进行分析,两条轨迹可识别出有1圈重合。

轨迹AC进行分析,两条轨迹可识别出有2圈重合。

图片

2.3.3 位置相同,方向相反

在相同路线上,以相反方向行驶产生的两条真实轨迹,整体仅有14%的重合率(起点区域是重合的)。

图片

逆时针

图片

顺时针

重合率分析响应:

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 14.08,                                // 整体重合率
        "standard_track_distance": 19038.64,                // 逆时针轨迹总长
        "track_distance": 22015.05,                         // 顺时针轨迹总长
        "unmatched_distance": 19378.15,                     
        "matched_distance": 2636.89,                        // 顺时针轨迹中重合长度
        "standard_match_ratio": 16.51,
        "standard_matched_distance": 3144.75                // 逆时针轨迹中重合长度
    }
}

2.3.4 起终点位置不同,行驶轨迹相同

相同轨迹序列,将起点处部分轨迹挪到终点后(调整起点位置),整体重合率为99.46%(轨迹非闭合,缺口位置识别为不重合)。

图片

原始轨迹

图片

变换起点位置后

重合率分析结果(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 99.46,                            // 整体重合率
        "standard_track_distance": 19038.64,
        "track_distance": 18985.78,
        "unmatched_distance": 75.46,
        "matched_distance": 18910.31,
        "standard_match_ratio": 99.32,
        "standard_matched_distance": 18910.31
    }
}

03 使用体验提升

轨迹重合率分析是一类Web API接口服务,开发者可以从官网接口文档直接获取多语言版本的请求demo。

优化后的API极大降低了使用难度,开发者仅需填充standard_track(基准轨迹)和track(待匹配轨迹)两个参数即可开始分析。

分析不再依赖时间戳,除经纬度外的其他字段均缺省时,仍能保证分析准确。

图片


04 效果展示

回到最开始的问题,对于危化品运输行业和网约车行业遇到的实际问题,重合率分析服务有怎样的表现呢?

4.1 危化品运输

基准路线:全长397km,轨迹点35244个

待分析轨迹:全长393km,轨迹点32202个

详细结果如下,经过分析,该车辆有25.1km的行程偏离预定路线(unmatched_distance)。

重合率分析结果(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 93.09,                            // 综合重合率
        "standard_track_distance": 397258.78,           // 基准轨迹长度
        "track_distance": 393006.23,                    // 待分析轨迹长度
        "unmatched_distance": 25144.21,                 // 待分析轨迹中偏离基准轨迹长度
        "matched_distance": 367862.01,
        "standard_match_ratio": 92.6,                   // 基准轨迹中可以匹配上的长度占总长的比例
        "standard_matched_distance": 367865.2           // 基准轨迹中可以与待分析轨迹重合的长度
    }
}

图片

基准轨迹不匹配的轨迹逐点标识,可以粗略看出存在两个部分

4.2 网约车行业(顺风车拼单)

顺风车拼单可以拆解为以下3个步骤:

(1)发现拼单机会:计算多条路线间的重合率,选出重合率最高的组合。

(2)得到拼单轨迹:使用路线规划服务对重合率最高的组合重新算路。

(3)评估拼单影响:计算拼单轨迹与原始轨迹重合率。

图片

具体分析过程如下:

(1)将候选集合中的3条轨迹分别计算整体重合率(similarity),重合率最高的组合“轨迹1&2”拼单机会最高。

轨迹 1&2 重合率(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 43.13   // 整体重合率
    }
}

轨迹 1&3 重合率(部分):


{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 15.27   // 整体重合率
    }
}

轨迹 2&3 重合率(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "similarity": 13.73   // 整体重合率   
    }
}

(2)将轨迹2的起终点作为轨迹1的途径点重新算路,得到拼单轨迹。

图片

轨迹1送客途中接上轨迹2的乘客

(3)以原始轨迹为基准,将拼单后轨迹分别与原始轨迹计算重合率,可以得出:

1)拼单对轨迹2的乘客几乎没有影响(基准轨迹重合率100%)。

2)对轨迹1的乘客路线影响相对较大(基准轨迹重合率55%),但成本增加不大(距离增加1.3km)。

轨迹 1& 拼单后轨迹重合率(部分):


{
    "status": 0,
    "message": "OK",
    "data": {
        "standard_track_distance": 23092.86,      // 轨迹1距离(米)
        "track_distance": 24440.58,               // 拼单后轨迹距离(米)
        "standard_match_ratio": 55.41,            // 基准轨迹重合率
    }
}

轨迹 2& 拼单后轨迹重合率(部分):

{
    "status": 0,
    "message": "OK",
    "data": {
        "standard_track_distance": 11981.52,      // 轨迹2距离(米)
        "track_distance": 24440.58,               // 拼单后轨迹距离(米)
        "standard_match_ratio": 100.0,            // 基准轨迹重合率
    }
}

新版轨迹重合率分析API,以其强大的性能和广泛的应用场景,无疑将为开发者带来更加便捷、高效的位置服务体验。

新版本将于9月底在官网发布,敬请期待!

图片

·END·

你还想了解哪些技术内容?

快来评论区留言告诉我们吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2126089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法设计(一)

1.汉诺塔 介绍 汉诺塔(Hanoi Tower):它描述了如何将一堆大小不同、穿在一根柱子上的盘子移动到另一根柱子上,同时满足以下规则: 每次只能移动一个盘子。 每个移动盘子时,大的盘子不能放在小的盘子上面。 可以使用一根…

若依RuoYi项目环境搭建教程(RuoYi-Vue + RuoYi-Vue3版本)

文章目录 一、开发脚手架选择二、RuoYi框架1、介绍2、版本发展3、为什么选择若依4、优缺点5、项目内置功能 三、后端项目部署1、拉取源码2、环境要求3、Maven构建4、MySQL相关(1)导入SQL脚本(2)配置信息 5、Redis相关(…

crdownload格式后缀的文件是什么东西?crdownload格式是什么

crdownload格式就是浏览器没下载完成的文件,如果下载完成了,那么就显示正常的格式和文件名了。

ARM32开发——DMA

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 基础概念CPURAM外设 ARM32程序存储 执行过程取数据 执行操作流程总结 基础概念 CPU CPU(Central Processing Unit&am…

[点云处理] cloud compare二次插件功能开发(三)CC插件总结与加速开发

本文完成一个点云变换的插件,同时也是对CC接口的使用做进一步说明,进一步理解CC插件开发流程,利用CC平台和已有代码加快实现定制功能。 这个功能在 cc 已有的功能已经存在,位于 edit->apply_transformation 这里 文件逻辑组织还…

如何让人工智能训练更快

影响人工智能训练时间的因素 在深度学习训练中,训练时间的计算涉及到多个因素,包括 epoch 数、全局 batch size、微 batch size、计算设备数量等。下面是一个基本的公式来说明这些参数之间的关系(注意,这只是一个基本的说明公式&…

改变事件

窗口的某些属性的状态发生改变时就会触发该事件 对应的事件类型包括 QEvent::ToolBarChange, QEvent::ActivationChange, QEvent::EnabledChange, QEvent::FontChange,QEvent::StyleChange, QEvent::PaletteChange, QEvent::WindowTitleChange, QEvent::IconTextChange, QEve…

【大模型基础】P2 Bag-of-Words

目录 词袋模型 概述词袋模型 实例第1步 构建语料库第2步 对句子进行分词第3步 创建词汇表第4步 转换词袋表示第5步 计算余弦相似度 词袋模型的局限性 词袋模型 概述 词袋模型,Bag-of-Words,是一种简单的文本表示方法,也是 NLP 中的一个经典模…

【Arcgis基础教程】GIS数据制备,空间分析与高级建模实践应用

随着信息技术的发展,数字地球、智慧地球等新概念的出现,人们对信息的需求日益提高,使得地理信息系统(GIS)在国民经济各个行业中获得了日益广泛的应用。尤其在当今大数据时代,面对海量的空间数据及个性化的地理信息服务,如何高效地…

Outlook如何归档?

文章目录 一. 目的二. 问题详述三. 解决办法1、打开ouutlook文件2、设置存档文件夹3、设置存档文件夹4、选中邮箱点击确定5、如果备份失败的操作方法 四. 注意事项 一. 目的 解决OUTLOOK邮箱爆满造成无法接收邮件的问题…

猫头虎分享:看完百度内部讲话,整理出李彦宏关于大模型的10个判断

🦁 猫头虎分享:看完百度内部讲话,整理出李彦宏关于大模型的10个判断 📢 大家好!我是猫头虎技术团队的首席写作官。今天为大家带来一篇重量级内容:从百度内部讲话中,整理了李彦宏对大模型的10大…

LIO-SAM如何保存地图

一、找到LIO-SAM配置文件,路径为config/params.yaml,修改以下两项参数: savePCD: true # https://github.com/TixiaoShan/LIO-SAM/issues/3savePCDDirectory: "/home/slam/catkin_ws/src/maps" …

通讯录 - 动态内存开辟版本

文章目录 前言 一、思想 二、contact.h 三、test.c 四、contact.c 1、初始化通讯录 2、判断容量 3、增加联系人 4、封装的查找的函数 5、删除联系人 6、查找联系人 7、修改联系人 八、展示通讯录 九、排序 十、释放空间 总结 前言 路漫漫其修远兮,吾将上下而求索&…

盘点2024年4款高质量的英语翻译工具

英语目前对我们来说仍然是一门很重要的语言,在日常生活中,如果我们需要频繁的接触到英语的话,除了要积极提升自己的英语翻译能力之外,借助一些高效的英语翻译工具也是很有必要的。所以今天就跟大家分享一些我觉得比较好用的翻译工…

Kotlin 特性之扩展函数

什么是扩展函数 扩展函数是 Java 不具备的,而 Kotlin 独有的特性,在日常开发中使用频率很高,类似于设计模式中的装饰模式,其作用就是在不改变原有类的情况下,扩展新的功能。 如何使用扩展函数和扩展属性 扩展函数的…

通信工程学习:什么是ASK振幅键控、FSK频移键控、PSK相移键控

ASK振幅键控、FSK频移键控、PSK相移键控 ASK(振幅键控)、FSK(频移键控)和PSK(相移键控)是三种常见的数字调制技术,它们各自通过不同的方式改变载波的某个参数来传输数字信息。以下是对这三种调制…

微软 Power Apps MDA 模型驱动应用解决Image字段查询出来缩略图问题变原图方法(c#+Plugin方式)

微软 Power Apps MDA 模型驱动应用解决Image字段查询出来缩略图问题变原图方法(c#Plugin方式) 在某些特定的场景中,需要将Image字段中的图片取出来,一般来说直接查询这个字段可以直接取,取出来的就是一个Base64格式的图…

【linux-Day2】linux下的基本指令

【linux-Day2】linux下的基本指令 一键查看操作系统的重要地位linux下的基本指令📢ls:显示当前目录下所有的子目录和文件📢pwd:显示用户当前所在的目录,在windows中,相当于显示当前目录的绝对路径。&#x…

推理与训练,分布式训练

什么是推理training 在人工智能领域,推理是指经过训练的机器学习模型从全新的数据(输入)中得出结论(输出)的过程。通俗地讲,推理是模型的实际运行。 什么是训练 inference 在人工智能领域,训…

Linux内核初始化过程中加载TCP/IP协议栈

Linux内核初始化过程中加载TCP/IP协议栈 Linux内核初始化过程中加载TCP/IP协议栈,从start_kernel、kernel_init、do_initcalls、inet_init,找出Linux内核初始化TCP/IP的入口位置,即为inet_init函数。 Linux内核启动过程 之前的实验中我们设…