1. 程式人生 > >GIS基礎知識 - 座標系、投影、EPSG:4326、EPSG:3857

GIS基礎知識 - 座標系、投影、EPSG:4326、EPSG:3857

最近接手一個GIS專案,需要用到 PostGIS,GeoServer,OpenLayers 等工具元件,遇到一堆地理資訊相關的術語名詞,在這裡做一個總結。

1. 大地測量學 (Geodesy)

大地測量學是一門量測和描繪地球表面的學科,也包括確定地球重力場和海底地形。

1.1 大地水準面 (geoid)

大地水準面是海洋表面在排除風力、潮汐等其它影響,只考慮重力和自轉影響下的形狀,這個形狀延伸過陸地,生成一個密閉的曲面。雖然我們通常說地球是一個球體或者橢球體,但是由於地球引力分佈不均(因為密度不同等原因),大地水準面是一個不規則的光滑曲面。雖然不規則,但是可以近似地表示為一個橢球體,這個橢球體被 稱為參考橢球體(Reference ellipsoid)。大地水準面相對於參考橢球體的高度被稱為 Undulation of the geoid 。這個波動並不是非常大,最高在冰島為85m,最低在印度南部為 −106 m,一共不到200m。下圖來自維基百科,表示 EGM96 geoid 下不同地區的 Undulation。

 1.2 參考橢球體(Reference ellipsoid)

參考橢球體(Reference ellipsoid)是一個數學上定義的地球表面,它近似於大地水準面。因為是幾何模型,可以用長半軸、短半軸和扁率來確定。我們通常所說的經度、緯度以及高度都以此為基礎。

一方面,我們對地球形狀的測量隨著時間遷移而不斷精確,另一方面,因為大地水準面並不規則,地球上不同地區往往需要使用不同的參考橢球體,來儘可能適合當地的大地水準面。歷史上出現了很多不同的參考橢球體,很多還仍然在使用中。國內過去使用過“北京54”和“西安90”兩個座標系,其中北京54使用的是克拉索夫斯基(Krasovsky)1940的參考橢球,西安80使用的是1975年國際大地測量與地球物理聯合會第16屆大會推薦的參考橢球。當前世界範圍內更普遍使用的是WGS所定義的參考橢球。

2. 座標系(coordinate system)

有了參考橢球體這樣的幾何模型後,就可以定義座標系來進行描述位置,測量距離等操作,使用相同的座標系,可以保證同樣座標下的位置是相同的,同樣的測量得到的結果也是相同的。通常有兩種座標系 地理座標系(geographic coordinate systems) 和 投影座標系(projected coordinate systems)。

2.1 地理座標系(Geographic coordinate system)

地理座標系一般是指由經度、緯度和高度組成的座標系,能夠標示地球上的任何一個位置。前面提到了,不同地區可能會使用不同的參考橢球體,即使是使用相同的橢球體,也可能會為了讓橢球體更好地吻合當地的大地水準面,而調整橢球體的方位,甚至大小。這就需要使用不同的大地測量系統(Geodetic datum)來標識。因此,對於地球上某一個位置來說,使用不同的測量系統,得到的座標是不一樣的。我們在處理地理資料時,必須先確認資料所用的測量系統。事實上,隨著我們對地球形狀測量的越來越精確,北美使用的 NAD83 基準和歐洲使用的 ETRS89 基準,與 WGS 84 基準是基本一致的,甚至我國的 CGCS2000 與WGS84之間的差異也是非常小的。但是差異非常小,不代表完全一致,以 NAD83 為例,因為它要保證北美地區的恆定,所以它與 WGS84 之間的差異在不斷變化,對於美國大部分地區來說,每年有1-2cm的差異。

2.2 投影座標系(Projected coordinate systems)

地理座標系是三維的,我們要在地圖或者螢幕上顯示就需要轉化為二維,這被稱為投影(Map projection)。顯而易見的是,從三維到二維的轉化,必然會導致變形和失真,失真是不可避免的,但是不同投影下會有不同的失真,這讓我們可以有得選擇。常用的投影有等矩矩形投影(Platte Carre)和墨卡託投影(Mercator),下圖來自Mercator vs. well…not Mercator (Platte Carre),生動地說明了這兩種投影下的失真:

左圖表示地球球面上大小相同的圓形,右上為墨卡託投影,投影后仍然是圓形,但是在高緯度時物體被嚴重放大了。右下為等距投影,物體的大小變化不是那麼明顯,但是影象被拉長了。Platte Carre 投影因為在投影上有扭曲,並不適合於航海等活動,但是因為座標與畫素之間的對應關係十分簡單,非常適合於柵格圖的展示,Platte Carre 投影是很多GIS 軟體的預設投影。

需要注意的是,對於墨卡託投影來說,越到高緯度,大小扭曲越嚴重,到兩極會被放到無限大,所以,墨卡託投影無法顯示極地地區。下圖來自維基百科,可以看到墨卡託投影下每個國家的大小和實際大小的差異。但是 conformality(正形性) 和 straight rhumb lines 這兩個特點,讓它非常適合於航海導航。

 By Jakub Nowosad - Own work, CC BY-SA 4.0, Link

3. 對於 Web Map 開發人員的意義

對於 Web Map 開發人員來說,最熟悉的應該是EPSG:4326 (WGS84) and EPSG:3857(Pseudo-Mercator),這又是啥呢?

3.1 EPSG:4326 (WGS84)

前面說了 WGS84 是目前最流行的地理座標系統。在國際上,每個座標系統都會被分配一個 EPSG 程式碼,EPSG:4326 就是 WGS84 的程式碼。GPS是基於WGS84的,所以通常我們得到的座標資料都是WGS84的。一般我們在儲存資料時,仍然按WGS84儲存。

3.2 EPSG:3857 (Pseudo-Mercator)

偽墨卡託投影,也被稱為球體墨卡託,Web Mercator。它是基於墨卡託投影的,把 WGS84座標系投影到正方形。我們前面已經知道 WGS84 是基於橢球體的,但是偽墨卡託投影把座標投影到球體上,這導致兩極的失真變大,但是卻更容易計算。這也許是為什麼被稱為”偽“墨卡託吧。另外,偽墨卡託投影還切掉了南北85.051129°緯度以上的地區,以保證整個投影是正方形的。因為墨卡託投影等正形性的特點,在不同層級的圖層上物體的形狀保持不變,一個正方形可以不斷被劃分為更多更小的正方形以顯示更清晰的細節。很明顯,偽墨卡託座標系是非常顯示資料,但是不適合儲存資料的,通常我們使用WGS84 儲存資料,使用偽墨卡託顯示資料。

Web Mercator 最早是由 Google 提出的,當前已經成為 Web Map 的事實標準。但是也許是由於上面”偽“的原因,最初 Web Mercator 被拒絕分配EPSG 程式碼。於是大家普遍使用 EPSG:900913(Google的數字變形) 的非官方程式碼來代表它。直到2008年,才被分配了EPSG:3785的程式碼,但在同一年沒多久,又被棄用,重新分配了 EPSG:3857 的正式程式碼,使用至今。

 

參考資料:

EPSG 4326 vs EPSG 3857 (projections, datums, coordinate systems, and more!) 

Mercator vs. well…not Mercator (Platte Carre)

&n