說說坐標系和投影那些事兒

一、緣起

之前在某學習交流群跟幾個群友交流討論起坐標轉換和投影的事兒,如果看了以下對話就明白了坐標系和投影的事兒了那就可以不看本文了,如果還是迷迷糊糊那麼可以繼續往下看,我相信通過本文的分解,應該能幫助很多GISer新手理解並掌握ArcGIS中坐標系和投影的常規操作了。

GIS學習過程中,坐標系和投影一直是一個重點,更是一個難點,尤其是對於非原生GIS專業的童鞋來說有一定理解難度,類似數據無法對齊的情況在GIS初學者中實在是家常便飯,基於上述探討,本文試圖從實際操作角度出發,以理論聯繫實際的形式,通過講道理和實例演示的方式,重點對ArcGIS中常見的坐標系和投影操作進行講解。

二、原理

以下是我畫的一張動態流程圖,通過它來表達我們在ArcGIS中針對地理數據常見的幾種坐標系和投影操作流程。

↑↑↑圖1 | 坐標系和投影操作總體流程圖(注意圖中黑色線條是針對單個數據的流程,藍色線條流程是針對多個數據的流程)

如圖所示,在我們往ArcMAP中添加一個數據後第一步就應該是查看所添加數據的坐標系信息(通過圖層屬性中的「源」標籤查看),只有數據帶有了坐標系信息之後,GIS系統才能識別這個數據在現實地理空間中的真實位置。

最理想的狀態就是數據已經自帶了正確的投影坐標系,如此我們則可以不做任何的坐標系或投影操作;

或者就是自帶了地理坐標系,這時一般需要對其進行投影,將地理坐標系投影轉換為投影坐標系(注意這個過程是坐標系投影,而不是坐標系變換,初學者非常容易把這裡搞混淆);

還有種比較糟糕的情況就是未知坐標系信息(顯示為<未定義>),這時我們一般必須對其定義正確的坐標系。

當然,在我們確定了最後投影坐標系之後還可能需要將其變換為別的投影坐標系,這個過程就是坐標系變換。以上就是我們一般會遇到的對數據的幾種坐標系和投影的操作,即分別為坐標系定義、坐標系投影、坐標系變換。


【插話】

1、注意此處分別用了「一般必須」、「一般需要」、「可能需要」三個詞的含義

坐標系定義——「一般必須」:坐標定義相當於是告訴GIS系統你所載入數據的真實地理空間位置,是坐標系和投影操作的基礎,沒有這個原始坐標系,系統無法識別你這個數據所在的地理空間位置(就是無法判斷它在現實空間中的位置),也無法進行後續的坐標系和投影操作,而且此處定義的坐標系必須是「正確」的,這一點也很重要,舉個例子,如果原始數據本來應該是某個投影坐標系,我們卻為其定義了另外一個投影坐標系甚至是一個地理坐標系,那就相當於告訴了系統一個錯誤的地理定位,那後續的一切操作也就毫無意義。

坐標系投影——「一般需要」:這是講的如果原始坐標系是地理坐標系,那我們一般需要將其進行投影再做後續操作,因為我們在後續的很多空間分析都是基於平面投影坐標系的,比如面積計算統計、距離測算等等都需要進行投影后才能操作,所以投影操作一般也是需要的,當然如果只是顯示出圖,則可以不需要投影,所以也不是必須的。

坐標系變換——「可能需要」:這裡是很多同學比較容易誤會的,很多人認為只要兩個或者幾個數據的坐標系不一樣就一定要進行坐標轉換,其實並不是,因為同一個地方的坐標系即使不一樣,只要你正確的定義了數據的坐標系(也就是你告訴了GIS系統數據的正確坐標系信息),在ArcGIS中是可以通過系統的動態投影自動準確疊加的(因為都是在同一個地方,只是坐標系不一樣而已)。那一般是那種情況需要進行坐標轉換呢,那就是客戶需要特定坐標系,比如你對某個地方的衛星影像、國土規劃、城鄉規劃三個數據進行疊加分析,但是三個數據分別採用了WGS_84坐標系、西安80坐標系、地方獨立坐標系,而客戶要求你疊加分析後的結果必須以國土規劃的西安80坐標系甚至是這幾個之外的CGCS_2000坐標系提交成果,那我們這時就需要按統一的目標坐標系進行坐標轉換了。

