聊聊GIS中那些座標系

轉載請聲明到標題。html

B站/博客園/CSDN/知乎:@秋意正寒node

很開心能躍居百度關鍵詞「GIS 座標系」第一位。程序員

已重寫本篇,但願讀者們移步:

[聊聊GIS中的座標系|再版]http://www.javashuo.com/article/p-fxqpxnbk-cd.html

從第一次上地圖學的課開始,對GIS最基本的地圖座標系統就很迷。也難怪,我那時候並非GIS專業的學生,僅僅是一門開卷考試的專業選修課,就沒怎麼在乎。web

等我真正接觸到了各類空間數據產品,我才知道萬里長征第一步就是:處理座標系統。網絡

想必各位從業人員多多少少都會據說過幾個名詞,可能有那麼點印象吧。好比,高斯克呂格,北京54,西安80,WGS84,投影座標系統等等。函數

今天就從頭提及,講講那些座標系統的事情。工具

慣例,給個目錄:加密

  1. 經緯度與GCS(Geographic Coordinate System, 地理座標系統)
  2. 平面座標與PCS(Projection Coordinate System, 投影座標系統)
  3. GCS和PCS的轉化問題(三參數與七參數問題)
  4. 火星座標問題
  1. 在第一部分,我介紹一下以經緯度爲準的地理座標系統,也順帶說起一下我國的高程座標系。主要涉及的內容有:大地水準面問題,橢球問題,常見的GCS(如北京54,西安80,CGCS2000,WGS84等),讓你們看到GIS數據中的GCS立刻就能知道這是什麼東西。
  2. 在第二部分,我介紹一下以平面直角座標系爲量度的投影座標系統。主要涉及的內容有:PCS與GCS的關係,我國常見的PCS(高斯克呂格、蘭伯特/Lambert、阿爾伯斯Albers、墨卡託Mercator、通用橫軸墨卡託UTM、網絡墨卡託Web Mercator)。
  3. 在第三部分,是實際操做過程當中遇到的種種問題,如投影不對會出現什麼狀況、如何轉換GCS、如何切換PCS(重投影問題)等問題,涉及一些數學轉換的思惟,須要有必定的空間想象能力。
  4. 在第四部分,我簡單介紹一下所謂的火星座標。

那麼咱們開始吧!spa

1. 經緯度與GCS

天氣預報也好,火箭發射也罷,地震、火山等事故發生時,電視臺總會說東經XX度,北緯YY度。這個經緯度中學地理就學過了,我就不細說了。.net

我從如何描述地球提及。

1.1 凹凸不平的地球

誰都知道地球表面不平坦,它甚至大概形狀都不是一個正球體,是一個南北兩極稍扁赤道略胖的胖子,胖度大概是20km,在外太空幾乎看不出來的,這也可能和星球長期受到潮汐引力、太陽引力以及自身旋轉的向心力有關。這裏不是地球科學,就再也不深究了。

爲了能讓地球出如今數學家的公式裏,咱們曾經走過了2個階段:用平靜的海面描述地球——用虛擬的旋轉橢球面描述地球表面。

這裏也不是地圖學,再深刻下去其實還有似大地水準面等概念。就挑重點講。

「假設地球表面都是水,當海平面風平浪靜沒有波瀾起伏時,這個面就是大地水準面。」你們應該知道,在太空失重的環境下,水相對靜止狀態是個正球體,那麼確定不少人就認爲,大地水準面就是個正球面。不是的,還須要考慮一個問題:地球各處的引力不一樣。引力不一樣,就會那兒高一些,這兒低一些,儘管這些微小的差距肉眼難以觀測出來,可能隔了好幾公里纔會相差幾釐米。因此,在局部可能看起來是個球面,可是總體卻不是。顯然,用大地水準面來進行數學計算,顯然是不合適的,至少在數學家眼中,認爲這不可靠。

因此找到一個旋轉橢球面就成了地理學家和數學家的問題。(注意區分橢球面和旋轉橢球面這兩個數學概念,在GCS中都是旋轉橢球面)

