座標轉換一直是空間數據處理裏面一個很是重要的內容,特別是目前我國已經全面啓用了CGCS2000座標系統,以往那些54和80的座標,將來都要統一轉換到2000上面,因此不少數據處理的單位和同窗,都很是關心座標轉換的問題。git
蝦神曾經據說地理所的一個大牛有過這樣的論點——GIS大部分東西,都能在計算機專業裏面找到影子,只有空間參考和投影是屬於GIS本身所特有的東西。因此這個東西曆來就是非地理專業與地理專業在學習和使用GIS中的一個分水嶺(話說蝦神做爲一個純粹的計算機專業出身的碼農,當年學的時候也很痛苦……地圖學原理看了好多遍,才明白了個大概)。算法
ArcGIS做爲世界上應用最廣的GIS軟件,在投影轉換方面的技術已經很是成熟了,可是由於中國特有的國情,致使不少國內特有的東西,他不具有——好比沒有內置各類座標系轉換到CGCS2000的轉換參數(一些國際特別是北美通用的轉換參數,是內置的了),固然,還有國內特有的標準圖幅號這種東西……網絡
下面咱們來看看,如何進行轉換。工具
首先,轉換的原理就不在這裏掉書袋了,網絡上不少,貼一張圖意思一下:學習
實際上兩個不一樣座標系之間的轉換,就是平移、旋轉和比例尺度的的變化。測試
那麼轉換的方法,一般在大範圍下,都是經過布爾沙沃爾夫七參數來進行轉換的,數學原理(此處省略一萬字和若干數學公式)……3d
理論研究的同窗請去查閱《地圖學原理》一書相關章節,下面進入工程實踐操做:orm
ArcGIS裏面,對於同橢球體下面的轉換,是不須要任何參數的,好比我用WGS84(wkid:4326)轉WGS84 Web Mercator(wkid: 3857),是不須要任何參數的:blog
可是要是換一個橢球體的話,好比換成cgcs2000,那麼就須要定義地理轉換參數了,以下:排序
固然,在新版本(10.4以後)的ArcGIS中,若是你不設定轉換參數,也能夠強轉,只是轉完以後,不保證精確度而已,而在比較老的版本里面,不設置轉換參數,就直接不容許執行的。
因此,在轉換的時候,定義轉換參數是很是重要的,下面咱們來看看怎麼計算而且設定轉換參數。
首先貼出公式,數學恐懼症的同窗略過:
實際上就是一個七元方程組……好吧,算我沒說,咱們直接用軟件來算。
要計算七元方程式組,就最少須要3個點來進行解算,限於寫代碼很痛苦,因此咱們目前直接採用網上最流行的工具COORD GM來進行計算(有關心算法的,之後有機會再給你們討論)。
這個神奇的軟件以下:(PS:我很喜歡做者設置的這個圖標)。
執行流程以下:
首先,準備三組座標……準備的方法就你們各顯身手了,好比用差分GPS去測量……,下面給出的三組模擬座標,確定是假的,僅供測試。
其中一組是WGS84的經緯度,一組是CGCS2000 3度分帶 117E的投影座標,咱們就用這兩組座標來看看如何反算七參數。
首先,用ARCGIS的同窗,要先明確一個問題,就是ArcGIS裏面的XY座標,與傳統測量裏面的XY座標,是正好相反的,以下所示:
爲何會這樣?由於傳統測繪領域(包括OGC標準的GeoJSON裏面,都是定義緯度在前,經度在後,緣由是緯度的英文單詞是latitude,簡寫爲LAT;而經度是longitude,簡寫爲LON……字母排序,你懂的)
明確這個問題以後,進入COORD GM操做時間:
步驟一:在COORD GM中設定要CGCS2000的橢球體參數:
CGCS2000橢球體的參數是公開的,在ArcGIS裏面就有,這裏只要須要輸入長半軸和扁率就能夠了
而後開始計算七參數了:
選定好各類參數,注意輸入順序
三組座標輸入完成以後,點擊計算,獲得結果:
這個就是計算出來的七參數,可是目前在ArcGIS裏面還不能直接用,由於ArcGIS裏面的單位與COORD裏面是不同的:
其中,ArcGIS裏面的選擇角度的單位是秒,而COORD裏面是弧度;而ArcGIS裏面的縮放比例尺用的是標準單位,而COORD裏面用的百萬分之,因此要進行以下轉換:
後面那藍色的就是能夠在直接ArcGIS裏面使用的參數了,下面把這些參數設置到ArcGIS中去:
Toolbox裏面的投影轉換找到建立地理變化:
按照以下信息,輸入參數:
點擊OK,完成建立
建立完成以後,在你的電腦的以下位置,會生成一個轉換的配置文件:
C:用戶你的用戶名(好比Admin)AppDataRoamingEsriDesktop10.x(ArcGIS的版本)ArcToolboxCustomTransformations
好比個人機器上面,就在這個地方,配置文件的名稱就是你設置的轉換方法的名稱:
下面就能夠進行投影轉換了:
而後你設置了數據和輸入輸出座標系以後,系統會自動找到你設置的地理變換方法:
下面點擊OK,完成座標轉換:
下面給出我這裏的三組測試座標系,你們能夠用來練習一下:
No.1:
40.420897457099997,116.536157668000001
4476368.246360000222921,460634.908516999974381
No.2:
39.954091684500000,116.018334870999993,
4424893.136629999615252,416114.988767999981064
No.3:
39.834201677400003,116.712166401999994,
4411159.581939999945462,475361.417197000002488
輸出結果:
DX=-0.016777
DY=0.033226
DZ=0.031063
WX=-0.0000000034
WY=0.0000000069
WZ=0.0000000064
K=-0.000000007618
ArcGIS參數
XT = -0.016777
YT = 0.033226
ZT = 0.031063
XR = -0.07015968
YR = 0.14238288
ZR = 0.13206528
SD = -0.007618
計算結果如上,若是計算結果一致,就表示你的操做步驟正確了,固然,輸入的數值精度小數位不一樣,結果也會出現細微誤差,這個能夠忽略。