2、注意坐標系投影和坐標系變換的區別

坐標系投影:是指地理坐標系通過「投影」轉換為投影坐標系或投影坐標系通過「投影」轉換為地理坐標系的過程,一般一個投影坐標系都有其對應的特定地理坐標系,相當於投影坐標系和其對應的地理坐標系是「包含」和「附屬」關係,「投影」只是同一坐標系下的不同表達方式。

坐標系變換:坐標變換則是完全不同的兩個地理坐標系或者不同的投影坐標系之間的變換,當然我們在對某一地理坐標系進行投影時,如果選擇了不是與其對應的投影坐標系的時候,也是需要設置坐標轉換參數的,兩個坐標系之間可能沒有任何關係。

打個不恰當但是好理解的比喻,「坐標系投影」相當於是一家人的兩個兄弟之間的角色互換,「坐標系變換」則是完全兩個不同家庭成員的角色互換。

【插話完】


三、案例講解

如下圖所示,我們以重慶市兩江新區某街區控規路網及分區道路規劃為例,我們需要將DEM(TIF)、衛星影像(TIF)、城市總體規劃(JPG)、分區規劃(JPG)等進行疊加對比,以便查看現狀建設及相關規劃情況。

↑↑↑圖2 | 需要疊加圖層要素

1、數據載入及特徵預判。

我們將數據全部添加進入ArcMAP,通過縮放至各要素圖層並全部顯示,可以發現部分要素能自動對齊,如主城區的行政邊界、DEM及衛星影像能相互疊加對齊,通過CAD轉換導入的分區及街區道路網也能相互自動對齊,但是和衛星影像等數據無法對齊,總規和分區規劃的JPG文件則完全無法對齊。

↑↑↑圖3 | 原始數據圖層疊加效果

2、查看坐標系信息

我們分別對各數據要素的坐標系信息進行查看梳理,如下表所示:

序號數據名稱數據格式坐標信息備註01區縣界SHPGCS_WGS_1984地理坐標系02重慶主城DEMTIFGCS_WGS_1984地理坐標系03衛星影像圖TIFGCS_WGS_1984地理坐標系04城市總體規劃用地圖JPG<未定義>未知05分區規劃用地圖JPG<未定義>未知06分區規劃路網DWG轉SHP<未定義>平面坐標系07街區控規路網DWG轉SHP<未定義>平面坐標系

由此可見,上述的對不齊現象正是由於以上坐標系信息差異的所造成的,根據在前面介紹的總體邏輯,我們對已有地理坐標系的數據進行坐標系投影操作,對未定義坐標系的文件進行定義坐標系操作。

3、坐標系的投影操作

矢量數據和柵格數據的投影操作方法有區別,我們分別進行演示。

3.1 矢量數據的坐標系投影。如圖所示,我們用「投影」工具對「01區縣界」矢量數據進行投影。

↑↑↑圖4 | 矢量數據的投影操作


【插話】

為何此處投影之後好像沒有變化?

這是因為ArcGIS本身有一個動態投影機制,就是只要我們是同一個地方的地理要素,只要每個數據都定義了正確的坐標系,那麼無論各要素是採用了什麼坐標系,都是可以直接疊加對齊的,這也就是上文講到坐標變換並不是必須的原因,就是說我們在做分析或者可視化的時候,並不一定都要變換為同一個坐標系,只要定義了正確的坐標系(注意此處我多次強調「正確」,這個很重要。),一般都是能自動對齊的。

那麼投影之後數據到底有什麼變化了呢?我們可以打開投影后的數據查看坐標信息進行對比。此處可以借用上一篇推文(《只用十步教會你自己漂漂亮亮提取地形等高線》)中提到的對投影必要性的描述。

如下圖A、圖B所示,分別為投影前後的像元大小,其代表的值分別為對應的地理空間尺寸,投影之前的地理坐標系下該值表示的是角度值,不能作為空間距離表達,只有投影之後的公制單位坐標值才能正確表達地理空間在平面上的距離(米),因此也才能正確表達平面尺寸和海拔高程之間的對應關係(因為高程也是米)。