給出旋轉橢球面的標準方程:

(x2+y2)/a2+z2/b2=1

其中x和y的參數相同,均爲a,這就表明一個繞z軸旋轉的橢圓造成的橢球體。不妨設z軸是地球自轉軸,那麼這個方程就以下圖是一個橢球體,其中赤道是個圓。

這樣,有了標準的數學表達式,把數據代入公式計算也就不是什麼難事了。

由此咱們能夠下定義,GIS座標系中的橢球,若是加上高程系,在其內涵上就是GCS(地理座標系統)。其度量單位就是度分秒。

描述一個旋轉橢球面所需的參數是方程中的a和b,a即赤道半徑,b即極半徑,f=(a-b)/a稱爲扁率。

與之對應的還有一個問題:就是座標中心的問題。(地球的中心在哪裏?)

【注】十九世紀發現赤道也是一個橢圓,故地球實際應以普通橢球面表示,可是因爲各類緣由以及能夠忽略的精度內,一直沿用旋轉橢球體做爲GCS。

1.2 參心座標系、地心座標系

上過中學物理的人知道,物體均有其質心,到處密度相等的物體的質心在其幾何中心。因此,地球只有一個質心,只是測不測的精確的問題而已。由地球的惟一性和客觀存在,以地球質心爲旋轉橢球面的中心的座標系,叫地心座標系,且惟一。固然,因爲a、b兩個值的不一樣,就有多種表達方式,例如,CGCS2000系,WGS84系等,這些後面再談。

【注】地心座標系又名協議地球座標系,與GPS中的瞬時地球座標系要對應起來。

可是又有一個問題——政治問題,地圖是給一個國家服務的,那麼這地圖就要儘量描述準確這個國家的地形地貌,儘可能減少偏差,至於別國就無所謂。

因此,就能夠人爲的把地球的質心「移走」,將局部的表面「貼到」該國的國土,使之高程偏差儘可能減少到最小。

這個時候,就出現了所謂的「參心座標系」。即橢球中心不在地球質心的座標系。以下圖:

綠色的球就是爲了貼合赤道某個地方而產生了平移的參心繫(這裏只是個例子,並且畫的有點誇張)。

我國經常使用的參心繫及對應橢球:

  • 北京54座標系:克拉索夫斯基橢球體
  • 西安80座標系:IAG75橢球體

我國經常使用的地心繫及對應橢球:

  • WGS84座標系:WGS84橢球體(GPS星曆的座標系,全球統一使用,最新版於2002年修正)
  • CGCS2000座標系:CGCS2000橢球體(事實上,CGCS2000橢球和WGS84橢球極爲類似,誤差僅有0.11mm,徹底能夠兼容使用)

爲何CGCS2000和WGS84要略微有些誤差?這是由於WGS84系是GPS的座標系,而我國北斗定位則是須要本身的座標系,就搞了一波CGCS2000。

這幾個座標系的介紹放在下一節,而這些橢球體的轉換將在第三部分介紹(主要就是數學中,空間直角座標系旋轉的問題)。

1.3 我國常見GCS

藉助如下4個常見座標系及橢球體,就能夠推及到世界各地不一樣的GCS及橢球體,完成數據的轉化問題。

1.3.1 北京54座標系(參心)

新中國成立之後,我國大地測量進入了全面發展時期,再全國範圍內開展了正規的,全面的大地測量和測圖工做,迫切須要創建一個參心大地座標系。因爲當時的「一邊倒」政治趨向,故我國採用了前蘇聯的克拉索夫斯基橢球參數,並與前蘇聯1942年座標系進行聯測,經過計算創建了我國大地座標系,定名爲1954年北京座標系。所以,1954年北京座標系能夠認爲是前蘇聯1942年座標系的延伸。它的原點不在北京而是在前蘇聯的普爾科沃。

  • 橢球體:Krasovsky橢球
  • 極半徑b=6 356 863.0187730473 m
  • 赤道半徑a=6 378 245m
  • 扁率=1/298.3
  • 高程系:56黃海系

