轨迹系列6——车载GPS对接方案汇总小结(809、自定义协议、前置库、WS)
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
1.背景
最近在不同项目中对接了多个车载GPS厂商服务终端,绝大多数厂商可以提供809协议的数据对接,还有部分可以提供自定义协议等方式的对接。多个项目中,我公司处于略强势地位,所以根据现场实际的项目进度和部署环境以及对方支持的对接方式,提出了不同的对接方案。这里做个总结。
2.809协议对接
2.1协议背景
2011年5月10日中国交通通信信息中心下发了《印发道路运输车辆卫星定位系统平台和道路运输车辆卫星定位系统车载终端标准符合性审查办法(试行)的通知》。通知要求,系统平台和车载终端应当分别满足《平台要求》和《终端要求》,同时分别满足《道路运输车辆卫星定位系统平台数据交换》和《道路运输车辆卫星定位系统终端通讯协议及数据格式》的要求。系统平台和车载终端,应按照本办法通过标准符合性审查。不符合标准的,不得用于道路运输车辆动态监管工作。《道路运输车辆卫星定位系统平台和道路运输车辆卫星定位系统车载终端标准》简称部标,部标包括《道路运输车辆卫星定位系统平台技术要求》(JT/T796-2011,简称《平台部标》)和《 道路运输车辆卫星定位系统车载终端技术要求》(JT/T794-2011,简称《终端部标》)。至此,关于系统平台和车载终端必须符合部标的政策性文件正式出台。而对应硬件终端标准的通信协议标准JT/T808-2011JT/T809-2011协议也随之出台。部标808和809的出台,统一了产品的标准,统一了平台与终端之间的通讯协议,对于GPS运营商而言,只要平台支持部标,那可以选择任意一家的GPS车载终端,也不会受厂商的制约,GPS运营商在市场竞争过程中将更看重产品的质量及服务,从而也间接地促进市场上产品的稳定性和可靠性。

通过该协议流程可以知道,808协议为GPS客户终端与GPS服务终端的对接协议,而809协议为GPS服务终端与上级平台之间的对接协议。所以这里我们主要需要研究的是809协议。
2.2协议具体内容
该协议可以在网上进行下载:http://www.hzlitai.com.cn/uploads/soft/1_150116150811.pdf。协议内容包含了:

需要理解的地方为(转):
a.双链路维护,就是基于上面的对等概念,在Socket通信上面其实就是要同时扮演服务器监听和客户端转发的角色;从下级平台来看,转发数据的链路就是主链路,从上级平台来看,主链路用来就是监听并接收子平台转发过来的数据;所以开发政府平台的,有的是开发企业平台的,立场不一样,理解就不一样。
b.正确的理解加解密算法和校验和算法,否则运管平台接入的时候,无法接入。
c.复杂的流程测试,和单一socket数据通信不一样,需要实现从登录、安全认证、链路保持和注销、基础车辆数据上传、注册、交换定位信息、拍照、驾驶员身份识别和车辆电子运单的功能。
对于我们企业对接GPS,我们监听主链路即可,主链路中包含了GPS服务端发送过来的数据。从链路是GPS服务端监听反馈信息使用。

2.3实现方法
a.判断状态

b.解析信息


3.自定义协议对接
由于我方不是交通监管部门,仅仅只是需要对接GPS数据,所以复杂的809协议往往适得其反。于是,我们可以和GPS服务方定义一种简单的传输协议。
可以描述为,我方监听一个端口,传输方以我们定义好的报文规范,将数据在每次心跳时传输到指定端口即可。我方对传输过来的数据进行接收和解析。


4.前置库对接
当我们和多个不同GPS厂商同时对接时,由于各厂商的对接协议和提供的功能可能均不相同,此时我们强制提供一个我们的规范表,将其放置在前置库中(车载商均可以连接该库)。其流程设计如下:
a.所有厂商将GPS数据实时写入该前置库表中,该表有一个flag字段。将该表理解为轨迹实时表,其轨迹的存储为saveorupdate,即主键车牌存在轨迹时,再传入为更新,没有该车牌时为插入新轨迹数据。
b.我方提供定时JOB,将前置库中的数据定时整体迁移至我方网段中的业务库临时轨迹表中。
c.我方提供定时JOB,对该临时表中的坐标进行实时转换,报警业务进行判断。转换后的数据存入实时轨迹表以及历史轨迹表中。报警信息存入对应的报警表中。
5.WebService对接
5.1我方提供WS服务
我方提供WS服务,该服务中对传入参数进行定义,支持单次调用和以XML格式的批量传入。
XML格式定义如下:

5.2对方提供WS服务
我方编写JOB,定时调用对方WS服务进行轨迹获取。
6.总结
由于我方的车载仅为数据展示方,对于底层协议的对接方式,可以规避尽量规避。前置库对接以及WS对接,均可将对接的方式简化,而且可以将协议对接时的通信长连接对服务器的消耗进行规避。所以,项目中我们首推这两种方案。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
如果您觉得本文确实帮助了您,可以微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^