↑↑↑ 圖A 投影之前地理坐標系下的數據像元大小

↑↑↑ 圖B 投影之後投影坐標系下的數據像元大小

由此可見,投影只是改變了數據的坐標值表達方式(即由地理角度坐標值轉變為平面距離坐標值),並沒有移動數據位置,所以我們在圖面上是不會看到數據移動的,無論是矢量還是柵格數據的投影都是相同的原理,後面的投影操作也是同理,不再贅述。

【插話完】


3.2 柵格數據的坐標系投影。如圖所示,我們用「投影柵格」工具分別對「重慶主城DEM」和「衛星影像圖」進行投影操作。

↑↑↑圖5 | DEM柵格數據的投影操作

↑↑↑圖6 | 衛星影像柵格數據的投影操作


【插話】

注意矢量數據和柵格數據的投影工具不同!

矢量數據的投影是用「投影」工具,位於「ArcToolbox-數據管理工具-投影和變換-投影」

柵格數據的投影操作是用「投影柵格」工具,位於位於「ArcToolbox-數據管理工具-投影和變換-柵格-投影柵格」

【插話完】


4、坐標系的定義操作

如前文所述,在數據坐標系處於<未定義>狀態下,我們就需要判斷其原始坐標系信息,並使用「定義投影」工具將其定義給對應的數據,如下圖所示,「定義投影」的工具說明很好的解釋了定義坐標系的意義。

某些情況下我們能夠判斷數據的坐標系信息(如西安80坐標系我們大多數時候可以通過讀取坐標值判斷),但是通常情況下我們是無法準確判斷未定義坐標系信息的(如載入的圖片,本身就沒有地理空間坐標系),甚至我們有些情況下能夠判斷出來是什麼坐標系,但並不清楚其對應的坐標系信息(如地方獨立坐標系),也是無法直接進行定義的。

如果能夠判斷出原始坐標系信息,那我們就對其定義正確的坐標系即可;但當我們在無法判斷原始坐標系信息的情況下,則可以通過直接將其定義為目標坐標系,然後通過「空間校正」「地理配准」的方法進行空間校準。

4.1坐標系信息的判斷。

(1)如下圖,是分區規劃道路網和街區控規道路網,這兩個圖層均是通過規劃CAD轉換為SHP文件所得,從圖上我們可以看到兩個圖層是可以疊合的,說明他們應該是用了同一個平面坐標系,然而他們又無法和我們已經投影了的數據直接對其,說明他們又不是UTM投影的WGS1984坐標系,再看右下角的坐標值為(55868.133,82387.492),很明顯也不是我們國家常用的西安80或者北京54坐標系,那我們初步判斷這兩個數據均是採用的重慶獨立坐標系(一般城市級別用地規劃都會採用地方獨立坐標系),而這個坐標系信息是保密的,我們無法獲取,也就無法直接定義。

↑↑↑圖7 | 坐標系信息的判斷


【插話】

1、什麼樣的坐標系可以判斷出來?

一類數據是某些網上下載的數據,其坐標值一般顯示為小數點前為2-3位數,如(123.1234,36.1234),這種情況一般就是地理坐標系了,而且大多數情況就是WGS_1984的地理坐標系,我們可以對其直接定義後觀察是否正確。

對於CAD類測繪成果,比如我們常見的CAD地形圖,如果原始製圖規範的情況下,圖面上會直接註明所採用的坐標系(如西安80),如果是這樣我們就可以直接導入GIS後定義為西安80坐標系即可;

如果是沒有註明的情況,我們一般可以通過觀察坐標值判斷坐標系,如果坐標值小數點前是6位+7位(如123456.001,1234567.001),或者8位+7位(36123456.001,1234567.001),那麼一般都是西安80或者北京54(由於北京54坐標系已經很多年沒用,除非特別久遠的地形圖,否則一般判斷為西安80,當然,現在國家也有新的大地2000坐標系,要注意甄別)。

6位+7位(如123456.001,1234567.001),或者8位+7位(36123456.001,1234567.001)的區別在於後者的X坐標值前面加了帶號(36),而前者坐標沒有帶號(圖A 、B),所以坐標值的X值有6位和8位的區別,這在坐標定義的時候要注意區別,有帶號的坐標值要按帶號對應坐標系進行定義,否則按中央經線值對應坐標系進行定義。