1.3.2 西安80座標系(參心)

改革開放啦,國家商量要搞一個更符合國用的座標系——西安80座標系,該座標系的大地原點設在我國中部的陝西省涇陽縣永樂鎮,位於西安市西北方向約60千米。

  • 橢球體:IAG橢球(全名是啥還得去翻翻課本。。。)
  • 極半徑b=6 356 755m
  • 赤道半徑a=6 378 140m
  • 扁率=1/298.25722101
  • 高程系:85黃海系

1.3.3 WGS84座標系(地心)

全稱World Geodetic System - 1984,是爲了解決GPS定位而產生的全球統一的一個座標系。

  • 橢球體:WGS84橢球
  • 極半徑b=6 356 752.314 245 179 5m
  • 赤道半徑a=6 378 137 m
  • 扁率=1/298.257223563
  • 高程系:?根據國家需求定?

1.3.4 CGCS2000座標系(地心)

2000國家大地座標系是全球地心座標系在我國的具體體現,其全稱爲China Geodetic Coordinate System 2000,其原點爲包括海洋和大氣的整個地球的質量中心。

  • 橢球體:CGCS2000座標系
  • 極半徑b=6 356 752.314 140 355 8m
  • 赤道半徑a=6 378 137m
  • 扁率=1/298.257222101
  • 高程系:85黃海系

【注】CGCS2000的定義與WGS84實質同樣。採用的參考橢球很是接近。扁率差別引發橢球面上的緯度和高度變化最大達0.1mm。當前測量精度範圍內,能夠忽略這點差別。能夠說二者相容至cm級水平

最後一張表總結一下:

有趣的是,在ArcGIS的GCS文件夾下,找到了一個「新北京54座標系」,這是爲了使54和80之間方便轉化而產生的一個過渡座標系。

2. 平面座標與PCS

說完了以經緯度爲計量單位的GCS,那麼我再來講說以平面(空間)直角座標系爲度量衡的投影座標系(PCS,Projection Coordinate System)。

說一個具體的問題以解釋爲何要用PCS。

如何用經緯度表達一塊地的面積?

這沒辦法吧?經緯度自己不帶單位,度分秒僅僅是一個進制。

並且一樣是1度經度,在不一樣的緯度時表明的弧段長是不同的。

這就給一些地理問題帶來了困惑:如何創建一個新的座標系使得地圖分析、空間分析得以定量計算?

PCS——投影座標系就誕生了。

我要着重介紹一下我國的6種經常使用投影方式:

  • 高斯克呂格(Gauss Kruger)投影=橫軸墨卡託(Transverse Mercator)投影
  • 墨卡託(Mercator)投影
  • 通用橫軸墨卡託(UTM)投影
  • Lambert投影
  • Albers投影
  • Web Mercator(網絡墨卡託)投影

不少課本、博客都寫的很詳細了,我想從3D的圖形來描述一下他們是怎麼個投影的。

2.1 從投影提及

如上圖。光線打到物體上,使得物體產生的陰影形狀,就叫它的投影。這個不難理解。

這裏我想問一個問題:既然投影物體,是不變的,那麼我把投影的平面改成曲面呢?

這就產生了不一樣的投影,好比投射到一個圓錐面上,一個圓柱面上,一個平面上...等等。

不一樣的投影方式有不一樣的用途,也有了不一樣的投影名稱。

可是,PCS是基於存在的GCS的,這個直接規定。沒有GCS,就無從談PCS,PCS是GCS上的地物投射到具體投影面的一種結果。

即:

PCS=GCS+投影方式

2.2 我國常見投影

2.2.1 高斯克呂格投影/橫軸墨卡託投影

英文名Gauss Kruger。在一些奇奇怪怪的緣由中,又名橫軸墨卡託投影,英文名Transverse Mercator

它的投影面是橢圓柱面,假設橢圓柱躺着,和地軸垂直,並且投影面與之相切,就是橫軸墨卡託了。

中央那條黑線就是投影中心線,與橢圓柱面相切。這條線逢360°的因數就能夠取,通常多用3度帶、6度帶。

