实时公交位置系统的实现
2015-12-17 00:38
274 查看
宏观上: 实时性(每辆车每10秒上报一次位置信息,全市上万量公交,个接口的吞吐量以及实时性是一个考验)
准确性(如何准确判断每辆车的位置,以及行驶方向)
微观上: 火星坐标系的转换(gps上报的是原生坐标系,而我们的第三方地图控件都是基于火星坐标系的)
公交方向判断(gps上报上来的是每10s的一点,而http无状态,所以服务器就必须保留之前的状态才能判断出方向)
关于gps原生坐标系,以及火星坐标系看了下面2个链接自然会明白
比较无解的是转化问题,如果没有下面找到的转化算法,我可能要另辟蹊径去辅助修正判断的准确性
伦理片 http://www.dotdy.com/
下面是系统架构图 2.数据库中的线路以及站点信息可以加载在内存中,或者后期存在redis中,由分布式系统中的master维护。
3.公交调度计算模块作为消费者,不断的去获得生产者的位置信息,进行计算。此处2个算法 公交方向判定算法和公交到站判定算法,前者 由位置点来判定当前公交是正向还是方向,后者根据方向来判定车辆经过的站点
对于 公交方向判定算法,可以根据近两次距离最近的站点,通过比较2个最近站点的order来判断正向还是反向,(只要距离最近的站点变化,我们就可以迅速获得方向 考虑到公交到底站回头的情况,所以判断方向的算法必须快速响应),设想一下以下这种情况
影音先锋电影 http://www.iskdy.com/
距离当前位置最近的是站点3,3的order比站点2大,所以依然不会造成方向性判断错误。
但是这种计算方法只是一个瞬时点,作为一个商用系统这种不确定性是很可怕的,所以还要考虑采取记录车子的到站信息来2方面综合判断。
4.在得到车辆方向的基础上,再判断过站就变的简单了,为每个站点设定一个距离阈值,通过比较距离是否小于这个阈值来判断是否过站。
(gps精度基本在20m以内)
其实第三点和第四点是相辅相成的,如果方向判断正确的基础上自然会得到正确的过站信息,亦可以通过推断的方法来校验 线路判断的准确性。
相关文章推荐
- 阿里巴巴开源项目 Druid 负责人温少访谈
- 利用joomla 3.2.0 – 3.4.4 注入漏洞到getshell
- Android 事件分发机制View篇
- mysql 建立用户
- 图形验证码最佳实践
- 运算符重载编程题3(C++程序设计第4周)
- LeetCode 118: Pascal's Triangle
- html 获取宽高
- Composer
- C/C++常识
- 运算符重载编程题2(C++程序设计第4周)
- ubuntu 安装jdk7小结
- 【UESTC】2015 UESTC Training for Data Structures
- java 注解
- Mysql自联结深入剖析
- 微信支付:支付过期时间问题、302 问题、code 、openid
- 运算符重载编程题1(C++程序设计第4周)
- Centos7 编译安装python3
- Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]
- cacti监控安装与配置