↑↑↑圖A | 無帶號坐標系信息

↑↑↑圖A | 有帶號坐標系信息

2、如果是獨立坐標系應該怎麼辦?

地方獨立坐標系是由各地自行確定,其坐標系信息和參數均是保密的,理論上正確做法是將數據交由當地地信中心通過合法程序進行坐標轉換後再交給數據使用方使用,但受限於項目經費、項目性質等多方面原因,有些時候只能靠我們自己進行坐標轉換,那就可以通過本文的方法進行坐標轉換。

【插話完】


(2)如下圖所示,對於我們在ArcGIS中添加的JPG圖紙,是沒有判斷坐標系的必要的,因為這類圖紙通常是由我們通過PS等製圖程序產生,不具有地理空間信息特徵,我們只需要對其定義成我們的目標坐標系,然後通過地理配准調整其位置到我們正確空間位置即可。

4.2 數據坐標系的定義。

根據以上的分析,我們本次案例中的幾個未定義坐標係數據均無法獲得原始坐標系信息,因此我們統一定義為UTM_WGS_1984投影坐標系(因為其他已有坐標系信息數據均是使用的該坐標)

(1)按如圖所示操作,分別對分區規劃路網和街區控規路網SHP文件進行坐標系定義。

(2)按以上相同的操作方法,對城市總體規劃和分區規劃JPG格式文件進行坐標系定義。


【插話】

定義坐標系後數據為何會移動?

這裡注意坐標系定義有別於坐標系投影,投影是ArcGIS知道數據的原始坐標,也就說知道數據在真實空間的位置,通過投影只是改變了其坐標表示方法而已。定義坐標系是ArcGIS不知道原始坐標,也就是不知道該數據的坐標數值表達其在空間中的真實位置,當我們為其定義一個坐標系後,ArcGIS系統就會根據這個定義的坐標系將其放置到系統模擬的地理空間中去,所以我們會看到數據會發生移動,但是我們這裡為其定義的並不是「正確」的坐標系,因此它並不是在它真實應該在的位置,我們需要通過「空間校正」辦法將其「移動」到它正確的位置去,這就相當於一個坐標變換的過程。

【插話完】


5、坐標系的變換操作

在講坐標系變換之前,我們有必要理解清楚坐標系變換的含義。我們常見的坐標系變換有西安80坐標系轉北京54坐標系的互轉,UTM_WGS84坐標和西安80及北京54等坐標系的互轉等,當然現在也會經常遇到網路數據坐標系(如百度坐標系、火星坐標系等)。其實這裡我們要明確一個概念,坐標系本身是無法改變的,比如西安80坐標系,那它相應的橢球體、基準面、投影方法等坐標系參數信息都是不能改變的,改變了就不叫西安80坐標系了,所以,我們通常所謂的坐標系變換其實應該叫數據坐標系重定義坐標值校正,改變的也是數據的坐標系定義和對應的坐標值。

舉個例子,某個數據的原始坐標系是西安80投影坐標系,但是我們需要將其變換為UTM_WGS84的投影坐標系,那麼這個時候我們就需要將數據的坐標系重新定義為UTM_WGS84投影坐標系,但是數據原來是按西安80坐標系表達的,所以其坐標值如果再按UTM_WGS84坐標系表達就不正確了,這時候就需要我們對坐標值進行空間校正,說的好理解一點就是移動數據的空間位置到正確位置,這個過程就是我們所謂的坐標變換過程,根據這個原理,坐標變換一般也有3參數和7參數法(百度搜坐標變換講的最多的內容就是這個)。

網上也有很多坐標轉換工具將這個過程集成,只需要下載之後進行操作就行,但是本文的宗旨是把原理講清楚之後我們可以不藉助第三方工具,自己就能通過ArcGIS完成坐標變換操作,讓我們的坐標變換完全掌握在自己手裡。

通過以上分析,我們知道坐標變換的核心主要就是兩點,一個是坐標系的重新定義,無論是原始數據是否已經帶有坐標系,我們都可以對其進行重新定義,這個過程就是普通的坐標系定義,按以上坐標系定義操作流程進行即可;第二個核心就是坐標值的校正了,在ArcGIS中針對於矢量數據和柵格數據,其空間校正方法不一樣,其中矢量數據使用「空間校正」工具進行校正,柵格數據使用「地理配准」工具進行空間校正。