就是說,這個投影橢圓柱面能夠繼續繞着地軸繼續轉,圖中還有一條經線,兩條相差6度。

橢圓柱面旋轉6度,繼續投影,直到360/6=60個投影帶投影完畢。

注意3度帶和6度帶的起算經線不一樣,以及Y方向(赤道方向)前須要加投影帶號。

高斯克呂格已經廣爲熟知了,我就不做具體介紹,你們能夠找比我解釋的更好的,我只是擺個圖但願你們看的更仔細。

這個投影的特色是,等角/橫/切橢圓柱/投影

  • 投影后的地圖,角度不變,面積有變。離中央經線越遠的地區,面積變化越大。此投影合適用於導航。
  • 投影橢圓柱面是橫着的;
  • 投影橢圓柱面與橢球體相切。

適用比例尺:1:2.5萬~1:100萬等使用6度分帶法;1:5000~1:10000使用3度分帶法。

【注】在ArcGIS中,不一樣的GCS的PCS是不一樣的,以CGCS2000、西安80和北京54爲例:

CGCS2000_3_Degree_GK_CM_111E:CGCS2000的GCS下,使用高斯克呂格3度分帶法,以中央經線爲東經111度的投影帶的投影座標系

CGCS2000_3_Degree_GK_Zone_30:CGCS2000的GCS下,使用高斯克呂格3度分帶法,第30個投影帶的投影座標系

Beijing_1954_3_Degree_GK_CM_111E:北京54的GCS下,使用高斯克呂格3度分帶法,以中央經線爲東經111度的投影帶的投影座標系

Beijing_1954_3_Degree_GK_Zone_35:北京54的GCS下,使用高斯克呂格3度分帶法,第35個投影帶的投影座標系

Xian_1980_3_Degree_GK_CM_111E:西安80的GCS下,使用高斯克呂格3度分帶法,以中央經線爲東經111度的投影帶的投影座標系

Xian_1980_3_Degree_GK_Zone_34:西安80的GCS下,使用高斯克呂格3度分帶法,第34個投影帶的投影座標系

不難發現,都是以GCS起頭的命名法。

2.2.2 墨卡託投影

英文名Mercator投影。

數學上,投影面是一個橢圓柱面,而且與地軸(地球自轉軸)方向一致,故名:「正軸等角切/割圓柱投影」。

既能夠切圓柱,也能夠割圓柱。

其實就是高斯克呂格的圓柱面豎起來

2.2.3 通用橫軸墨卡託投影(UTM投影)

英文全稱Universal Transverse Mercator。是一種「橫軸等角割圓柱投影

和高斯克呂格相似,高斯克呂格的投影面是與橢球面相切的,這貨與橢球面相割。

實質上

  • UTM投影=0.9996高斯投影

其他性質都和高斯克呂格投影同樣。

割於緯度80°S和84°N。中央經線投影后,是原長度的0.9996倍。

不過,起算投影帶是180°經線,174°W則是第二個投影帶的起算經線。

因爲有以上優勢,UTM投影被許多國家和地區採用,做爲大地測量和地形測量的投影基礎。

【注】UTM投影是我國各類遙感影像的經常使用投影。

【注2】UTM投影在ArcGIS中的定義

例如:

WGS_1984_UTM_Zone_50N,就表明WGS1984的GCS下,進行UTM投影,投影帶是50N.

WGS_1984_Complex_UTM_Zone_25N,就表明WGS1984的GCS下,進行3度分帶UTM投影,投影帶是25N.

2.2.4 Lambert投影

中文名蘭伯特投影、蘭博特投影。

我國地形圖經常使用投影,好比1:400萬基礎數據:

(GCS是北京54)能夠看到受權是自定義,說明這個投影是自定義的,沒有被官方收錄。等到第三部分再說怎麼自定義投影。

我國的基本比例尺地形圖(1:5千,1:1萬,1:2.5萬,1:5萬,1:10萬,1:25萬,1:50萬,1:100萬)中,1:100萬地形圖、大部分省區圖以及大多數這一比例尺的地圖多采用Lambert投影。

