馬懷武,王俊強(qiáng),郝恒強(qiáng),陳 波
(1.68029部隊(duì) ,甘肅 蘭州 730020;2.68011部隊(duì) ,甘肅 蘭州 730020)
基于AUTOCAD的北斗定位數(shù)據(jù)接收模塊的設(shè)計(jì)與實(shí)現(xiàn)*
馬懷武1,王俊強(qiáng)1,郝恒強(qiáng)1,陳 波2
(1.68029部隊(duì) ,甘肅 蘭州 730020;2.68011部隊(duì) ,甘肅 蘭州 730020)
在AUTOCAD平臺(tái)的基礎(chǔ)上,通過(guò)二次開(kāi)發(fā),增加北斗接收機(jī)定位數(shù)據(jù)接收及處理模塊,可以快速采集CGCS2000坐標(biāo)系下的定位數(shù)據(jù),達(dá)到快速更新地圖數(shù)據(jù)的目的。據(jù)此,采用C#語(yǔ)言在AUTOCAD平臺(tái)上設(shè)計(jì)了北斗定位數(shù)據(jù)的接收及處理模塊,并實(shí)現(xiàn)了數(shù)據(jù)的接收及實(shí)時(shí)處理。
Serialport通信;NMEA-0183協(xié)議;CASS符號(hào)庫(kù);AUTOCAD
目前,隨著CGCS2000國(guó)家大地坐標(biāo)系的啟用,我國(guó)正在加速更新地圖數(shù)據(jù)成果,國(guó)家要求用8-10年時(shí)間,完成現(xiàn)有的各類(lèi)基礎(chǔ)測(cè)繪成果和基礎(chǔ)地理信息數(shù)據(jù)庫(kù)的坐標(biāo)系向CGCS2000國(guó)家大地坐標(biāo)系的過(guò)度和轉(zhuǎn)換[1],轉(zhuǎn)換后部分?jǐn)?shù)據(jù)需要實(shí)際測(cè)量檢測(cè)更新,而當(dāng)前地圖數(shù)據(jù)的野外獲取多數(shù)采用的是GPS定位數(shù)據(jù),自主獨(dú)立性不高,隨著我國(guó)正在加速建設(shè)自主研制的北斗衛(wèi)星導(dǎo)航系統(tǒng),采用北斗定位數(shù)據(jù)更新地圖成果將能更好發(fā)揮獨(dú)立自主的優(yōu)勢(shì)。目前北斗衛(wèi)星導(dǎo)航系統(tǒng)已經(jīng)能夠?yàn)槲覈?guó)及周邊范圍提供實(shí)現(xiàn)實(shí)時(shí)無(wú)源定位,北斗衛(wèi)星導(dǎo)航系統(tǒng)采用的是CGCS2000國(guó)家大地坐標(biāo)系,定位精度目前能夠達(dá)到10 m,隨著系統(tǒng)建設(shè)的完善,精度將會(huì)得到進(jìn)一步提高。在AUTOCAD平臺(tái)基礎(chǔ)上,可以設(shè)計(jì)實(shí)現(xiàn)北斗定位數(shù)據(jù)接收及實(shí)時(shí)處理模塊。
北斗定位數(shù)據(jù)接收及處理模塊是在ATUOCAD平臺(tái)的基礎(chǔ)上采用C#語(yǔ)言編程實(shí)現(xiàn)的。早期的AUTOCAD二次開(kāi)發(fā)語(yǔ)言主要有LISP語(yǔ)言、C++語(yǔ)言、VBA語(yǔ)言,從AUTOCAD 2006開(kāi)始,Autodesk為其開(kāi)發(fā)增加了.NET API。.NET API提供了一系列托管的外包類(lèi),使開(kāi)發(fā)人員可在.NET框架下,使用任何支持.NET的語(yǔ)言,如 VB.NET、C#和 Managed C++等對(duì) AUTOCAD進(jìn)行二次開(kāi)發(fā)[2]。.NET API與傳統(tǒng) ObjectARX 的區(qū)別主要源于在.NET環(huán)境下開(kāi)發(fā)應(yīng)用程序與在VC環(huán)境下開(kāi)發(fā)應(yīng)用程序的區(qū)別,在VC環(huán)境下,程序員需要自己管理內(nèi)存的申請(qǐng)和釋放,而.NET框架自行判斷內(nèi)存回收的時(shí)機(jī)并實(shí)行回收,從而解決了C++內(nèi)存泄漏問(wèn)題,是較理想的AUTOCAD二次開(kāi)發(fā)工具。
在與北斗接收機(jī)進(jìn)行數(shù)據(jù)交換采用的是串口通信方式,利用.NET框架下的Serialport串口通信類(lèi)[3]編程可方便實(shí)現(xiàn)所需要串口通訊的多種功能。
北斗衛(wèi)星導(dǎo)航定位系統(tǒng)是我國(guó)自主研制的衛(wèi)星導(dǎo)航定位系統(tǒng),空間星座部分由5顆GEO衛(wèi)星和30顆非GEO衛(wèi)星構(gòu)成,還正處于組網(wǎng)建設(shè)階段,建設(shè)完成后能夠在全球范圍內(nèi)提供實(shí)時(shí)無(wú)源定位,目前在中國(guó)及周邊范圍內(nèi)能夠提供全天候無(wú)源定位。
北斗接收機(jī)也采用美國(guó)國(guó)家海洋電子協(xié)會(huì)制定的NMEA-0183協(xié)議通信。NMEA0183規(guī)定的數(shù)據(jù),采用ANSI標(biāo)準(zhǔn),以串口非同步傳送[4]。協(xié)議規(guī)定每條語(yǔ)句都以字符“$”為起始標(biāo)識(shí)符,其后緊跟5個(gè)ASCII字符的地址域值,然后是以域分隔符“,”分隔開(kāi)的若干數(shù)據(jù)域和一個(gè)校驗(yàn)域,最后以回車(chē)換行符(CRLF)作為語(yǔ)句結(jié)束標(biāo)識(shí)符。北斗接收機(jī)常用語(yǔ)句有GSA、GGA、ZDA、GSV、RMC等。以BDGGA數(shù)據(jù)為例,其格式如表1所示。
表1 BDGGA數(shù)據(jù)格式Tab.1 Data format of BDGGA
建立數(shù)據(jù)實(shí)時(shí)接收及處理模塊,是在串口讀取北斗定位信息的基礎(chǔ)上,對(duì)定位信息進(jìn)行選擇性提取,再對(duì)提取的信息實(shí)時(shí)處理,具體流程,如圖1所示。
圖1 北斗定位數(shù)據(jù)接收及處理模塊的設(shè)計(jì)流程Fig.1 Flow chart of design of big dipper positioning data receiving and processing module
模塊設(shè)計(jì)的思路按照?qǐng)D1所示,采集北斗定位數(shù)據(jù)前,應(yīng)先串口連通北斗衛(wèi)星定位接收機(jī),在AUTOCAD中增加北斗定位數(shù)據(jù)接收模塊,用于實(shí)時(shí)接收北斗定位數(shù)據(jù);采集的數(shù)據(jù)即存為.dat格式,也在ATUOCAD繪圖窗口中進(jìn)行實(shí)時(shí)標(biāo)注點(diǎn)位信息,然后可以利用CASS符號(hào)庫(kù)對(duì)相應(yīng)點(diǎn)位附上符號(hào)屬性[5]從而完成數(shù)據(jù)的采集與圖形的繪制工作。采集點(diǎn)位信息具備單擊鼠標(biāo)采集和按時(shí)間間隔采集兩種方式(采集成功的條件是衛(wèi)星數(shù)大于4,且DOP值小于6),在采集更新點(diǎn)狀地物時(shí)一般采用單擊采集方式,而在比較空曠的地方,采集更新線狀地物時(shí)可以采用按時(shí)間間隔采集方式。兩種方式各具特點(diǎn),根據(jù)不同的環(huán)境靈活使用,可以提高效率。
通過(guò)Serialport串口通信類(lèi)編程可以實(shí)時(shí)提取BD定位信息。首先要編程實(shí)現(xiàn)Serialport串口通信參數(shù)設(shè)置,才能同步讀取定位信息。讀取北斗定位數(shù)據(jù)是在AUTOCAD標(biāo)繪點(diǎn)位信息的前提,其關(guān)鍵代碼如下:
采用上述代碼能夠?qū)崿F(xiàn)在AUTOCAD繪圖窗口中實(shí)時(shí)標(biāo)記點(diǎn)位信息,并通過(guò)CASS符號(hào)庫(kù)編輯地物信息。利用timer控件,并設(shè)置timer1_Tick事件可以按時(shí)間間隔方式采集定位信息,在寬闊無(wú)遮擋的地域,采用按時(shí)間間隔自動(dòng)存儲(chǔ)方式采集道路信息,能提高工作效率。
圖2是在AUTOCAD中設(shè)計(jì)的一個(gè)點(diǎn)地物采集界面,可實(shí)時(shí)查看當(dāng)前位置以及精度因子情況,通過(guò)投影參數(shù)設(shè)置,數(shù)據(jù)源文件新建或打開(kāi),就可在基于AUTOCAD平臺(tái)以及CASS符號(hào)庫(kù)的基礎(chǔ)上,對(duì)地圖數(shù)據(jù)進(jìn)行實(shí)時(shí)采集更新,并可對(duì)采集的數(shù)據(jù)進(jìn)行查看編輯。
圖2 數(shù)據(jù)采集查看界面Fig.2 The interface of collecting and viewing of data
設(shè)計(jì)北斗定位數(shù)據(jù)接收及處理模塊有助于更新地圖數(shù)據(jù),尤其是對(duì)導(dǎo)航電子地圖道路網(wǎng)的更新,具有一定的參考價(jià)值。圖3是實(shí)際采集了一個(gè)加油站及道路的某段,通過(guò)CASS符號(hào)庫(kù)將采集的信息賦予相應(yīng)符號(hào)屬性。
圖3 實(shí)際采集效果Fig.3 The effect of the actual collecting
本文設(shè)計(jì)了北斗定位數(shù)據(jù)的接收模塊并實(shí)現(xiàn)了數(shù)據(jù)的實(shí)時(shí)處理,在更新導(dǎo)航電子地圖中,可以較好的運(yùn)用到道路網(wǎng)的更新上,具有效率高的特點(diǎn)。隨著北斗衛(wèi)星導(dǎo)航系統(tǒng)空間衛(wèi)星數(shù)的增多,地面差分站建設(shè)的完善,以及測(cè)量型北斗接收機(jī)的普及,北斗定位精度將得到較大提高,屆時(shí),該方法將可以運(yùn)用到大比例尺地形圖的更新上。
[1]國(guó)家測(cè)繪局.關(guān)于印發(fā)《啟用2000國(guó)家大地坐標(biāo)系實(shí)施方案》的通知[Z].北京:國(guó)家測(cè)繪局,2008.
[2]李冠億.深居淺出 AUTOCAD二次開(kāi)發(fā)[EB/OL].http://www.BimCad.org.
[3]翟希述,王寶興,范淼.基于Visual C#的串口通訊程序設(shè)計(jì)[J].電子科技,2011,24(2):24 -26.
[4]李建文,李軍正.衛(wèi)星導(dǎo)航原理與應(yīng)用[M].鄭州:解放軍信息工程大學(xué),2007:279 -283.
[5]吉緒發(fā),王洪飛.南方軟件CASS6.0用戶手冊(cè)[K].廣州:南方數(shù)碼科技有限公司,2004.
[6]呂志平,張建軍,喬書(shū)波.大地測(cè)量學(xué)基礎(chǔ)[M].北京:解放軍出版社,2005:176-203.
Design and Realization of Receiving Mold Piece of the Positioning Data of Compass Based on AUTOCAD
MA Huai-wu1,WANG Jun-qiang1,HAO Heng-qiang1,Chen-Bo2
(1.68029 Troops,Lanzhou Gansu 730020 China;2.68011 Troops,Lanzhou Gansu 730020 China)
Increasing the receiving and processing mold piece of big dipper positioning data of Compass based on the platform of AUTOCAD,we can collect the positioning data of the coordinate system of CGCS2000 quickly for updating map data.This paper has realized receiving and processing the positioning data of Compass based on AUTOCAD.NET by using C#Language.
Serial-port communication;protocol of NMEA-0183;sign database of CASS;AUTOCAD
P 208;P 209
B
1007-9394(2012)02-0026-03
2012-01-10
馬懷武(1972~),男,甘肅靖遠(yuǎn)人,碩士,高級(jí)工程師,主要研究方向:大地測(cè)量與導(dǎo)航工程。