5.1矢量數據的「空間校正」

(1)打開「空間校正」工具,此時我們發現該工具各功能均為灰色禁用狀態,這是因為該工具必須在數據編輯狀態才可用。

(2)打開「編輯器」工具,啟動數據編輯,並設置空間校正目標數據。

(3)通過空間縮放定位,添加空間校正位移控制點。

(4)重複第三步操作,依此添加至少三對以上位移控制錨點。

(5)設置校正方法,運行空間校正。

(6)完成空間校正,核對校正成果準確性。

(7)保存並停止編輯,完成數據空間校正。

5.2 柵格數據的「地理配准」

(1)通過右鍵點擊工具欄,打開「地理配准」工具,並設置我們需要進行配準的柵格數據,同時勾選下拉列表中的「自動校正」選項。(注意此處有別於矢量數據,不需要啟用編輯器)

(2)如下圖所示,參照矢量數據「空間校正」添加控制錨點的方法,同樣添加至少3對以上的控制錨點,由於打開了「自動校正」,數據會自動對齊到我們的目標位置。

(3)打開地理配准工具下拉菜單,點擊「更新地理配准」,則配准信息就可以保存至柵格數據,後期再載入該文件就有了正確的坐標系信息了。

我們採用相同的方法完成其他矢量數據的「空間校正」及柵格數據的「地理配准」。

6、成果驗證

通過1-5小節完成了所有數據的坐標系投影坐標系定義坐標系變換,現在我們將所有完成後的數據載入到同一數據空間查看一下疊加效果。

6.1 街區控規路網與現狀建成數據的疊加對比。通過該數據對比可以查看規劃路網和現狀建設情況,也可以作為後期規劃管理的核查依據。

6.2 街區控規路網與分區規劃的疊加對比。通過該對比可以作為不同相關規劃之間的銜接情況,是多元規劃、多規合一的重要技術基礎。

6.3 分區規劃路網與城市總規的疊加對比。通過該對比可以核對上下位規劃之間的銜接情況,同樣是多規合一中非常重要的技術基礎。

6.4 同一地理空間多元數據的疊加對比。通過對多元數據對比,即可作為規劃前期基本情況摸底依據,也可作為規划過程中基礎資料庫的技術基地,也可以作為規劃後期監察管理的重要依據,同時也是多規合一重要技術基礎。

四、思考

坐標系和投影看似只不過是GIS中的一個知識點,但其重要性和難度絕對是GIS學習非常重要的一個分水嶺,理解並解決了坐標系和投影的相關疑點,GIS中很多的問題都會迎刃而解,否則必定會遇到各種莫名其妙的「挫折」。

本文試圖從地理空間多元數據的坐標系統一入手,以講道理結合實際案例的方式,深入淺出的對數據坐標系常見的坐標系投影、坐標系定義及坐標系變換進行了較為完整的梳理。通過實例我們也能看到,統一坐標系無論是在多元規劃數據對比校驗還是多規合一應用等領域都是非常重要的基本前提。

篇幅有限,更多詳情敬請關注"城市技師"公眾號:UGISER,針對本文若有疑問或其他意見、建議請添加管理員微信留言,管理員微信號:UGISER0084

附錄:本文所有數據及成果文件

下載鏈接:

pan.baidu.com/s/1BT9M1Z

(申明:本文提供的所有數據和資源僅作學習交流使用,不代表實際規劃情況,嚴禁私自用作商業及非法活動,否則後果自負,本公眾號不負連帶責任。)

weixin.qq.com/r/Qym0rBn (二維碼自動識別)

城市技師 | UGISER

Urban Planning & Geographic Information System & Smart Design

城市技師 | 關注技術 | 智慧創新 | 決策支持

我們關注城鄉規劃領域的GIS地理信息和時空大數據相關研究理論、前沿資訊、先進技法、優秀案例的共享、共創、共進、共贏。


推薦閱讀:

利用python通過GPS的N文件計算所有衛星的軌道坐標

TAG:ArcGIS | 地理坐標系 |