专网CORS和位置服务平台集成应用的中间件设计
2018-02-28宋传峰张洪文肖青怀刘禹鑫
宋传峰,张洪文,肖青怀,周 源,刘禹鑫
(1. 国家测绘地理信息局第二大地测量队(黑龙江第一测绘工程院),黑龙江 哈尔滨 150025; 2. 国家测绘地理信息局黑龙江基础地理信息中心,黑龙江 哈尔滨 150081)
根据国家对卫星导航定位基准站数据的保密要求[1],实时差分服务数据属于受控管理的内容,但为保证数据中心和基准站等涉密数据的安全,CORS服务机构一般通过安全性比较高的网络向用户播发导航定位实时差分服务数据。播发网络多以GPRS/3G/4G等蜂窝移动网络为基础,通过构建虚拟专用网(virtual private network,VPN)、专线接入点[2](access point name,APN)或进行数据加密等方式,增加播发网络的安全性。
而基于用户位置的服务,一般以普通互联网为服务网络。用户端将位置信息上传到位置服务平台,通过位置服务平台实现对用户的位置监控、查询、管理、调度等功能。若要实现对用户的高精度位置服务,用户需要借助CORS等手段实现高精度定位,然后上传高精度的位置信息。
用户端种类繁多,但其位置信息一般支持通过NMEA 0183标准协议[3]进行传输。而位置服务平台一般会根据需要自定义位置信息数据格式,如黑龙江省位置服务平台就自定义了数据通信协议。
通过以上分析,若要实现位置服务平台对专网CORS用户的高精度位置服务,需要解决以下问题:
(1) 用户端所在的专用网络和位置服务平台的普通互联网间可进行数据传输;
(2) NMEA 0183标准协议与位置服务平台自定义数据通信协议间可进行格式转换。
本文设计、研发了一种中间件(位置路由工具),解决了上述问题,实现了不同网络间和不同编码协议下位置信息的转发。通过该工具的应用,实现了黑龙江省位置服务平台对黑龙江省卫星定位连续运行综合服务系统(HLJCORS)用户的高精度位置服务。下文将以该应用为基础,讨论位置路由工具的设计、研发及其实现方法。
1 网络环境介绍
HLJCORS和黑龙江省位置服务平台是两个相互独立的、具有不同功能和用途的平台,若将两个平台集成应用,则会实现更高精度的位置服务。但两个平台具有各自的网络环境,不能直接进行数据交换。
1.1 HLJCORS介绍
HLJCORS[4]由122座基准站、1个数据处理中心和专线网络组成,具有维持黑龙江省参考框架、提供差分动态定位和数据服务的作用,是黑龙江省现代化测绘基准体系重要的组成部分。
HLJCORS基准站将接收的卫星数据通过专线网络汇集到数据中心,经数据中心处理后将差分数据通过中国移动专线APN向用户播发,数据中心能同时兼容专线网络、互联网和专线APN。
1.2 专线APN网络
APN即接入点,是通过手机上网时必须配置的一个参数,它决定了通过哪种接入方式来访问网络[2]。APN用来标识2G/3G/4G分组域的业务种类[5],中国移动针对大众用户的业务分为CMWAP(2G)、CMNET(3G/4G)两类。APN业务的接入方法有L2TP隧道方案和GRE隧道方案等[5]。
HLJCORS专线APN采用GRE隧道方案接入,使用“hljcors.hl”专用标识。用户使用专用SIM卡,配置专用标识APN后,即可实现与数据中心的通信,但用户无法连接互联网。
1.3 位置服务平台
黑龙江省位置服务平台通过特定公网IP和端口向用户提供位置监控、查询、警报等服务。该平台已在重庆、福建、新疆、齐齐哈尔等省市安装部署。
2 数据通信协议
HLJCORS用户支持通过NMEA 0183标准协议输出位置信息,黑龙江省位置服务平台使用自定义协议数据格式。
2.1 NMEA 0183标准协议
表1 NMEA 0183标准协议命令
2.2 自定义协议数据格式
在保持信息全面且最小化数据通信流量的原则下,用户向位置服务平台上传位置信息自定义协议数据格式见表2。
表2 自定义协议数据格式
(1) 帧头:两个字节,0xff,0xff。
(2) 版本号:如”zx1”,即0x7a,0x78,0x31。
(3) 命令号:范围:0x00—0xff。
(4) 帧长:所有帧长都为数值类型。如帧长为100个字节,表示为“0x00,0x64”。
(5) ID:以手机号码为唯一ID值,11位。
(6) 其余未经注明,均以字符型表示。
命令内容为要传输的位置信息(见表3)。
表3 位置信息
(1) GPS时间:非字符型,如UTC时间2009年5月11日8点19分26秒为0x090x050x110x080x19 0x26。
(2) 纬经度:非字符型,先纬度后经度,0x030x900x810x230x410x110x610x230x450x62,表示北纬39°08.123 41′、东经116°12.345 62′(第一字节高半字节最高位表示南北纬,0表示北纬,1表示南纬;次高位表示东西经,0表示东经,1表示西经),分保留5位小数。
(3) 速度:非字符型,0x120x09表示速度为120.9 nm/h,保留一位小数。
(4) 航向:非字符型,0x350x06表示航向为350.6°,保留一位小数。
(5) 里程:非字符型,范围为0—999 999.99。如0x000x120x340x56表示1 234.56 km,保留一位小数。
(6) 海拔:非字符型,如812.56 m为0x080x12 0x56,保留一位小数。
3 位置路由工具
用户端设备一般不支持并发运行2种网络环境,无法在接收HLJCORS差分数据的同时向位置服务平台上传位置信息。而且,用户设备直接输出的位置信息与位置服务平台自定义的数据格式也不同。因此,最直接、最经济的方式就是在HLJCORS服务端部署一中间件,完成网络环境和数据格式的转换。
3.1 设计思路
HLJCORS能同时兼容互联网和专线APN,因此将位置路由工具部署在HLJCORS端,即可实现网络环境的转换,数据传输网络转换情况如图1所示。
图1 网络环境转换
数据格式转换由位置路由工具完成,位置路由工具接收到用户设备的数据流后,首先完成数据解析,获得用户的经纬度、大地高等位置信息,然后按自定义数据格式编码,将位置信息转发给位置服务平台。
3.2 程序实现
位置路由工具采用Java语言基于TCP/IP协议开发完成。位置路由工具首先建立一个serverSocket(服务器套接字),等待用户设备的连接,有用户设备连接后,位置路由工具与位置服务平台建立通信,开始数据转发。该过程的部分核心代码如下。
本地IP端口:
final int port=Integer.parseInt(portNum);
final InetAddress host=InetAddress.getByName(hostName);
位置服务平台IP 端口:
final int remotePort=Integer.parseInt(remotePortNum);
final InetAddress remoteHost=InetAddress.getByName(remoteHostName);
建立本地服务,等待用户连接:
serverSocket=new ServerSocket(port,50,host);
clientSocket=serverSocket.accept();
用户连接后,建立远程连接:
remoteServerSocket=new Socket(remoteHost,remotePort);
在数据转发前,需要进行NMEA 0183协议格式解析,然后按自定义格式编码,编码过程即按字节排列信息。该过程由TransPortData类完成,部分核心代码:
获得输入(用户端)、输出(位置服务平台)数据流:
InputStream in=getDataSocket.getInputStream();
OutputStream out=putDataSocket.getOutputStream();
读入用户端数据:
byte[] data=new byte[2048];
int dataLength=in.read(data);
……(进行数据解析和编码)
转发数据:
out.write(sendgps,0,sendgps.length);
out.flush();
位置路由工具使用了多线程技术,每连接一个用户,会单独创建一个线程进行数据解析和编码转发:
(new TransPortData(clientSocket,remoteServerSocket,ID[clientNum-1])).start();
另外,位置路由工具引入了心跳包机制,保证在转发位置信息过程中,保持与位置服务平台的通信。
3.3 应用测试
使用2台平板设备接入HLJCORS进行高精度定位,然后将位置信息回传至HLJCORS服务端,经位置路由工具解析NMEA 0183位置信息并重新编码后,将位置信息转发至位置服务平台。图2为位置路由工具正在转发2个用户的位置信息,并等待其他用户的连接。
4 结 语
专网CORS与位置服务平台的集成应用存在专网CORS用户不能直接与位置服务平台进行数据通信及位置信息编码协议不同两个问题。本文设计了中间件,即位置路由工具,解决了上述问题。本文的研究思路和成果可供其他项目参考借鉴,中间件可向其他省市推广使用。
图2 位置路由工具
[1] 国家测绘地理信息局.关于规范卫星导航定位基准站数据密级划分和管理的通知[EB/OL].2016-01-27.www.sbsm.gov.cn/zwgk/zcfgjjd/gfxwj/201702/t20170228_385148.shtml.
[2] 薛铮,宋玉兵.CORS系统网络安全策略[J].现代测绘,2010,33(5):3-5.
[3] 方书山,章传银,秘金钟.NMEA-0183格式数据流解析的一种实用方法[J].测绘通报,2013(11):114-116.
[4] 张晓磊,古一鸣,宫殿明.黑龙江省卫星定位连续运行综合服务系统(HLJCORS)控制中心设计[J].测绘与空间地理信息,2014,37(10):173-174.
[5] 秦建军,刘诗儒.几种实现APN业务的方法及比较[J].中国新通信,2010(21):13-15.
[6] 李斌,赵旺飞.多APN接入点并发访问控制方法[J].电信技术,2013,1(7):31-33.
[7] 党亚民,秘金钟,成英燕.全球导航卫星系统原理与应用[M].北京:测绘出版社,2007.
[8] 黄俊华,陈文森.连续运行卫星定位综合服务系统建设与应用[M]北京:科学出版社,2009.
[9] 黄丁发,周乐韬,李成钢,等.GPS增强参考站网络理论[M].北京:科学出版社,2011.
[10] 党亚民,成英燕,薛树强.大地坐标系统及其应用[M].北京:科学出版社,2010.
[11] 陈昊鹏.JAVA编程思想[M].北京:机械工业出版社,2007.
[12] 张庆全,林富明,周源.基于“天地图”的位置服务平台的设计与实现[J].测绘与空间地理信息,2013,36(8):98-102.
[13] 李健,吕志平.基于CORS的卫星定位在线服务系统[J].测绘通报,2007(8):40-44.