蘭伯特投影是一種「等角圓錐投影」。

ArcGIS中的投影系通常帶有Lambert_Conformal_Conic等字樣,國際上用此投影編制1∶100萬地形圖和航空圖。

它就像是一個漏斗罩在乒乓球上:

更標準的畫法,見下圖,有切和割兩種。

它沒有角度變形。

這個漏斗的傾斜程度,就有三種:正軸、橫軸、斜軸。就是圓錐的方向和地軸的方向的問題。

2.2.5 Albers投影

中文名阿伯斯投影。又名「正軸等積割圓錐投影」,經常使用於我國各省市的投影。

和上一個蘭伯特圖形相似,就是一個圓錐與橢球面切割,進行等積投影。

給了官方WKID:102025.

與Lambert投影的區別大概就在一個等角,一個等積投影了。

2.2.6 Web墨卡託(WebMercator投影)

這是一個由Google提出的、爲了自家GoogleMap而專門定義的一種投影,是墨卡託投影的一種變種。

主要是將地球橢球面看成正球面來投影,這就會致使必定的偏差。

直接看看ArcGIS中的定義:

給了WKID:3857,名字是WGS_1984_Web_Mercator_Auxiliary_Sphere,意思就是在WGS84的GCS下進行web墨卡託投影。

如今,常常被百度地圖等網絡地圖採用,估計是Web程序員想省事吧。

3. GCS與PCS的轉換問題(ArcGIS實現)

3.1 GCS轉GCS

這就是屬於空間解析幾何裏的空間直角座標系的移動、轉換問題,還有個更高級的說法——仿射變換。

咱們知道,空間直角座標系發生旋轉移動縮放,在線性代數裏再常見不過了。在攝影測量學中,旋轉矩陣就是鏈接像空間輔助座標系與像空間座標系的轉換參數(好像不是這倆座標系,忘了)

欲將一個空間直角座標系仿射到另外一個座標系的轉換,須要進行平移、旋轉、縮放三步,能夠無序進行。

而平移、旋轉又有三個方向上的量,即平移向量=(dx,dy,dz)和旋轉角度(A,B,C),加上縮放比例s,完成一個不一樣的座標系轉換,就須要7參數

咱們知道,地心座標系是惟一的,即原點惟一,就說明平移向量是0向量,若是縮放比例是1,那麼旋轉角度(A,B,C)就是惟一的仿射參數,即3參數

上圖左圖爲座標系平移,右圖爲座標系旋轉。縮放能夠在任意階段進行。

——————以上爲理論預備——————

說了這麼多理論,如何進行GCS轉換呢?假設一個數據源已經有了GCS,咱們須要作的操做只有一個:

打開以下工具:數據管理工具/投影和變換/投影,設置界面以下(以WGS1984轉西安80爲例):

別選錯了,這裏輸入輸出都是GCS。而後出現如下警告:

這就告訴你,須要參數轉換。在這裏,WGS84轉西安80,是屬於7參數轉換(地心轉參心),可是缺乏7參數,就須要本身去測繪局買或者本身粗略算。

那麼如何定義一個地理座標變換呢?

使用投影的旁邊的工具:

便可。見下圖:

使用Position_Vector方法(即7參數法)便可輸入7參數。我就不輸入了,各位有數據的能夠繼續作。

關於3參數和7參數,在ArcGIS幫助文檔裏都寫有的,目錄以下:

3.2 GCS進行投影

這個就更簡單了。

隨便挑個GCS,喜歡什麼用什麼,如西安80投影到UTM投影,均可以的。

仍然是上節說起的「投影工具」:

這樣就能夠了,這裏是以WGS84的GCS投影到UTM的第50分度帶上。

若是是進行柵格數據的投影,就用「柵格」文件夾下的「投影柵格」工具。

若是所需投影系沒有本身須要的GCS,就自定義一個:

這個窗口在Catalog浮動窗或者Catalog軟件裏打開某個數據的屬性,找到XY座標系的選項卡,就能夠新建。