轨迹系列6——车载GPS对接方案汇总小结(809、自定义协议、前置库、WS)的更多相关文章
- Android适应方案汇总(三)
在Android适应方案汇总(一个).(两)在.我们理解一些基本概念. 那么详细的开发,我们应该重视起来. 首先,我们需要知道.关键的事实是,这两个适配器: (1).这点在单位的使用上用dp.sp以及 ...
- 轨迹系列4——WebGIS中使用ZRender实现轨迹前端动态播放特效
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在地图上以时间轴方式播放人员.车辆在地图上的历史行进 ...
- AI资源对接需求汇总:第3期
更好的阅读体验,请查看首发原文链接:AI资源对接需求汇总:第3期 平台介绍 平台由人工智能领域几个知名原创公众号发起,总读者约25万. 主要面向人工智能领域的从业者,涵盖图像处理.三维计算机视觉.机器 ...
- SpringBoot 系列教程之事务隔离级别知识点小结
SpringBoot 系列教程之事务隔离级别知识点小结 上一篇博文介绍了声明式事务@Transactional的简单使用姿势,最文章的最后给出了这个注解的多个属性,本文将着重放在事务隔离级别的知识点上 ...
- 轨迹系列1——一种基于路网图层的GPS轨迹优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况 ...
- 轨迹系列5——验证轨迹GPS坐标转换为本地坐标的四/七参数是否准确的一种方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 目前对多个项目轨迹不准确的情况做了排查,发现导致轨迹偏移百分 ...
- Mysql备份系列(1)--备份方案总结性梳理
mysql数据库备份有多么重要已不需过多赘述了,废话不多说!以下总结了mysql数据库的几种备份方案: 一.binlog二进制日志通常作为备份的重要资源,所以再说备份方案之前先总结一下binlog日志 ...
- ES+Hbase对接方案概述
方案背景 Hbase的索引方案有很多,越来越多的人开始选择ES+Hbase的方案,其实该方案并没有想象中那么完美,ES并发低,同时查询速度相对Hbase也慢很多,那为什么会选择他呢,它的写入比较快,如 ...
- GPS功能:百度路书自定义【轨迹回放】
如题所述:百度的编辑界面很直观,修改后就可以运行,地址:http://developer.baidu.com/map/jsdemo.htm#c2_8: 因为同事研究了一下午结果都没搞出来,他copy百 ...
随机推荐
- NET Core微服务之路:基于Ocelot的API网关Relay实现--RPC篇
前言 我们都知道,API网关是工作在应用层上网关程序,为何要这样设计呢,而不是将网关程序直接工作在传输层.或者网络层等等更底层的环境呢?让我们先来简单的了解一下TCP/IP的五层模型. (图片 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能
在<Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明>教程中,我们介绍了如何使用“客服接口”,即在服务器后台,在任意时间向微信发送文本.图文.图片等不 ...
- [Swift]LeetCode443. 压缩字符串 | String Compression
Given an array of characters, compress it in-place. The length after compression must always be smal ...
- Mysql、Hbuilder、Idea快捷键
MyEclipse 快捷键 ↑ ↓ ← →多 1.方法抽取,Alt+Shift+M 2.多行注释:Ctrl+Shift+/ 3.对象.方法; Ctrl+2 + ↓+回车 ,自动生成返回类型和变量 (非 ...
- Android开发:修改eclipse里的Android虚拟机路径
一.发现问题: 今天打开电脑发现C盘缩了不少,这才意识到:eclipse里配置的安卓虚拟机默认放在了C盘里. 当然,在不同的电脑上可能路径有所不同,我的默认路径是:C:\Users\lenovo\.a ...
- SpringBoot启动如何加载application.yml配置文件
一.前言 在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件: ...
- C# 多线程学习笔记 - 1
本文主要针对 GKarch 相关文章留作笔记,仅在原文基础上记录了自己的理解与摘抄部分片段. 遵循原作者的 CC 3.0 协议. 如果想要了解更加详细的文章信息内容,请访问下列地址进行学习. 原文章地 ...
- 网络协议 5 - ICMP 与 ping:投石问路的侦察兵
日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了. 那你知道 ping 命令是怎么工作的吗?今天,我们就来一起认识下 pi ...
- ios 自动化构建 code-select: error: tool 'xcodebuild' requires Xcode, but active developer directory.....
问题描述: Pod installation complete! There are 2 dependencies from the Podfile and 3 total pods installe ...
- Python爬虫入门教程 12-100 半次元COS图爬取
半次元COS图爬取-写在前面 今天在浏览网站的时候,忽然一个莫名的链接指引着我跳转到了半次元网站 https://bcy.net/ 打开之后,发现也没有什么有意思的内容,职业的敏感让我瞬间联想到了 c ...