轨迹系列13——多轨迹展示在实际项目中的落地和优化
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.背景
在之前的”多车辆实时迹展示方案”(https://www.cnblogs.com/naaoveGIS/p/8551915.html)文章中,我讲解了我们对多轨迹实时监测展示方案在前段的一些实践和对于后端架构的设计,但是在真实项目的落地过程中,我们基于此做了很多的优化,这里做一个简单的总结。
这里我将该项目大致做一个描述:公司某个项目中有一万两千辆车需要做实时监控,而且这些车24小时均会不间断进行GPS上报。所以其中涉及到GPS的对接、海量数据存储的设计方案、消息推送、前端展示、系列报警设计等。这其中的GPS对接、数据存储涉及等问题我在轨迹系列文章中均有描述,感兴趣的朋友可以看看,本篇着重描述信息推送和前端展示的优化。
2.GPS推送机制的设计
这里的消息推送并不是很复杂,所以我们并没有采用卡夫卡等成熟的消息机制架构,依然采用的是前篇中我进行了介绍的WebSocket方案。但是,有几点我们需要考虑:
a.前端为了播放效果,每次传入的GPS中一个车辆必须拥有2个以上的GPS数据(如果只有一个则是停留的)
b.我们有1万辆以上的车辆,每次推送给前端的数据不应该是所有的,即做成广播协议是不合理的。
针对这两个问题,我们分别做了解决:
a.采用redis进行GPS数据的实时存放,但是进行了存放规则设定,即redis中存放的轨迹只包含目前时间向前推移指定时间的轨迹量。比如,redis中永远存放的是此前三分钟的轨迹数据(时间长可设置)。这样可以累积一定量的轨迹后推送,以便实现播放效果,并且方便高效读取。
b.在消息推送中,我们根据humanID来进行数据推送的选择。不同人员要看到的车辆是不一样的,因humanID不同而不同。
在推送方案中我们还进行了其他优化:
a.通过心跳检查来进行socket连接保活。
b.前端播放时效与后台轨迹推送的同步。
3.多轨迹前端展示优化点总结
a.根据车辆数目切换展示方式,车辆少时用车辆图标,车辆多时用点。
b.重新设计车辆图标,以俯视图进行车辆图标设计,并通过后视镜等细节来更好的表现车头和车尾。
c.每次GPS重新获取后,地图不进行缩放,保持观察的连续性。并且通过车辆ID的关联,保证前端播放轨迹的连续不闪烁。
d.车辆车牌的显示,并且只有在地图缩放到一定级别后才显示,以避免图标杂乱。
e.通过计算播放点与最近GPS点的距离来展示该播放点的车速。
f.提供车辆详细信息展示的入口。
g.根据车辆不同的状态,比如超速、停留等用不同的车辆图标来进行表示。
4.项目真实效果展示
多轨迹展示效果:
单车辆历史轨迹展示效果:
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^
转载于:https://www.cnblogs.com/naaoveGIS/p/9415093.html
轨迹系列13——多轨迹展示在实际项目中的落地和优化相关推荐
- c# getresponsestream返回byte[]_C# 基础知识系列-13 常见类库(三)
0. 前言 在<C# 基础知识系列- 13 常见类库(二)>中,我们介绍了一下DateTime和TimeSpan这两个结构体的内容,也就是C#中日期时间的简单操作.本篇将介绍Guid和Nu ...
- 轨迹系列8——记某真实项目中轨迹展示查询效率优化方案一(初步设计)
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 准确说,该项目的迹展示涉及到两个方面,一个是轨迹查询展 ...
- 轨迹系列1——一种基于路网图层的GPS轨迹优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况 ...
- 轨迹系列2——一种基于中值滤波的轨迹纠偏方法和几点思考
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在无路网的情况下,如何进行轨迹纠偏也是一个很多人在研究的内容, ...
- 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示
微信公众号开发系列-13.基于RDIFramework.NET框架整合微信开发应用效果展示 1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为 ...
- 两条轨迹相似度算法,轨迹相似性度量
百度地图 百度地图是百度提供的一项网络地图搜索服务,覆盖了国内近400个城市.数千个区县.在百度地图里,用户可以查询街道.商场.楼盘的地理位置,也可以找到离您最近的所有餐馆.学校.银行.公园等等. 2 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据 ...
- 数据结构和算法系列13 五大查找之哈希查找
原文地址 http://www.cnblogs.com/mcgrady/p/3294871.html 数据结构和算法系列13 五大查找之哈希查找 这一篇要总结的是五天查找的最后一篇,哈希查找,也称为散 ...
- 【Baxter机器人末端轨迹坐标采集和轨迹还原】
Baxter机器人末端轨迹坐标采集和轨迹还原 采集命令 代码 生成 轨迹还原 代码 参考 采集命令 rosrun baxter_moveit_config endpoint_recorder.py - ...
最新文章
- *103.编译的过程
- Web 开发在 2015 年及未来的发展趋势
- 自制贴纸图案大全图片_重磅!Supreme x 山本耀司联名Bogo贴纸泄露,发售确认?!...
- 使用Nginx实现反向代理 - 不同的子域名映射到不同的后台地址
- uitextfield 键盘类型_iOS输入类型-文本字段(Text Fields) | 菜鸟教程
- Window插件获取窗口坐标
- Tabio – 轻松,高效的管理 Chrome 标签页
- 最长回文子串-----Manacher算法
- MyBatis官方文档——入门部分
- 发票勾选平台:验证口令失败--加密模块未打开(0x23) (错误代码:35)
- macOs 10.12.2总于修复鼠标驱动了
- 星星之火-58:CPRI协议缺点,eCPRI协议是如何克服CPRI协议的不足?
- 获取微信开放平台申请移动应用时的应用签名和应用包名
- IDA遇到mojava,crash的情况
- 简单易懂Kafka搭建
- vue 前端获取用户登录地址 ip 设备型号
- LiveData+Room
- 中国象棋局面识别 -2.象棋棋子的识别
- Macbook删除苹果系统,装单系统win10系统
- 实录:有钱女性私生活