GPS坐标转换(一)-基础知识
由于經(jīng)常涉及到GPS程序的編寫,現(xiàn)在貌似這個GPS是越來越火,越來越多的朋友在編寫GPS程序,估計是個人都會遇到這個GPS坐標轉換的問題,很慚愧的是,作為一個測量專業(yè)出身的學生,我還得時不時的要把這些概念翻過來覆過去的看好幾遍,每次看書都能有新的收獲,我希望這次用這篇博客能夠詳細具體的把GPS坐標轉換講清楚。
這里我就不贅述有關什么GPS測量原理已經(jīng)GPS通信等問題了,GPS測量原理有空大家自己翻書去看,核心原理就是由已知衛(wèi)星的位置通過距離來反算GPS位置坐標,測量上叫后方交會吧!GPS通信問題其實也就是個串口通訊原理,在WINDOWS MOBILE 5.0版本上更是已經(jīng)被封裝好了,方便使用
由于懶的打字,本人這里的文字都是從網(wǎng)上轉載,我只選經(jīng)典,解釋正確的放這里!
地球橢球體 大地基準面 投影坐標系統(tǒng) 定義
地球橢球體(Ellipsoid)
大地基準面(Geodetic datum)
投影坐標系統(tǒng)(Projected Coordinate Systems)
GIS中的坐標系定義由基準面和地圖投影兩組參數(shù)確定,而基準面的定義則由特定橢球體及其對應的轉換參數(shù)確定,因此欲正確定義GIS系統(tǒng)坐標系,首先必須弄清地球橢球體(Ellipsoid)、大地基準面(Datum)及地圖投影(Projection)三者的基本概念及它們之間的關系。
地球橢球體(Ellipsoid)
眾所周知我們的地球表面是一個凸凹不平的表面,而對于地球測量而言,地表是一個無法用數(shù)學公式表達的曲面,這樣的曲面不能作為測量和制圖的基準面。假想一個扁率極小的橢圓,繞大地球體短軸旋轉所形成的規(guī)則橢球體稱之為地球橢球體。地球橢球體表面是一個規(guī)則的數(shù)學表面,可以用數(shù)學公式表達,所以在測量和制圖中就用它替代地球的自然表面。因此就有了地球橢球體的概念。
地球橢球體有長半徑和短半徑之分,長半徑(a)即赤道半徑,短半徑(b)即極半徑。f=(a-b)/a為橢球體的扁率,表示橢球體的扁平程度。由此可見,地球橢球體的形狀和大小取決于a、b、f 。因此,a、b、f被稱為地球橢球體的三要素。
對地球橢球體而言,其圍繞旋轉的軸叫地軸。地軸的北端稱為地球的北極,南端稱為南極;過地心與地軸垂直的平面與橢球面的交線是一個圓,這就是地球的赤道;過英國格林威治天文臺舊址和地軸的平面與橢球面的交線稱為本初子午線。以地球的北極、南極、赤道和本初子午線等作為基本要素,即可構成地球橢球面的地理坐標系統(tǒng)。可以看出地理坐標系統(tǒng)是球面坐標系統(tǒng),以經(jīng)度/維度(通常以十進制度或度分秒(DMS)的形式)來表示地面點位的位置。地理坐標系統(tǒng)以本初子午線為基準(向東,向西各分了180度)之東為東經(jīng)其值為正,之西為西經(jīng)其值為負;以赤道為基準(向南、向北各分了90度)之北為北緯其值為正,之南為南緯其值為負。
大地基準面(Geodetic datum)
注:這個地方我以前一直沒搞懂,這次開發(fā)的軟件中我終于明白這個含義了,我也終于搞清楚了,為什么說北京54坐標系的橢球是卡拉索夫斯基橢球但還說北京54的轉換參數(shù)沒有公布,原來這里說的北京54的轉換參數(shù)說的是大地基準面的參數(shù)!!
大地基準面(Geodetic datum),設計用為最密合部份或全部大地水準面的數(shù)學模式。它由橢球體本身及橢球體和地表上一點視為原點間之關系來定義。此關系能以 6個量來定義,通常(但非必然)是大地緯度、大地經(jīng)度、原點高度、原點垂線偏差之兩分量及原點至某點的大地方位角。
讓我們先拋開測繪學上這個晦澀難懂的概念,看看GIS系統(tǒng)中的基準面是如何定義的,GIS中的基準面通過當?shù)鼗鶞拭嫦騑GS1984的轉換7參數(shù)來定義(貌似叫布爾薩7模型,還有一個莫諾進什么模型的吧,不過數(shù)學原理其實是一樣的),轉換通過相似變換方法實現(xiàn),具體算法可參考科學出版社1999年出版的《城市地理信息系統(tǒng)標準化指南》第76至86頁,。假設Xg、Yg、Zg表示W(wǎng)GS84地心坐標系的三坐標軸,Xt、Yt、Zt表示當?shù)刈鴺讼档娜鴺溯S,那么自定義基準面的7參數(shù)分別為:三個平移參數(shù)ΔX、ΔY、ΔZ表示兩坐標原點的平移值;三個旋轉參數(shù)εx、εy、εz表示當?shù)刈鴺讼敌D至與地心坐標系平行時,分別繞Xt、Yt、Zt的旋轉角;最后是比例校正因子,用于調整橢球大小。
那么現(xiàn)在讓我們把地球橢球體和基準面結合起來看,在此我們把地球比做是“馬鈴薯”,表面凸凹不平,而地球橢球體就好比一個“鴨蛋”,那么按照我們前面的定義,基準面就定義了怎樣拿這個“鴨蛋”去逼近“馬鈴薯”某一個區(qū)域的表面,X、Y、Z軸進行一定的偏移,并各自旋轉一定的角度,大小不適當?shù)臅r候就縮放一下“鴨蛋”,那么通過如上的處理必定可以達到很好的逼近地球某一區(qū)域的表面。
(我覺得這個形象的比喻比較不錯,)
因此,從這一點上也可以很好的理解,每個國家或地區(qū)均有各自的基準面,我們通常稱謂的北京54坐標系、西安80坐標系實際上指的是我國的兩個大地基準面。我國參照前蘇聯(lián)從1953年起采用克拉索夫斯基(Krassovsky)橢球體建立了我國的北京54坐標系,1978年采用國際大地測量協(xié)會推薦的1975地球橢球體(IAG75)建立了我國新的大地坐標系–西安80坐標系,目前大地測量基本上仍以北京54坐標系作為參照,北京54與西安80坐標之間的轉換可查閱國家測繪局公布的對照表。 WGS1984基準面采用WGS84橢球體,它是一地心坐標系,即以地心作為橢球體中心,目前GPS測量數(shù)據(jù)多以WGS1984為基準。克拉索夫斯基(Krassovsky)、1975地球橢球體(IAG75)、WGS1984橢球體的參數(shù)可以參考常見的地球橢球體數(shù)據(jù)表。橢球體與基準面之間的關系是一對多的關系,也就是基準面是在橢球體基礎上建立的,但橢球體不能代表基準面,同樣的橢球體能定義不同的基準面。地球橢球體和基準面之間的關系以及基準面是如何結合地球橢球體從而實現(xiàn)來逼近地球表面的
WGS84的基準面是公布的!還有美國測繪局已經(jīng)公布了很多國家地方的基準面的參數(shù),包括中國的香港和臺灣的,在一些GIS軟件如ARCGIS MAPINFO中你可以找到很多的投影文件但很難找到北京54和西安80的,都必須由人工根據(jù)實地情況自己生成投影文件!
投影坐標系統(tǒng)(Projected Coordinate Systems )
地球橢球體表面也是個曲面,而我們日常生活中的地圖及量測空間通常是二維平面,因此在地圖制圖和線性量測時首先要考慮把曲面轉化成平面。由于球面上任何一點的位置是用地理坐標(λ,φ)表示的,而平面上的點的位置是用直角坐標(χ,у)或極坐標(r,)表示的,所以要想將地球表面上的點轉移到平面上,必須采用一定的方法來確定地理坐標與平面直角坐標或極坐標之間的關系。這種在球面和平面之間建立點與點之間函數(shù)關系的數(shù)學方法,就是地圖投影方法。
小結:我們國家的北京54坐標也叫國家坐標系,采用的是克拉索夫斯橢球,橢球參數(shù)確定,但基準面的六個參數(shù)沒有公布,所以一般是通過實測WGS84和已有的北京54的坐標通過反算求得一個轉換參數(shù)。各個城市又有自己的獨立坐標系,將北京54坐標通過平面轉換轉成獨立坐標系。不過我好像聽說其實是有的城市的獨立坐標系是有自己的基準面參數(shù)的,不過和國家基準面都相差不了多少,一般都是采用的直接平面轉換的啦!除獨立坐標系外,還有根據(jù)這些獨立坐標再進行轉換變?yōu)樽约旱莫毩⒆鴺讼档?#xff0c;一般用在小型工程上面吧。不曉得我理解的是否正確!還有待看書!
下面來介紹下地圖投影
用GPS收到的坐標都是經(jīng)緯度的,數(shù)字大小頂多就是0~360度,這樣直接展現(xiàn)在手機或者GIS軟件中的平面上時就會發(fā)現(xiàn)變形很大,且坐標都很小,這個時候必須將經(jīng)緯度轉換成平面坐標,這就需要進行投影!
投影類型太多,我這里就以我們國家的高斯投影進行說明
高斯投影
轉自http://hi.baidu.com/221144/blog/item/04716f1ed1a226fc1ad57610.html
(1)高斯-克呂格投影性質
高斯-克呂格(Gauss-Kruger)投影簡稱“高斯投影”,又名"等角橫切橢圓柱投影”,地球橢球面和平面間正形投影的一種。德國數(shù)學家、物理學家、天文學家高斯(Carl FriedrichGauss,1777一 1855)于十九世紀二十年代擬定,后經(jīng)德國大地測量學家克呂格(Johannes Kruger,1857~1928)于 1912年對投影公式加以補充,故名。該投影按照投影帶中央子午線投影為直線且長度不變和赤道投影為直線的條件,確定函數(shù)的形式,從而得到高斯一克呂格投影公式。投影后,除中央子午線和赤道為直線外,其他子午線均為對稱于中央子午線的曲線。設想用一個橢圓柱橫切于橢球面上投影帶的中央子午線,按上述投影條件,將中央子午線兩側一定經(jīng)差范圍內的橢球面正形投影于橢圓柱面。將橢圓柱面沿過南北極的母線剪開展平,即為高斯投影平面。取中央子午線與赤道交點的投影為原點,中央子午線的投影為縱坐標x軸,赤道的投影為橫坐標y軸,構成高斯克呂格平面直角坐標系。
高斯-克呂格投影在長度和面積上變形很小,中央經(jīng)線無變形,自中央經(jīng)線向投影帶邊緣,變形逐漸增加,變形最大之處在投影帶內赤道的兩端。由于其投影精度高,變形小,而且計算簡便(各投影帶坐標一致,只要算出一個帶的數(shù)據(jù),其他各帶都能應用),因此在大比例尺地形圖中應用,可以滿足軍事上各種需要,能在圖上進行精確的量測計算。
(2)高斯-克呂格投影分帶
按一定經(jīng)差將地球橢球面劃分成若干投影帶,這是高斯投影中限制長度變形的最有效方法。分帶時既要控制長度變形使其不大于測圖誤差,又要使帶數(shù)不致過多以減少換帶計算工作,據(jù)此原則將地球橢球面沿子午線劃分成經(jīng)差相等的瓜瓣形地帶,以便分帶投影。通常按經(jīng)差6度或3度分為六度帶或三度帶。六度帶自0度子午線起每隔經(jīng)差6度自西向東分帶,帶號依次編為第 1、2…60帶。三度帶是在六度帶的基礎上分成的,它的中央子午線與六度帶的中央子午線和分帶子午線重合,即自 1.5度子午線起每隔經(jīng)差3度自西向東分帶,帶號依次編為三度帶第 1、2…120帶。我國的經(jīng)度范圍西起 73°東至135°,可分成六度帶十一個,各帶中央經(jīng)線依次為75°、81°、87°、……、117°、123°、129°、135°,或三度帶二十二個。六度帶可用于中小比例尺(如 1:250000)測圖,三度帶可用于大比例尺(如 1:10000)測圖,城建坐標多采用三度帶的高斯投影。
(3)高斯-克呂格投影坐標
高斯-克呂格投影是按分帶方法各自進行投影,故各帶坐標成獨立系統(tǒng)。以中央經(jīng)線投影為縱軸(x), 赤道投影為橫軸(y),兩軸交點即為各帶的坐標原點。縱坐標以赤道為零起算,赤道以北為正,以南為負。我國位于北半球,縱坐標均為正值。橫坐標如以中央經(jīng)線為零起算,中央經(jīng)線以東為正,以西為負,橫坐標出現(xiàn)負值,使用不便,故規(guī)定將坐標縱軸西移500公里當作起始軸,凡是帶內的橫坐標值均加 500公里。由于高斯-克呂格投影每一個投影帶的坐標都是對本帶坐標原點的相對值,所以各帶的坐標完全相同,為了區(qū)別某一坐標系統(tǒng)屬于哪一帶,在橫軸坐標前加上帶號,如(4231898m,21655933m),其中21即為帶號。
(4)高斯-克呂格投影與UTM投影
某些國外的軟件如ARC/INFO或國外儀器的配套軟件如多波束的數(shù)據(jù)處理軟件等,往往不支持高斯-克呂格投影,但支持UTM投影,因此常有把UTM投影坐標當作高斯-克呂格投影坐標提交的現(xiàn)象。
UTM投影全稱為“通用橫軸墨卡托投影”,是等角橫軸割圓柱投影(高斯-克呂格為等角橫軸切圓柱投影),圓柱割地球于南緯80度、北緯84度兩條等高圈,該投影將地球劃分為60個投影帶,每帶經(jīng)差為6度,已被許多國家作為地形圖的數(shù)學基礎。UTM投影與高斯投影的主要區(qū)別在南北格網(wǎng)線的比例系數(shù)上,高斯-克呂格投影的中央經(jīng)線投影后保持長度不變,即比例系數(shù)為1,而UTM投影的比例系數(shù)為0.9996。UTM投影沿每一條南北格網(wǎng)線比例系數(shù)為常數(shù),在東西方向則為變數(shù),中心格網(wǎng)線的比例系數(shù)為0.9996,在南北縱行最寬部分的邊緣上距離中心點大約 363公里,比例系數(shù)為 1.00158。
高斯-克呂格投影與UTM投影可近似采用 Xutm=0.9996 * X高斯,Yutm=0.9996 * Y高斯進行坐標轉換。以下舉例說明(基準面為WGS84):
輸入坐標(度) 高斯投影(米) UTM投影(米) Xutm=0.9996 * X高斯, Yutm=0.9996 * Y高斯
緯度值(X) 32 3543600.9 3542183.5 3543600.9*0.9996 ≈ 3542183.5
經(jīng)度值(Y) 121 21310996.8 311072.4 (310996.8-500000)*0.9996+500000 ≈ 311072.4
注:坐標點(32,121)位于高斯投影的21帶,高斯投影Y值21310996.8中前兩位“21”為帶號;坐標點(32,121)位于UTM投影的51帶,上表中UTM投影的Y值沒加帶號。因坐標縱軸西移了500000米,轉換時必須將Y值減去500000乘上比例因子后再加500000。
理解:高斯投影的方法就是保持赤道和中央經(jīng)線不變形,把球面攤平。方法:用一個橢圓柱套住橢球,把它投影到橢圓柱上,然后打開橢圓柱即可。
在編程的話,我推薦各位兩個很不錯的投影庫 C/C++系列為Proj.4
C#系列有Proj.Net
關于坐標轉換!
北京54變換到西安80的步驟
總結
以上是生活随笔為你收集整理的GPS坐标转换(一)-基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: indexedDB介绍
- 下一篇: vue实现点击复制