關于坐標系和投影的相關知識探討
回想一下,接觸遙感專業也有幾個年頭了,而現在越來越偏離遙感了,突然想著把自己腦中的遙感知識整理出來。首先想到的便是坐標系和投影,我想這個東西困擾著80%以上的測繪、遙感和GIS領域的從業人員吧,群里經常有人問,我自己曾經也很迷糊,什么大地坐標系啊、地心坐標系啊、高斯投影啊、UTM投影啊,搞得頭都大了,可是這玩意又不能不玩,畢竟空間信息是遙感數據的靈魂,如果定位不準影像就只能當風景畫看了。好吧,那就啃吧,基礎的東西還是要的,經過一番探索,再加上去年專門做過坐標轉換一些工作,算是清晰明了些了,在此就把我的一些見解分享給大家,歡迎各位菜鳥和專家前來吐槽。好了,咱們言歸正傳,開始坐標系探險記。
1、什么是坐標系?
或許很多人心中明白這個概念,卻又不甚明白。什么是坐標系?人們描述空間中的一個點或者一個位置,通常會采用坐標這個概念。可是這個坐標該怎么計算呢?它的參考是誰呢?如果中國定義中南海坐標是(1921, 1949, 2012),美國佬也定義他們白宮的坐標是(1921, 1949, 2012),哪天黑馬說咱們打它中南海一炮吧,那就可能把他自己烤熟。所以必須要建立一個合理的坐標系(⊙﹏⊙b汗~~,這個理由好牽強啊)。
坐標系由原點和坐標軸組成。坐標系種類很多,我們大家在數學中想必都學過笛卡爾坐標系、極坐標系、球面坐標系和柱面坐標系吧,在地學領域,用到最多的是平面坐標系、空間直角坐標系(前兩者屬于笛卡爾坐標系)和球面坐標系。比如說一個點坐標是(-2850017.472, 4690744.523, 3237959.973)就是指空間直角坐標,而我們經常看到的Google Earth上的點的坐標(37°20′17″N, 112°33′20″E)就是指球面坐標。
測量學上,坐標系怎樣定義的呢?地球是一個不規則的類橢球,怎樣用嚴格的數學方式表示它,應該是測繪學家們所追求的高峰。為了表示地球上每一個點的位置,是不是要建立一個統一的世界坐標系呢?建立坐標系是不是要確定坐標原點和坐標軸呢?那怎樣建立呢?測量學家們把地球當作一個規則的橢球來處理,這下就好辦多了,橢球中心就原點唄,長軸短軸就作為坐標軸,這樣一個坐標系就出來了啊。可是有人會問,那這個橢球怎么表示呢?嘛嘛的,我也想問,原來這是科學家們利用天文觀測得到的,而且不同的科學家得到的橢球還不一樣,比如,一個叫Krasovsky的人搞了個克拉索夫斯基橢球,還有人搞了什么IUGG-1975、WGS-84、GRS80橢球,他們主要特點是長半軸和扁率不同。可是又有人會問(Y的,問題好多啊),搞這么多橢球干嘛,有一個不就行啦。呵呵,我們知道,地球坑坑洼洼的,用嚴密的橢球來表示肯定有誤差,有的國家為了使自己的國家與橢球面吻合(最好大家都站在橢球面上),這樣根據各自的情況就定義了不同的參考橢球,比如北京54坐標系就采用了蘇聯老大哥的克拉索夫斯基橢球。可是問題又來了,怎樣才算吻合得好呢?肯定會有人站在橢球面上,有人站在橢球面下,真頭疼。此時,測量學家們引入了大地基準面來衡量橢球與大地的吻合度。大地基準面是由大地水準面而來,是指平均海平面延伸到大陸得到的一個封閉曲面。比如,在建立北京54坐標系時,專家們肯定會選擇與中國的大地水準面吻合比較好的橢球。此時的橢球稱為參考橢球,建立的坐標系稱為參心坐標系,我國的北京54和西安80坐標系都是參心坐標系,是一種局部范圍的坐標系。然而這種坐標系對于全球定位來說極其不便,誤差很大,所以山姆大叔率先針對GPS系統設計了全球大地坐標系WGS-84坐標系統,這時的大地原點不再是參考橢球的中心,而是地球的質心。WGS84橢球體的相關參數和WGS84坐標系的坐標軸指向請參考相關專業書籍。我國現有的國家2000坐標系也是一種全球大地坐標系,其與WGS-84坐標系稍微有點差異。
下面是幾種常見坐標系的橢球參數:
其中北京54坐標系和西安80坐標系是參心坐標系,而WGS-84坐標系與國家2000坐標系是地心坐標系,坐標原點是地球質心。
好啦,這樣大家明白了坐標系的定義了吧,首先,需要定義參考橢球體,有了參考橢球還需要大地基準面(全球大地坐標系就不要了),然后需要定義坐標系原點和坐標軸的指向。這樣一個坐標系就建立了,以后找妹子就方便多了,全球定位吧,哈哈!
2、為什么要投影?
大家會想,有了坐標就行了,為什么還要搞個讓人迷糊的投影?呵呵,前面我們講到的是以橢球體為參考來進行空間定位,一點都不直觀,如果哪天你和妹紙約會,妹紙說她在(-2850017.472, 4690744.523, 3237959.973)或者(112°E, 38°N),尼瑪坑爹,這到底在哪個國家,離哥哥我有多遠啊,不知道啊,不至于拿個尺子去測吧。這時候,泡妞高手們想出了一個辦法,把球面投影到一個平面,用一個平面坐標(x, y)來表示地面點的位置,兩點之間求距離是不是很容易啊?這時候你會發現那個妹子不就是隔壁那妞嘛,200米不到(囧!哈哈)。當然,投影最大的目的不是方便把妹紙,而是地圖。所以投影就是把球面坐標轉化為平面坐標,也就是3D到2D的轉換。
投影有很多種,按性質分,比如等角投影,等積投影,等距投影,任意投影等。大家都知道,球面展開成平面,肯定是一個不嚴密(也可說不完美)的過程,會有不同程度的變形。如何選擇呢?比如在航海上,就需要等角投影,如果方向錯了就會差很多,我猜如果哥倫布那時知道這些就不會跑到美洲還以為到了印度吧。如果需要丈量面積,那就要選擇等積投影了。
3、測量坐標有哪幾種表示方式?
常見的測量坐標包括大地坐標(B、L、H)、空間直角坐標(X、Y、Z)、平面坐標(x、y、H)。具體參考相關教程。
4、坐標轉換
終于講到重點了,各種坐標怎樣轉換是大家最關心的。首先有一點要牢記:
同一參考橢球下,大地坐標與空間直角坐標之間的轉換是嚴密的(數學關系對應),它們與平面坐標的轉換是不嚴密的,需要做投影轉換(想想也明白,把球面展成平面那可是難住了好多科學家呀)。而不同參考橢球之間的坐標轉換永遠都是非嚴密的。
坐標轉換原理:
- 同一橢球下的轉換
同一橢球下,大地坐標(B、L、H)與空間直角坐標(X、Y、Z)之間的轉換是嚴密的,其公式為:
而大地坐標(B、L、H)與空間直角坐標(X、Y、Z)向平面直角坐標的轉換屬于非嚴密的,需要進行球面到平面的投影選擇,通常將空間直角坐標轉換為大地坐標,然后在大地坐標和平面直角坐標之間采用高斯正算和反算公式進行計算。
- 不同橢球下的轉換
不同參考橢球下的坐標轉換實質是基準的轉換。如空間定位技術所采用的全球基準與地面網所采用的局部基準間的轉換。通常的轉換模型有布爾莎-沃爾夫模型和莫洛金斯基模型。這兩種模型都常用且非常相似,布爾莎模型在進行全球或者較大范圍內較為常用,但是莫洛金斯基模型可以克服布爾莎模型中旋轉參數與平移參數相關性高的問題。
兩個坐標系的轉換通常有三維七參數模型和二維四參數模型。
布爾莎模型又稱為七參數轉換,或者七參數赫爾默特變換。該模型共采用7個參數,分別為三個平移參數(ΔX、ΔY、ΔZ)和三個旋轉參數(ωx、 ωy、ωz)和一個尺度參數k。
上式是一個WGS84下的空間直角坐標轉換到CGCS2000下的空間直角坐標的布爾莎模型,有七個未知參數,簡單的求解,只需要3個公共點就可以了,如果要得到嚴密解,就需要更多的公共點進行最小二乘平差解算。而對于大地坐標,可以轉成空間直角坐標再解算,也可以直接利用布爾莎模型。
5、遙感制圖的投影和坐標系選擇
關于遙感影像的坐標系和投影,大家經常會聽到所謂的地理坐標系(Geographic coordinate system)和投影坐標系(Projection coordinate system)的概念。打開Arcgis的坐標系文件夾也會發現這兩個子文件夾。地理坐標系是以經緯度表示的,是一種球面坐標系,而投影坐標系是米或者千米等為單位的,是一種以xy表示的平面坐標系。下面是Arcgis中兩種坐標系的定義:
(a) 地理坐標系
(b)投影坐標系
上圖中的左圖a是WGS-84下的地理坐標系,我們可以看出它定義了一個WGS-84橢球體,然后是WGS84下的基準面。有了Spheroid和Datum就可以使用地理坐標系了。右圖b是西安80坐標系下的投影坐標系,投影方式是高斯-克呂格投影。可以看出,它除了Gauss-Kruger投影參數外,還定義了Xian-1980地理坐標系。
有人會問,為什么投影坐標系要帶一個地理坐標系呢?我們知道投影本質就是把球面投影到平面,那么投影就必須定義是用哪個球面坐標系來投影。比如UTM投影坐標系,我們熟知的是WGS84坐標系來投影,其實我們也可以用國家2000坐標系來投影,就我所知,在月球探索過程中,人們也用到了UTM投影,而這時用來投影的坐標系就是月球坐標系了。
我國常用地圖投影的選擇:
在我國,大中比例尺(≥1:50萬)的地圖一般選擇高斯-克呂格投影,高斯-克呂格投影有3°和6°分帶兩種,1:2.5萬-1:50萬比例尺地形圖采用經差6度分帶,1:1萬比例尺的地形圖采用經差3度分帶。小比例尺的地圖(比如全中國地圖)應采用等角正軸割圓錐投影,也就是蘭勃特投影(Lambert Conformal Conic),但是小比例尺海圖多選擇等角正軸圓柱投影,也就是墨卡托投影。另外我們平時下載的遙感影像大都是WGS-84下的地理坐標系或者UTM投影坐標系。
下面就一個例子具體說下地理坐標系到投影坐標系的轉換(投影的選擇):
比如:北京的中心經緯度大致在(117°E, 40°N),那么其在北京54投影坐標系下6°分帶就應該選擇Beijing 1954 GK Zone 20.prj或者Beijing 1954 GK Zone 20N.prj(后者會在橫坐標前加上帶號),中央經線=帶號(比如20)*6-3。而在西安80投影坐標系下6°分帶應該選擇Xian 1980 GK Zone 20.prj。北京地區的遙感影像的UTM投影一般會選擇WGS 1984 UTM Zone 50N,因為Zone為20*6-3的中央經線為117,左114,右120,正好覆蓋北京,而東半球要加30(全球360/6共60個Zone)所以是50N,N表示北半球。此外,需要說明的是,跨帶投影會造成較大的變形。很多人下載全球的植被圖、夜間燈光圖等,想要裁剪出自己需要的區域,原始數據往往是WGS84下的地理坐標系,而矢量數據多是UTM或者TM等投影坐標系,這時需要將矢量數據轉換到地理坐標系再去裁剪,如果反過來將全球圖去投影,會發現變形得很難看。
6、推薦一些好用的坐標轉換工具
(1) 坐標轉換工具:用過很多坐標轉換工具,也自己寫過,現在給大家推薦一款:GPS工具箱,發現它很容易用,精度也不錯,這是下載地址。可能大家平時會用的比較多的是Coord這個軟件,但是我發現它結果老是不對,下面是幾個軟件的比較,第一個是GPS工具箱,第二個是我自己寫的一個小軟件,第三個是Coord,結果明顯不對,不知道是不是我下載的Coord有問題。至于我自己寫的這個工具,待有時間完善后我也會分享給大家用。
(2) 開源坐標和投影轉換庫:Proj4。它的功能主要有經緯度坐標與地理坐標的轉換,坐標系的轉換,包括基準變換等。這是官方網站:http://trac.osgeo.org/proj/,可以下載到源碼和文檔,源碼是C++所寫,需要編譯才能集成到你的程序使用。這是我編譯好的一個版本:下載地址。