• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      利用 VB實現(xiàn)手持 GPS航點航線輸入

      2010-01-11 08:27:02蔡足根陸柏樹
      物探化探計算技術(shù) 2010年1期
      關(guān)鍵詞:航點航線坐標(biāo)系

      蔡足根,陸柏樹

      (湖北省水文地質(zhì)工程地質(zhì)勘察院,湖北荊州 434100)

      0 前言

      手持 GPS是目前地質(zhì)工作中常用的工具,但由于其坐標(biāo)投影格式和數(shù)據(jù)輸入的問題,給大多數(shù)地質(zhì)工作者帶來了一定的困惑和苦惱。

      對于要求出二個坐標(biāo)系之間的轉(zhuǎn)換參數(shù),需要進行大量而復(fù)雜的計算工作,如果利用手工的計算方法,既費時又費力,而且計算精度也相對較低。對于大量坐標(biāo)數(shù)據(jù)的手工輸入,更是一個相當(dāng)繁瑣的工作,且輸入的數(shù)據(jù)出錯率較高。要實現(xiàn)坐標(biāo)數(shù)據(jù)的高效轉(zhuǎn)換和快速傳輸,可以利用多種編程語言來編寫軟件,解決坐標(biāo)數(shù)據(jù)自動化轉(zhuǎn)換和自動化傳輸?shù)膯栴}。

      由于VisualBasic是Windows操作系統(tǒng)下一種面向用戶的編程語言。它沿用了一些標(biāo)準(zhǔn) Basic的函數(shù)和編程風(fēng)格,同時又有許多新的函數(shù)適合于Windows操作系統(tǒng)使用。采用 VB(VisualBasic)編寫的軟件,編譯后具有很強的獨立性和可移植性,VisualBasic6.0目前也是眾多流行的編程軟件之一。

      根據(jù)作者多年工作經(jīng)驗和總結(jié),成功地利用VB解決了坐標(biāo)投影轉(zhuǎn)換和批量數(shù)據(jù)輸入手持 GPS的問題。該方法簡單實用,可以在物化探和地質(zhì)測繪,特別是在中小比例尺放樣中得到廣泛使用。作者在本文的主體思路是通過 VB,將各種坐標(biāo)數(shù)據(jù)轉(zhuǎn)換成 WGS-84坐標(biāo)數(shù)據(jù),并生成 Mapsource能識別的 gpx文件,Mapsource可以通過自身內(nèi)部程序,自動地將WGS-84坐標(biāo)轉(zhuǎn)換成自定義坐標(biāo)系,再將數(shù)據(jù)上傳到 GPS中。

      下面以湖北恩施高速公路物探放點測量為例進行詳細(xì)介紹 (已知測線方位 166°,測點間距 150 m,測線長 1800m,測點坐標(biāo)為 BJ-54坐標(biāo),總共13個測點,測線起始點 4+01的坐標(biāo)為 3500532,19437330,終點 4+13的坐標(biāo)為 3498780,19437762)。

      1 設(shè)備和軟件準(zhǔn)備

      作者在本文中,主要針對 GARMINeTrexVenture手持 GPS的數(shù)據(jù)傳輸,采用的軟件有 Visual Basic編程軟件和 GPS傳輸軟件 Mapsource6.5。對于其它型號的手持 GPS,可以采用由廠家提供的傳輸軟件,或下載 EasyGPS等綠色軟件來完成。并且,EasyGPS支持多款手持 GPS的數(shù)據(jù)輸入輸出。

      2 gpx文件解讀

      在Mapsource中,任意輸入一條航線并保存它,保存類型設(shè)為“GPS交換格式 (*.gpx)”,文件名為“航點航線.gpx”,以備下一步工作的需要。

      gpx文件是一個基于 XML語法和文件格式的文件,主要用來描述和保存地理信息。該文件主要分為四個部份:文件頭、航點屬性、航線屬性和文件尾。首先解讀一下這個文件,利用 window自帶的記事本打開文件“航點航線.gpx”,可以看到從文件開始到 語句描述的是 XML版本、網(wǎng)站信息、格式、創(chuàng)建時間和航線航點分布范圍等,這些內(nèi)容對數(shù)據(jù)傳輸沒有影響,可照搬而不去理會。重點是對航點和航線的描述部份。

      (1)航點數(shù)據(jù)格式:從每個 之間,記錄了單個航點的經(jīng)緯度 (WGS-84坐標(biāo))、創(chuàng)建時間、航點名稱、航點符號等。

      (2)航線數(shù)據(jù)格式:之間為一條航線描述,后面的語句 為航線名稱描述,其中 AAA為名稱,可以根據(jù)用戶需要進行修改,接下來是航線上各航點的描述,與航點數(shù)據(jù)格式基本相似。這里就不一一講解了,相信讀者很容易看懂。文件尾“”表示文件結(jié)束。

      3 gpx文件的生成

      對 gpx文件了解之后,現(xiàn)可以通過 VB編寫程序?qū)崿F(xiàn) gpx文件的生成。

      3.1 gpx文件生成器的程序編制

      在 gpx文件生成器左邊的 TextBox控件中輸入原始數(shù)據(jù),數(shù)據(jù)格式為“編號,X(或 B),Y(或 L)”。如果輸入的數(shù)據(jù)為WGS-84坐標(biāo),則在 Option控件中選擇對應(yīng)的WGS-84坐標(biāo)系;同理,其它數(shù)據(jù)格式對應(yīng)選擇。在填寫和選擇正確后,點擊“生成gpx文件”,即可在右邊的 TextBox控件中顯示出gpx的全部內(nèi)容,在確認(rèn)無誤后點擊“保存 gpx文件 ”即可 (見圖 1)。

      圖 1 gpx文件生成器的編制Fig.1 Gpxfilelayoutofgenerator

      3.2 坐標(biāo)轉(zhuǎn)換

      由于Mapsource只能識別 gpx文件中的 WGS-84坐標(biāo)數(shù)據(jù),所以當(dāng)現(xiàn)有的數(shù)據(jù)為其它坐標(biāo)系時,還應(yīng)將坐標(biāo)數(shù)據(jù)轉(zhuǎn)換成WGS-84坐標(biāo)系。坐標(biāo)轉(zhuǎn)換就是依據(jù)一定的數(shù)學(xué)模型,計算出二個坐標(biāo)系間的轉(zhuǎn)換參數(shù),然后利用所求的轉(zhuǎn)換參數(shù)對其余各點進行轉(zhuǎn)換。研究不同坐標(biāo)系統(tǒng)的坐標(biāo)轉(zhuǎn)換問題,主要是研究不同的空間直角坐標(biāo)系的坐標(biāo)轉(zhuǎn)換問題,合理確定二種坐標(biāo)系的轉(zhuǎn)換參數(shù)是非常關(guān)鍵。一般的是根據(jù)已知的一部份同名點 (也稱公共點)在二個坐標(biāo)系中的坐標(biāo),選擇一定的計算方法進行解算。目前常用的有三點法、多點法和嚴(yán)密平差法等多種方法。在實際工作中,根據(jù)不同的精度要求,可選取不同的方法。二個不同的空間直角坐標(biāo)系有七個轉(zhuǎn)換參數(shù),一般來說,有三個同名點就可以求得轉(zhuǎn)換參數(shù)。關(guān)于坐標(biāo)轉(zhuǎn)換已經(jīng)有相關(guān)論文利用 VB實現(xiàn)過,作者在本文主要用到的是將各種坐標(biāo)數(shù)據(jù)轉(zhuǎn)換成WGS-84坐標(biāo)數(shù)據(jù),具體原理和實現(xiàn)過程可見參考文獻[2],這里就不再詳細(xì)介紹了。

      為了敘述方便,現(xiàn)將WGS-84坐標(biāo)轉(zhuǎn)換數(shù)據(jù)在VB模塊中用一個公式來描述:PublicSubXY_To_LB(XAsDouble,YAsDouble,BAsDouble,L AsDouble,MAsInteger),其中 X、Y為待轉(zhuǎn)換的坐標(biāo),B、L為轉(zhuǎn)換后緯度和經(jīng)度坐標(biāo),M為待轉(zhuǎn)換坐標(biāo)的格式。

      3.3 主要部份源代碼

      根據(jù) gpx文件解讀可知,gpx文件由四個部份組成,文件頭、航點屬性、航線屬性和文件尾。

      3.3.1 生成 gpx文件

      PrivateSubCommand1_Click()

      DimS$,SS$,SSS$,SSSS$,S0$,S1$,S2$,S3$,S4$,temp$,txt1$,txt2$

      DimSZ1$(),N $,A1$

      DimA2#,A3#,WD#,JD#

      S="

      xsi:schemaLocation =""http://www.topografix.com/GPX/1/1http://www.topografix.com/GPX/1/1/gpx.xsd"">"

      S0=""

      S3=""

      S4=""

      SZ1()=Split(Text1,vbCrLf)′以下為分列讀取坐標(biāo)數(shù)據(jù)

      Fori=0ToUBound(SZ1)

      IfInStr(SZ1(i),",")<>0Then

      A1= (Mid(SZ1(i),1, (InStr(SZ1(i),",")-1))) ′讀取第 1列

      A2=Val(Mid(SZ1(i),InStr(SZ1(i),",") + 1, InStr(InStr(SZ1(i),",") + 1,SZ1(i),",")-1))′讀取第 2列

      A3=Val(Mid(SZ1(i),InStr(InStr(SZ1(i),",")+1,SZ1(i),",")+1))′讀取第3列

      EndIf

      IfOption1.ValueThen ′即為 54坐標(biāo)

      CallXY_To_LB(A2,A3,WD,JD,1)

      txt1= txt1&""&vbCrLf

      txt2= txt2&""&vbCrLf

      ElseIfOption2.ValueThen ′即為 80坐標(biāo)

      CallXY_To_LB(A2,A3,WD,JD,2)

      txt1= txt1&""&vbCrLf

      txt2= txt2&""&vbCrLf

      Else ′即為 84坐標(biāo)

      txt1=txt1&" "&vbCrLf

      txt2= txt2&""&vbCrLf

      EndIf Nexti

      S2=A1′讀取航線終點

      Text2.Text=S&vbCrLf&SS&vbCrLf&txt1&S0&S1&"TO"&S2&S3&vbCrLf&txt2&S4′顯示到 text2.text

      EndSub

      3.3.1 保存 gpx文件

      PrivateSubCommand2_Click()′保存 gpx文件

      DimFName1$

      CommonDialog1.DialogTitle="另存轉(zhuǎn)換數(shù)據(jù)文件"

      CommonDialog1.Filter="轉(zhuǎn)換數(shù)據(jù) (*.gpx)|*.gpx"

      CommonDialog1.FileName=""

      CommonDialog1.ShowSave

      FName1=CommonDialog1.FileName

      IfFName1=""ThenExitSub

      OpenFName1ForOutputAs#1

      Print#1,Text2.Text

      Close#1

      EndSub

      3.4 程序設(shè)計中一些技術(shù)問題的處理

      3.4.1 原始數(shù)據(jù)分隔符的處理

      根據(jù)數(shù)據(jù)本身的特點以及使用者的愛好,原始數(shù)據(jù)使用分隔符可能會不一樣,為了使該程序適用更廣,現(xiàn)對原始數(shù)據(jù)分隔符作適當(dāng)?shù)念A(yù)處理,將各種不同的數(shù)據(jù)分隔符全部替換成一種分隔符。以下編寫了一個公式 TH(),對十個不同的數(shù)據(jù)分隔符全部替換成以“,”分隔。筆者也可以根據(jù)自己的習(xí)慣或愛好去修改,詳細(xì)代碼如下:

      FunctionTH(TxtAsString)

      Txt=Replace(Txt,"",",") ′3個空格分隔

      Txt=Replace(Txt,"",",")′2個空格分隔

      Txt=Replace(Txt,"",",")′1個空格分隔

      Txt=Replace(Txt,Chr(9),",") ′tab分隔

      Txt=Replace(Txt,";",",") ′;分隔

      Txt=Replace(Txt,":",",") ′:分隔

      Txt=Replace(Txt,Chr(-23636),",")′,分隔

      Txt=Replace(Txt,Chr(-24158),",")’、分隔

      Txt=Replace(Txt,Chr(-23621),",")′;分隔

      Txt=Replace(Txt,Chr(-23622)",") ′:分隔

      EndFunction

      其中,Txt為要替換的文本內(nèi)容。

      3.4.2 gpx文件編碼轉(zhuǎn)換

      由VB直接生成的文本文件編碼都是 ANSI,而Mapsource只能識別UTF-8編碼。要將一個文本文檔的編碼修改成 UTF-8格式有二種方法,一種是手動修改,直接將文本文檔選擇 UTF-8編碼另存即可;另一種就是編寫 VB代碼自動實現(xiàn),同樣可以編寫一個轉(zhuǎn)換公式 ConvUTF8(),詳細(xì)代碼如下:

      FunctionConvUTF8(FPathAsString)

      DimADO_StreamAsObject

      DimB()AsByte

      ReDimB(FileLen(FPath))

      OpenFPathForBinaryAs#1

      Get#1,,B

      Close#1

      D=StrConv(B,vbUnicode)

      SetADO_Stream=CreateObject("ADODB.

      Stream")

      WithADO_Stream

      .Type=2

      .Mode=3

      .Charset="UTF-8"

      .Open

      .WritetextD

      .SaveToFileFPath,adSaveCreateOverWrite

      .Close

      EndWith

      EndFunction

      其中 FPath為待轉(zhuǎn)換文本文件的路徑。

      4 數(shù)據(jù)傳輸?shù)?GPS

      4.1 手持 GPS設(shè)置

      由于大多數(shù)工區(qū)坐標(biāo)系都是用戶自定義坐標(biāo)系,為了開展工作方便,可以將 GPS的坐標(biāo)系統(tǒng)設(shè)置成用戶自定義坐標(biāo)系。湖北恩施高速公路給定測點坐標(biāo)系為 BJ-84,為了使用方便,現(xiàn)將 GPS中的坐標(biāo)系統(tǒng)通過用戶自定義的方式設(shè)置成 BJ-54坐標(biāo),具體操作如下:

      (1)進入 GPS主菜單頁面的“設(shè)置”子頁面中,按動方向鍵選擇“單位”,按輸入鍵進入坐標(biāo)設(shè)置的頁面,將“位置格式”的選項改為“UserUTM Grid”(自定義坐標(biāo)格式)。在出現(xiàn)的參數(shù)頁面中,輸入相關(guān)的參數(shù),參數(shù)包括中央經(jīng)線 (根據(jù)當(dāng)?shù)氐乩砦恢么_定,本次工作區(qū)為 111°),投影比例 (該值為 1),東西偏差 (該值為 500000.0)以及南北偏差 (該值為 0)。

      (2)按下屏幕上的“存儲”按鈕后,再將“地圖基準(zhǔn)”(有的 GPS稱之為“坐標(biāo)系統(tǒng)”)的選項改為“User”(自定義坐標(biāo)系統(tǒng))。在出現(xiàn)的參數(shù)頁面中輸入相關(guān)參數(shù),包括 DX、DY、DZ、DA和 DF。對于BJ-54坐標(biāo)系,DA的值為 -108,DF的值為0.0000005。按下屏幕上的“存儲”按鈕后,GPS顯示的坐標(biāo)點格式為 BJ-54坐標(biāo)格式。如果是80坐標(biāo) ,則 DA=-3,DF=0。

      DX、DY及 DZ三個參數(shù)因地區(qū)而異,具體的求解辦法這里就不作詳細(xì)介紹了,相信大家都知道。在這里,作者根據(jù)該工區(qū)現(xiàn)場條件,求解得到DX=-6,DY=-110,DZ=-48。

      4.2 Mapsource設(shè)置

      為了保證數(shù)據(jù)在同一個坐標(biāo)系中傳輸,Mapsource的設(shè)置應(yīng)與 GPS設(shè)置一致,具體操作如下:

      (1)進入編輯 /首選項 /位置進入坐標(biāo)設(shè)置的頁面,將“格網(wǎng)”中的選項改為“用戶定義的格網(wǎng)”,然后在“屬性”選項中,將參數(shù)設(shè)置與 GPS相一致。

      (2)將“地圖基準(zhǔn)”的中選項改為“用戶定義的地圖基準(zhǔn)”,在“屬性”選項中設(shè)置相應(yīng)的參數(shù),參數(shù)包括 DeltaX、DeltaY、DeltaZ、Delta半長和 Delta扁 ,其值依次與 GPS中的 DX、DY、DZ、DA和 DF對應(yīng)。

      4.3 數(shù)據(jù)傳輸?shù)?GPS

      當(dāng)參數(shù)設(shè)置好后,利用Mapsource程序打開剛保存過的 gpx文件,在Mapsource可以看到十三個航點和一條航線,這時數(shù)據(jù)就全部調(diào)入到 Mapsource中了。然后,將手持 GPS與 Mapsource軟件對接,點擊“發(fā)送到設(shè)備”按鈕,選擇傳輸航線,數(shù)據(jù)就全部上傳到手持 GPS上了,此時 GPS上的數(shù)據(jù)顯示為設(shè)置好的BJ-54坐標(biāo)?,F(xiàn)在就可以利用它到野外進行導(dǎo)航、定點了。

      5 結(jié)語

      以上主要闡述了一條航線的生成方法,讀者也可以根據(jù)以上原理,編寫多條航線或航跡的 gpx文件。

      由于傳統(tǒng)的野外地質(zhì)記錄方式及其地質(zhì)人員對硬件設(shè)施的運用現(xiàn)狀,致使許多數(shù)據(jù)點的轉(zhuǎn)換和傳輸還經(jīng)常要人工進行操作,這樣難以提高工作效率,同時增加了出錯率。利用 VB實現(xiàn)了坐標(biāo)投影轉(zhuǎn)換和批量數(shù)據(jù)輸入 GPS,極大地方便了地質(zhì)資料的整理、管理和利用。

      [1] 劉大杰,施一民,過靜珺.全球定位系統(tǒng) (GPS)的原理與數(shù)據(jù)處理[M].上海:同濟大學(xué)出版社,1997.

      [2] 宋順安,陳懷爭.利用 VB實現(xiàn)手持 GPS成果坐標(biāo)系轉(zhuǎn)換的方法[J].測繪技術(shù)裝備,2007,9(2):9.

      [3] GARMIN公司.eTrexVenture-奇遇 GPS使用手冊[S].北京:GARMIN公司,2006.

      [4] 王聲喜 ,康寶林.Mapsource與 Excel、MapGIS相結(jié)合在化探中的應(yīng)用 [J].物探化探計算技術(shù),2009,31(2):169.

      [5] 宋丙劍,張艷軍.記事本、Excel在 Mapsource和 Mapgis數(shù)據(jù)轉(zhuǎn)換中的應(yīng)用探討 [J].礦山測量,2008,(2):27.

      [6] 劉凡珍 ,郭玉軍 ,孫萍 ,等.GPS與 Excel、Mapgis相結(jié)合在化探工作中的應(yīng)用[J].吉林地質(zhì),2007,26(1):61.

      [7] 中海達公司.Coord4.0使用說明書[R].廣州:中海達公司,2004.

      [8] GARMIN公司.Mapsource使用說明書 [R].北京:GARMIN公司.2004.

      [9] 王會鋒,彭立華,安興,等.GPS技術(shù)在化探工作中的應(yīng)用[J].物探與化探,2008,32(5):477.

      [10]李鵬,楊婷婷,王秋菊,等.手持 GPS的功能及其在野外調(diào)查中的應(yīng)用 [J].內(nèi)蒙古農(nóng)業(yè)科技.2008,(05):98。

      [11]王建宏.用 VB實現(xiàn) GPS信息處理 [J].微型電腦應(yīng)用.2007,23(1):43.

      [12]張云.手持 GPS坐標(biāo)系統(tǒng)轉(zhuǎn)換參數(shù)的求解方法[J].西部探礦工程.2006,18(8):46.

      [13]周忠謨.GPS衛(wèi)星測量原理與應(yīng)用 (修訂版)[M].北京:測繪出版社,2004.

      [14]杜大彬,張寬房,張開盾,等.手持 GPS坐標(biāo)系轉(zhuǎn)換方法[J].陜西地質(zhì).2007,35(01):96.

      猜你喜歡
      航點航線坐標(biāo)系
      (21)新航線
      二次開發(fā)在航點航跡圖批量繪制中的應(yīng)用
      解密坐標(biāo)系中的平移變換
      坐標(biāo)系背后的故事
      基于重心坐標(biāo)系的平面幾何證明的探討
      太空新航線
      太空探索(2016年5期)2016-07-12 15:17:58
      太空新航線
      太空探索(2016年6期)2016-07-10 12:09:06
      極坐標(biāo)系下移動機器人的點鎮(zhèn)定
      扬中市| 庆安县| 外汇| 扎兰屯市| 冀州市| 宣恩县| 成安县| 集安市| 乐都县| 阳西县| 宿迁市| 永安市| 博湖县| 英超| 万全县| 迁西县| 永康市| 中卫市| 泰安市| 合水县| 海安县| 盐池县| 武平县| 宜宾市| 盐源县| 洛浦县| 扶沟县| 海安县| 日土县| 息烽县| 泸溪县| 平乡县| 尉犁县| 于都县| 黔江区| 含山县| 新泰市| 芦山县| 分宜县| 贵德县| 巧家县|