【注】若是在數據的屬性頁的XY座標系選項卡,或者圖層數據框的XY座標系選項卡中修改GCS,這僅僅是改個名,座標值仍是原來的座標系上的,這表明老座標值並無轉換到新座標系上。形象的說,就是換湯不換藥,這是不對的。我這裏說的用投影的方法,纔是真正的座標仿射變換到新的座標系,使之更改數值,造成在新的座標系下的新座標值。

3.3 PCS轉PCS(重投影)

最多見的就是下載了谷歌影像圖,是Web墨卡託的投影,可是實際又須要高斯投影,那麼基於WGS84這個GCS,就能夠進行重投影。

在這裏,我就以UTM投影轉Web墨卡託投影爲例:

此次是用「柵格」文件夾下的「投影柵格」工具:

通常選好紅框的三個參數便可。

若是仍然提示須要地理座標變換的警告,說明不是一個GCS的數據,須要3參數或者7參數轉換。

柵格數據相似,使用「投影工具」。

工具定位。

3.4 定義投影

這不是定義一個投影座標系,而是給有座標值的矢量或者柵格數據添加一個投影座標系而已。

使用「定義投影」工具便可,既能夠定義GCS,也能夠定義PCS(這軟件的中文翻譯有點毛病)。

3.5 地理配準與空間校訂

這個就很少說了,地理配準就是使屏幕座標系的掃描地圖仿射、二次三次變換到真正投影座標系的過程,自動加上目標數據的PCS。有了PCS後就會自動加上GCS。

地理配準主要是針對柵格數據。

空間校訂則是針對矢量數據進行仿射、二次、三次變換。

3.6 可能出現的錯誤

3.6.1 顯示幾十萬位數字的「經緯度」

如上圖。

這是有了PCS後,在Catalog的數據屬性頁的XY座標系選項卡里,選中GCS,而後應用的結果。

本來是方里網的數字,變成了GCS纔有的度分秒。

解決方法:Catalog屬性頁將GCS改回原來的PCS便可。

3.6.2 顯示三位數、兩位數的「米」

這個暫時沒找到案例,曾經見過。

3.6.3 顯示一個幾乎是0,一個又很大很大位數的數字

如上圖。

這個屬於數據自己有GCS,可是在Catalog的XY座標系選項卡里給它添加PCS而後應用後,可能會出現的錯誤。

解決方法:在Catalog屬性頁的XY座標系選項卡里,選中原來的GCS而後應用便可。

若是數據自己沒有PCS,應該作的是投影操做。

3.6.4 大範圍的數據給了小範圍的投影

例如,整個中國地圖理應跨越好幾個投影帶,卻給了某一個投影帶的投影座標系,這就會出現負值。以下圖,紅框箭頭是鼠標的位置。

這個按理說應該用蘭伯特投影,可是卻給了一個UTM第49區的PCS,因此在中央經線靠左不少的位置會出現負值。

解決方法:這個直接作重投影便可。

 

以上四種錯誤比較常見,可是手頭沒有案例,之後遇到再發上來吧。

總結一下:

4. 火星座標

火星座標這個東西很常見,出如今互聯網地圖上。例如百度、騰訊、谷歌等地圖。

出於保密等政治因素,地圖的GCS座標值,會被一種特殊的數學函數加密一次,會偏離真實座標數百米的距離,可是反饋到用戶端的倒是正確的位置信息(也就是說你拿到GCS座標也沒用,拿GPS到實地跑跟拿着地圖定位,可能會偏出幾十米甚至一百米的距離)。

火星座標系原名國測局座標系(GCJ-02),有篇文章比我寫的透徹多了,甚至給出了還原代碼,我放到參考資料了,有興趣的能夠看看。

 

參考資料

你所不知的有趣投影方法

ArcGIS將WGS84座標轉北京54或西安80

百度座標(BD09)、國測局座標(火星座標,GCJ02)、和WGS84座標系互轉

&ArcGIS 幫助文檔

相關文章
相關標籤/搜索