宋傳峰,張洪文,肖青懷,周 源,劉禹鑫
(1. 國(guó)家測(cè)繪地理信息局第二大地測(cè)量隊(duì)(黑龍江第一測(cè)繪工程院),黑龍江 哈爾濱 150025; 2. 國(guó)家測(cè)繪地理信息局黑龍江基礎(chǔ)地理信息中心,黑龍江 哈爾濱 150081)
根據(jù)國(guó)家對(duì)衛(wèi)星導(dǎo)航定位基準(zhǔn)站數(shù)據(jù)的保密要求[1],實(shí)時(shí)差分服務(wù)數(shù)據(jù)屬于受控管理的內(nèi)容,但為保證數(shù)據(jù)中心和基準(zhǔn)站等涉密數(shù)據(jù)的安全,CORS服務(wù)機(jī)構(gòu)一般通過(guò)安全性比較高的網(wǎng)絡(luò)向用戶播發(fā)導(dǎo)航定位實(shí)時(shí)差分服務(wù)數(shù)據(jù)。播發(fā)網(wǎng)絡(luò)多以GPRS/3G/4G等蜂窩移動(dòng)網(wǎng)絡(luò)為基礎(chǔ),通過(guò)構(gòu)建虛擬專用網(wǎng)(virtual private network,VPN)、專線接入點(diǎn)[2](access point name,APN)或進(jìn)行數(shù)據(jù)加密等方式,增加播發(fā)網(wǎng)絡(luò)的安全性。
而基于用戶位置的服務(wù),一般以普通互聯(lián)網(wǎng)為服務(wù)網(wǎng)絡(luò)。用戶端將位置信息上傳到位置服務(wù)平臺(tái),通過(guò)位置服務(wù)平臺(tái)實(shí)現(xiàn)對(duì)用戶的位置監(jiān)控、查詢、管理、調(diào)度等功能。若要實(shí)現(xiàn)對(duì)用戶的高精度位置服務(wù),用戶需要借助CORS等手段實(shí)現(xiàn)高精度定位,然后上傳高精度的位置信息。
用戶端種類繁多,但其位置信息一般支持通過(guò)NMEA 0183標(biāo)準(zhǔn)協(xié)議[3]進(jìn)行傳輸。而位置服務(wù)平臺(tái)一般會(huì)根據(jù)需要自定義位置信息數(shù)據(jù)格式,如黑龍江省位置服務(wù)平臺(tái)就自定義了數(shù)據(jù)通信協(xié)議。
通過(guò)以上分析,若要實(shí)現(xiàn)位置服務(wù)平臺(tái)對(duì)專網(wǎng)CORS用戶的高精度位置服務(wù),需要解決以下問(wèn)題:
(1) 用戶端所在的專用網(wǎng)絡(luò)和位置服務(wù)平臺(tái)的普通互聯(lián)網(wǎng)間可進(jìn)行數(shù)據(jù)傳輸;
(2) NMEA 0183標(biāo)準(zhǔn)協(xié)議與位置服務(wù)平臺(tái)自定義數(shù)據(jù)通信協(xié)議間可進(jìn)行格式轉(zhuǎn)換。
本文設(shè)計(jì)、研發(fā)了一種中間件(位置路由工具),解決了上述問(wèn)題,實(shí)現(xiàn)了不同網(wǎng)絡(luò)間和不同編碼協(xié)議下位置信息的轉(zhuǎn)發(fā)。通過(guò)該工具的應(yīng)用,實(shí)現(xiàn)了黑龍江省位置服務(wù)平臺(tái)對(duì)黑龍江省衛(wèi)星定位連續(xù)運(yùn)行綜合服務(wù)系統(tǒng)(HLJCORS)用戶的高精度位置服務(wù)。下文將以該應(yīng)用為基礎(chǔ),討論位置路由工具的設(shè)計(jì)、研發(fā)及其實(shí)現(xiàn)方法。
HLJCORS和黑龍江省位置服務(wù)平臺(tái)是兩個(gè)相互獨(dú)立的、具有不同功能和用途的平臺(tái),若將兩個(gè)平臺(tái)集成應(yīng)用,則會(huì)實(shí)現(xiàn)更高精度的位置服務(wù)。但兩個(gè)平臺(tái)具有各自的網(wǎng)絡(luò)環(huán)境,不能直接進(jìn)行數(shù)據(jù)交換。
HLJCORS[4]由122座基準(zhǔn)站、1個(gè)數(shù)據(jù)處理中心和專線網(wǎng)絡(luò)組成,具有維持黑龍江省參考框架、提供差分動(dòng)態(tài)定位和數(shù)據(jù)服務(wù)的作用,是黑龍江省現(xiàn)代化測(cè)繪基準(zhǔn)體系重要的組成部分。
HLJCORS基準(zhǔn)站將接收的衛(wèi)星數(shù)據(jù)通過(guò)專線網(wǎng)絡(luò)匯集到數(shù)據(jù)中心,經(jīng)數(shù)據(jù)中心處理后將差分?jǐn)?shù)據(jù)通過(guò)中國(guó)移動(dòng)專線APN向用戶播發(fā),數(shù)據(jù)中心能同時(shí)兼容專線網(wǎng)絡(luò)、互聯(lián)網(wǎng)和專線APN。
APN即接入點(diǎn),是通過(guò)手機(jī)上網(wǎng)時(shí)必須配置的一個(gè)參數(shù),它決定了通過(guò)哪種接入方式來(lái)訪問(wèn)網(wǎng)絡(luò)[2]。APN用來(lái)標(biāo)識(shí)2G/3G/4G分組域的業(yè)務(wù)種類[5],中國(guó)移動(dòng)針對(duì)大眾用戶的業(yè)務(wù)分為CMWAP(2G)、CMNET(3G/4G)兩類。APN業(yè)務(wù)的接入方法有L2TP隧道方案和GRE隧道方案等[5]。
HLJCORS專線APN采用GRE隧道方案接入,使用“hljcors.hl”專用標(biāo)識(shí)。用戶使用專用SIM卡,配置專用標(biāo)識(shí)APN后,即可實(shí)現(xiàn)與數(shù)據(jù)中心的通信,但用戶無(wú)法連接互聯(lián)網(wǎng)。
黑龍江省位置服務(wù)平臺(tái)通過(guò)特定公網(wǎng)IP和端口向用戶提供位置監(jiān)控、查詢、警報(bào)等服務(wù)。該平臺(tái)已在重慶、福建、新疆、齊齊哈爾等省市安裝部署。
HLJCORS用戶支持通過(guò)NMEA 0183標(biāo)準(zhǔn)協(xié)議輸出位置信息,黑龍江省位置服務(wù)平臺(tái)使用自定義協(xié)議數(shù)據(jù)格式。
表1 NMEA 0183標(biāo)準(zhǔn)協(xié)議命令
在保持信息全面且最小化數(shù)據(jù)通信流量的原則下,用戶向位置服務(wù)平臺(tái)上傳位置信息自定義協(xié)議數(shù)據(jù)格式見(jiàn)表2。
表2 自定義協(xié)議數(shù)據(jù)格式
(1) 幀頭:兩個(gè)字節(jié),0xff,0xff。
(2) 版本號(hào):如”zx1”,即0x7a,0x78,0x31。
(3) 命令號(hào):范圍:0x00—0xff。
(4) 幀長(zhǎng):所有幀長(zhǎng)都為數(shù)值類型。如幀長(zhǎng)為100個(gè)字節(jié),表示為“0x00,0x64”。
(5) ID:以手機(jī)號(hào)碼為唯一ID值,11位。
(6) 其余未經(jīng)注明,均以字符型表示。
命令內(nèi)容為要傳輸?shù)奈恢眯畔?見(jiàn)表3)。
表3 位置信息
(1) GPS時(shí)間:非字符型,如UTC時(shí)間2009年5月11日8點(diǎn)19分26秒為0x090x050x110x080x19 0x26。
(2) 緯經(jīng)度:非字符型,先緯度后經(jīng)度,0x030x900x810x230x410x110x610x230x450x62,表示北緯39°08.123 41′、東經(jīng)116°12.345 62′(第一字節(jié)高半字節(jié)最高位表示南北緯,0表示北緯,1表示南緯;次高位表示東西經(jīng),0表示東經(jīng),1表示西經(jīng)),分保留5位小數(shù)。
(3) 速度:非字符型,0x120x09表示速度為120.9 nm/h,保留一位小數(shù)。
(4) 航向:非字符型,0x350x06表示航向?yàn)?50.6°,保留一位小數(shù)。
(5) 里程:非字符型,范圍為0—999 999.99。如0x000x120x340x56表示1 234.56 km,保留一位小數(shù)。
(6) 海拔:非字符型,如812.56 m為0x080x12 0x56,保留一位小數(shù)。
用戶端設(shè)備一般不支持并發(fā)運(yùn)行2種網(wǎng)絡(luò)環(huán)境,無(wú)法在接收HLJCORS差分?jǐn)?shù)據(jù)的同時(shí)向位置服務(wù)平臺(tái)上傳位置信息。而且,用戶設(shè)備直接輸出的位置信息與位置服務(wù)平臺(tái)自定義的數(shù)據(jù)格式也不同。因此,最直接、最經(jīng)濟(jì)的方式就是在HLJCORS服務(wù)端部署一中間件,完成網(wǎng)絡(luò)環(huán)境和數(shù)據(jù)格式的轉(zhuǎn)換。
HLJCORS能同時(shí)兼容互聯(lián)網(wǎng)和專線APN,因此將位置路由工具部署在HLJCORS端,即可實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境的轉(zhuǎn)換,數(shù)據(jù)傳輸網(wǎng)絡(luò)轉(zhuǎn)換情況如圖1所示。
圖1 網(wǎng)絡(luò)環(huán)境轉(zhuǎn)換
數(shù)據(jù)格式轉(zhuǎn)換由位置路由工具完成,位置路由工具接收到用戶設(shè)備的數(shù)據(jù)流后,首先完成數(shù)據(jù)解析,獲得用戶的經(jīng)緯度、大地高等位置信息,然后按自定義數(shù)據(jù)格式編碼,將位置信息轉(zhuǎn)發(fā)給位置服務(wù)平臺(tái)。
位置路由工具采用Java語(yǔ)言基于TCP/IP協(xié)議開(kāi)發(fā)完成。位置路由工具首先建立一個(gè)serverSocket(服務(wù)器套接字),等待用戶設(shè)備的連接,有用戶設(shè)備連接后,位置路由工具與位置服務(wù)平臺(tái)建立通信,開(kāi)始數(shù)據(jù)轉(zhuǎn)發(fā)。該過(guò)程的部分核心代碼如下。
本地IP端口:
final int port=Integer.parseInt(portNum);
final InetAddress host=InetAddress.getByName(hostName);
位置服務(wù)平臺(tái)IP 端口:
final int remotePort=Integer.parseInt(remotePortNum);
final InetAddress remoteHost=InetAddress.getByName(remoteHostName);
建立本地服務(wù),等待用戶連接:
serverSocket=new ServerSocket(port,50,host);
clientSocket=serverSocket.accept();
用戶連接后,建立遠(yuǎn)程連接:
remoteServerSocket=new Socket(remoteHost,remotePort);
在數(shù)據(jù)轉(zhuǎn)發(fā)前,需要進(jìn)行NMEA 0183協(xié)議格式解析,然后按自定義格式編碼,編碼過(guò)程即按字節(jié)排列信息。該過(guò)程由TransPortData類完成,部分核心代碼:
獲得輸入(用戶端)、輸出(位置服務(wù)平臺(tái))數(shù)據(jù)流:
InputStream in=getDataSocket.getInputStream();
OutputStream out=putDataSocket.getOutputStream();
讀入用戶端數(shù)據(jù):
byte[] data=new byte[2048];
int dataLength=in.read(data);
……(進(jìn)行數(shù)據(jù)解析和編碼)
轉(zhuǎn)發(fā)數(shù)據(jù):
out.write(sendgps,0,sendgps.length);
out.flush();
位置路由工具使用了多線程技術(shù),每連接一個(gè)用戶,會(huì)單獨(dú)創(chuàng)建一個(gè)線程進(jìn)行數(shù)據(jù)解析和編碼轉(zhuǎn)發(fā):
(new TransPortData(clientSocket,remoteServerSocket,ID[clientNum-1])).start();
另外,位置路由工具引入了心跳包機(jī)制,保證在轉(zhuǎn)發(fā)位置信息過(guò)程中,保持與位置服務(wù)平臺(tái)的通信。
使用2臺(tái)平板設(shè)備接入HLJCORS進(jìn)行高精度定位,然后將位置信息回傳至HLJCORS服務(wù)端,經(jīng)位置路由工具解析NMEA 0183位置信息并重新編碼后,將位置信息轉(zhuǎn)發(fā)至位置服務(wù)平臺(tái)。圖2為位置路由工具正在轉(zhuǎn)發(fā)2個(gè)用戶的位置信息,并等待其他用戶的連接。
專網(wǎng)CORS與位置服務(wù)平臺(tái)的集成應(yīng)用存在專網(wǎng)CORS用戶不能直接與位置服務(wù)平臺(tái)進(jìn)行數(shù)據(jù)通信及位置信息編碼協(xié)議不同兩個(gè)問(wèn)題。本文設(shè)計(jì)了中間件,即位置路由工具,解決了上述問(wèn)題。本文的研究思路和成果可供其他項(xiàng)目參考借鑒,中間件可向其他省市推廣使用。
圖2 位置路由工具
[1] 國(guó)家測(cè)繪地理信息局.關(guān)于規(guī)范衛(wèi)星導(dǎo)航定位基準(zhǔn)站數(shù)據(jù)密級(jí)劃分和管理的通知[EB/OL].2016-01-27.www.sbsm.gov.cn/zwgk/zcfgjjd/gfxwj/201702/t20170228_385148.shtml.
[2] 薛錚,宋玉兵.CORS系統(tǒng)網(wǎng)絡(luò)安全策略[J].現(xiàn)代測(cè)繪,2010,33(5):3-5.
[3] 方書山,章傳銀,秘金鐘.NMEA-0183格式數(shù)據(jù)流解析的一種實(shí)用方法[J].測(cè)繪通報(bào),2013(11):114-116.
[4] 張曉磊,古一鳴,宮殿明.黑龍江省衛(wèi)星定位連續(xù)運(yùn)行綜合服務(wù)系統(tǒng)(HLJCORS)控制中心設(shè)計(jì)[J].測(cè)繪與空間地理信息,2014,37(10):173-174.
[5] 秦建軍,劉詩(shī)儒.幾種實(shí)現(xiàn)APN業(yè)務(wù)的方法及比較[J].中國(guó)新通信,2010(21):13-15.
[6] 李斌,趙旺飛.多APN接入點(diǎn)并發(fā)訪問(wèn)控制方法[J].電信技術(shù),2013,1(7):31-33.
[7] 黨亞民,秘金鐘,成英燕.全球?qū)Ш叫l(wèi)星系統(tǒng)原理與應(yīng)用[M].北京:測(cè)繪出版社,2007.
[8] 黃俊華,陳文森.連續(xù)運(yùn)行衛(wèi)星定位綜合服務(wù)系統(tǒng)建設(shè)與應(yīng)用[M]北京:科學(xué)出版社,2009.
[9] 黃丁發(fā),周樂(lè)韜,李成鋼,等.GPS增強(qiáng)參考站網(wǎng)絡(luò)理論[M].北京:科學(xué)出版社,2011.
[10] 黨亞民,成英燕,薛樹(shù)強(qiáng).大地坐標(biāo)系統(tǒng)及其應(yīng)用[M].北京:科學(xué)出版社,2010.
[11] 陳昊鵬.JAVA編程思想[M].北京:機(jī)械工業(yè)出版社,2007.
[12] 張慶全,林富明,周源.基于“天地圖”的位置服務(wù)平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].測(cè)繪與空間地理信息,2013,36(8):98-102.
[13] 李健,呂志平.基于CORS的衛(wèi)星定位在線服務(wù)系統(tǒng)[J].測(cè)繪通報(bào),2007(8):40-44.