四/七引數計算方法及"傻瓜式"轉換流程
座標轉換隸屬於"大地測量學"的範疇,而大地測量學呢,又是整個測繪學科中最基礎、最重要,但知識的理論性最強的一門學科。
今天呢,測繪營地將盡量用通俗易懂的語言為大家講解一下座標系的區別、幾種轉換方式、中央子午線的確定等等基本科普知識,然後用盡量"傻瓜式"的操作步驟,一步一步教大家如何利用COORD軟體進行四引數和七引數的計算,並介紹座標點的轉換流程。
1 座標系
1.座標系分類
這裡暫且將座標系分為兩種,地理座標系和投影座標系。
地理座標系,也稱大地座標系(球面座標B、L、H):以參考橢球面為基準面建立起來的座標系。地面點的位置用大地緯度(B)、大地經度(L)和大地高度(H)表示。
CGCS2000、北京54、西安80、城市獨立座標系均為地理座標系。
投影座標系(平面座標X、Y):從參考橢球體按照某種投影方法(如高斯投影,橫軸墨卡託投影)投影得到的,它對應於某個地理座標系。
此時應注意
測繪里的座標系和我們中學裡學到的平面座標系xy是相反的!
測繪里北座標是X,東座標是Y。
如cad、奧維軟體裡面對應的座標,按順序應該是(東座標,北座標)或者可以說成是CAD風格的(X,Y),就是測繪風格的(東座標,北座標)。
2.關於座標系的表述
我們平時所說的控制點N1的北京54座標為:(2187995.26,321316.58)
其實嚴格意義的表述應該為:
N1的平面座標為:(北座標2187995.26,東座標321316.58) ,1954年北京座標系,高斯3度帶投影(帶號37),中央子午線111度。
加帶號37的完整座標為(北座標2187995.26,東座標37321316.58)。
簡單來說,大地座標是經緯度BL,投影座標是XY。
3.三種座標系的相對位置關係
測繪營地為大家做了一張北京54、西安80、CGCS2000的相對位置關係圖,供大家參考,有時候可以用來輔助判斷圖紙的座標系。
4.關於WGS84座標系
WGS84座標系是地心座標系,屬於大地座標系中的一種。
它主要以經緯度和大地高(橢球高)的形式表現。
它一般出現在:
RTK測量手簿的原始資料座標系
無人機POS定位資料的原始座標系
由於WGS84座標系的橢球引數與CGCS2000座標系的橢球引數極為接近,他們兩者的同一經緯度座標,在相同投影方式下的投影座標幾乎一致,僅有微小差異(毫米級別),在當前測量精度的條件下這種差異是可以忽略的。
因此,可以說WGS84和CGCS2000的座標是可以等同的,它們的經緯度座標在不進行引數轉換的情況下是一致的。
2 常用的轉換方式(針對平面轉換)
1.A平面座標系——B平面座標系(後面會用到)
此時,A座標系(轉換前)稱為源座標系,B座標系(轉換後)稱為目標座標系。
涉及的常見轉換引數:
二引數:
包含X平移,Y平移
四引數:
包含X平移,Y平移,旋轉,尺度(縮放)
七引數,最常用的叫布林莎七引數:
包含X平移,Y平移,Z平移,X旋轉,Y旋轉,Z旋轉,尺度(縮放)
2.相同橢球下,大地座標系BL——平面座標系XY(正算)
透過設定橢球引數+投影方式+中央子午線
3.相同橢球下,平面座標系XY——大地座標系BL(反算)
同樣透過設定橢球引數+投影方式+中央子午線,進行反推
3 如何確定中央子午線及投影帶號
1.已知加帶號的座標
如北座標2187995.26,東座標37321316.58,則中央子午線的經度=37×3=111度。
2.根據大地座標經度L
所在地經度範圍對應的中央經線請參考下表(來自於奧維官方幫助文件):
4 計算轉換引數必要條件
科普——公共點(該點的2個座標系統的座標都知道)
二引數:至少1個公共點的兩套座標
四引數:至少2個公共點的兩套座標
七引數,至少3個公共點的兩套座標
5 轉換四/七引數計算方法
準備材料:4個公共點,1個檢查點
(5個點均為在海南島上任意選取的假定點)
計算工具:COORD(笑臉軟體)
公共點與檢查點分佈如下:
(注:海南島的面積約為3.39萬平方公里——來自百度百科)
下面以CGCS2000(源座標)轉換至北京54座標系(目標座標)為例:
1.四引數計算
計算形式:源座標XY——目標座標XY
(1)製作參與計算的資料檔案
檔案格式為txt或者csv都可以,資料存放順序為:點號,源座標X,源座標Y,目標座標X,目標座標Y,
(2)設定——計算四引數——檔案匯入,選擇剛剛做好的資料檔案——點選計算
然後我們可以看到計算的四引數結果,及其引數精度(用RMS表示,單位米,越小越好)
點選"匯出",可以以txt文字形式匯出儲存算好的四引數
下面我們點選"確定"——"確定",將該引數用於計算。
(3)轉換引數精度檢查(進行資料轉換也是這個流程)
輸入源座標(2000座標)——將轉換前後的橢球選成一致的——勾選"平面轉換",勾選兩個"平面座標"——點選"轉換座標"——將轉換後的座標與已知的54座標進行比較。
2.七引數計算
計算形式:源座標BL——目標座標XY
(1)先將源座標XY轉換成對應橢球的經緯度座標BL
1、設定投影引數
設定——地圖投影——選擇"高斯三度帶投影",中央子午線輸入111:00:00.000000E——確定
2、選擇檔案格式
點選"檔案轉換"——格式——選擇第二種格式(點號,北方向X,東方向Y,水準高)——確定
3、選擇檔案進行轉換
瀏覽,選取2000座標txt檔案——轉換前勾選"平面座標",轉換後勾選"大地座標",不勾選任何"座標轉換"方式,前後橢球均為CGCS2000——點選"=>"——確定設定轉換關係
此時在《2000座標-111-北東.TXT》檔案下生成了一個《2000座標-111-北東.txt1》的檔案,重新命名把"txt1"改成"txt"、"北東"改成"BL"即可。
此時我們就得到了源座標的經緯度BL。
(2)製作參與計算的資料檔案
檔案格式為txt或者csv都可以,資料存放順序為:點號,源座標B,源座標L,源座標H,目標座標X,目標座標Y,目標座標H
其中兩個H可以不填或者填0,格子必須佔著。
(3)設定換帶中央子午線
設定——換帶計算——確定——中央子午線輸入111——確定——中央子午線輸入111——確定
(4)計算七引數
設定——計算七引數——檔案匯入,匯入剛剛做好的資料檔案——前一個橢球選擇CGCS2000,後一個橢球選擇北京54——點選"計算"
然後我們可以看到計算的七引數結果,及其引數精度(用RMS表示,單位為米,越小越好)
點選"匯出",可以以txt文字形式匯出儲存算好的七引數
下面我們點選"確定"——"確定",將該引數用於計算。
(5)轉換引數精度檢查(進行資料轉換也是這個流程)
1、設定中央子午線
設定——換帶計算——確定——中央子午線輸入111——確定——中央子午線輸入111——確定
2、單點轉換——輸入源座標(2000座標)——輸入源橢球選擇CGCS2000,輸出目標橢球選擇北京54——勾選"七引數轉換",勾選兩個"平面座標"——點選"轉換座標"——將轉換後的座標與已知的54座標進行比較
6 結語
在文章結尾鄭重宣告,本文所涉及到的北京54與CGCS2000座標資料,均為假定座標,僅為學習測試用,其四引數與七引數計算結果與國家標準的北京54與CGCS2000座標系轉換引數遠遠不符,無法用於國內任何城市的有效座標轉換。特此說明。
同時強調,根據自然資發〔2020〕95號中《測繪地理資訊管理工作國家秘密目錄》的規定,2000國家大地座標系、1954年北京座標系、1980西安座標系之間的相互轉換引數;國家大地座標系與相對獨立的平面座標系統之間相互轉換精度優於±10釐米的轉換引數均屬於機密級別,請大家在平時的工作中注意該類引數的保密性!
--------------------------------------
arcpy投影(一)——prj、gtf檔案定義、路徑及解析(arcmap,arcpro)
一、投影座標prj檔案,轉換gtf檔案
ArcGIS的prj檔案是一個專門用來描述座標系投影的檔案,裡面定義了座標系的名稱、長短半軸、基準面、投影引數等一些其他重要的資訊。
gtf檔案是專門用來描述座標轉換關係的檔案,在你自定義轉換關係(Create Custom Geographic Tramsformation)後均會在預設路徑下生成,該檔案中包含了轉換關係名稱、原始座標系名稱及相應引數、目標座標系名稱及相應引數,以及兩個座標系統轉換的方法與引數。
二、檔案路徑
無論是ArcMap還是Arcpro,這兩種檔案都是放在C盤使用者資料夾在的AppData資料夾中,要注意的是AppData資料夾為隱藏資料夾,如果找不到的話可以勾選資料夾"檢視"中的"隱藏的專案"選項。
(一)ArcMAP路徑
ArcMap中自定義座標系和投影關係分別放在Coordinate System和CustomTransformations資料夾中
(1)自定義座標系
若Coordinate System資料夾不存在,則在第一行路徑下進行建立,若存在prj檔案直接放入到資料夾中
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcMap\
1
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcMap\Coordinate System
1
(2)轉換關係
同上
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcToolbox\
1
C:\User\Administrator\AppData\Roaming\Esri\Desktop10.6\ArcToolbox\CustomTransformations
1
(二)ArcPro路徑
(1)自定義座標系
在pro中進行了測試,新建Coordinate System資料夾等方式都不可以識別到,透過收藏的方式可以進行識別,自己弄的投影可以放到這個路徑下,但是經測試目前pro在這個路徑下只能識別出來全英文名的prj檔案,如果使用Arcpy進行處理時,可以直接透過路徑進行指認。
C:\User\Administrator\AppData\Local\ESRI\ArcGISPro\Favorites
1
(2)轉換關係
同ArcMap,注意如果要使用Arcpro的Arcpy進行投影關係的變換,一定要檢查該路徑下是否已經存在對應的轉換關係,沒有的話要進行生成或從他處複製,否則函式會報引數錯誤,這部分後面的文章中會提到。
C:\User\Administrator\AppData\Roaming\Esri\ArcGISPro\ArcToolbox \
1
C:\User\Administrator\AppData\Roaming\Esri\ArcGISPro\ArcToolbox\CustomTransformations
1
三、檔案內容解析
(一)投影座標系prj檔案
PROJCS[
"Ain_el_Abd_UTM_Zone_38N"
,GEOGCS[
"GCS_Ain_el_Abd_1970"
,DATUM["D_Ain_el_Abd_1970"
,SPHEROID["International_1924",6378388.0,297.0]]
,PRIMEM["Greenwich",0.0]
,UNIT["Degree",0.0174532925199433]
]
,PROJECTION["Transverse_Mercator"]
,PARAMETER["False_Easting",500000.0]
,PARAMETER["False_Northing",0.0]
,PARAMETER["Central_Meridian",45.0]
,PARAMETER["Scale_Factor",0.9996]
,PARAMETER["Latitude_Of_Origin",0.0]
,UNIT["Meter",1.0]
,AUTHORITY["EPSG",20438]
這是一個投影座標系。
PROJCS:代表的是其投影座標系。
投影名稱是:Ain_el_Abd_UTM_Zone_38N
基準面資訊:D_Ain_el_Abd_1970
橢球體:SPHEROID["International_1924",6378388.0,297.0]-長半軸和反扁率
單位:UNIT["Degree",0.0174532925199433]
PARAMETER:代表投影重要的引數資訊
(二)地理座標prj檔案
GEOGCS[
"GCS_Beijing_1954"
,DATUM[
"D_Beijing_1954"
,SPHEROID["Krasovsky_1940",6378245.0,298.3]
]
,PRIMEM["Greenwich",0.0]
,UNIT["Degree",0.0174532925199433]
,AUTHORITY["EPSG",4214]
這是一個經緯度座標系。
GEOGCS:代表是其地理座標系
基準面:D_Beijing_1954
橢球體:Krasovsky_1940
長半軸:6378245.0
反扁率:298.3
中央經線:PRIMEM["Greenwich",0.0] - 格林威治
單位:UNIT["Degree",0.0174532925199433]
(三)變換關係gtf檔案
GEOGTRAN["CGS2000_TO_BJ1954", #轉換關係名稱
GEOGCS["GCS_China_Geodetic_Coordinate_System_2000", #資料原始座標系名稱
DATUM["D_China_2000", #原始座標系橢球體名稱及引數
SPHEROID["CGCS2000",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]
],
GEOGCS["GCS_Beijing_1954", #資料目標座標系名稱
DATUM["D_Beijing_1954", #目標座標系橢球體名稱及引數
SPHEROID["Krasovsky_1940",6378245.0,298.3]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]
],
METHOD["Geocentric_Translation"], #轉換方法及引數
PARAMETER["X_Axis_Translation",0.0],
PARAMETER["Y_Axis_Translation",0.0],
PARAMETER["Z_Axis_Translation",0.0]
一、"座標系、投影和變換"、"地理基準面變換"基本概念
首先介紹兩個基本概念,一是"座標系、投影和變換",二是"地理基準面變換"。"座標系、投影和變換"是地圖學中要學習最基本概念,可以檢視書籍和幫助文件。
我們重點介紹一下 "地理基準面變換" ,幫助文件中給出的解釋:地理座標系描述瞭如何將地球上的位置放置在一個假想的參考球體上。使用角度單位(例如度)來在一個參考球體上分配座標位置。地理座標系不止一種,因為在不同的位置,每種座標系都有不同的選擇,即存在最為適合的參考橢球面。這種設計十分必要,原因在於地球實際上是一個凹凸不平的球體。變換是在地圖繪製時將圖層的地理座標系轉換為與地圖的地理座標系相匹配的計算,可確保全部對齊。資料不會由於變換髮生更改。
我們應當準確把握的是:地理基準面變換是在原始座標系和目標座標系的地理基準面不同的情況下需要進行的一步操作,也可以理解為當兩個座標系統採用不同的橢球體時,需要給橢球體的變換提供一個可用的函式,從而確保資料可以進行正確的對齊計算。 例如:你將資料從CGS2000轉換為CGS2000 3 degree 108E,兩個投影均採用同一個地理基準面,因此該轉換過程不需要進行基準面變換,而當你將CGS2000的資料變換為WGS84時,則必須進行這個基準面的變換。
二、Spatial Reference object及Transformations引數
介紹完上述的兩個基本概念,我們需要進一步的瞭解在進行投影定義或者座標轉換時都需要用到空間參考物件(Spatial Reference object),以及在進行基準面變換時需要用到轉換關係引數(Transformations)。
一、定義投影
(一)基本概念
定義投影的工具在我們的日常操作中多用於給具有未知座標系(即,在資料集屬性中座標系為"未知")的資料集或要素類指定一個已知座標系,該工具同樣可以對已存在座標系統資訊的資料進行覆蓋更新,將具有已知座標系的資料集輸入此工具時,此工具將顯示警告資訊,但仍將成功執行。
(二)注意事項
①使用該工具可以將資料的座標資訊修改為指定的座標系統,但當使用者無法確定當前資料是否能與指認座標系資訊正確對應時,定義投影的結果存在不確定性,若指認的座標系統存在錯誤,則實際的資料投影是存在錯誤的,在後續操作中可能會出現問題,這是要素考是否是這一環節出現的問題。例如資料的座標值為經緯度,而使用者直接定義投影座標系,則會出現座標數值與投影座標系統範圍間的衝突,從而無法達到預期效果,需要注意。
②該工具是直接修改資料的座標系資訊,而不是新建一個要素,因此使用前應考慮好資料備份的問題。
③地理資料庫要素資料集中的所有要素類將使用同一個座標系。對於地理資料庫資料集而言,應在其建立時確定座標系。資料集包含要素類之後,其座標系將無法更改。
二、投影變換
(一)基本概念
投影變換時將空間資料從一種座標系投影到另一種座標系的過程,該過程可以是:①從地理座標系變換到投影座標系、②從地理座標系A變換到地理座標系B,③從投影座標系A變換到投影座標系B。 ②和③均有可能存在兩種座標系統的基準面不同的情況,需要進行基準面的轉換,該工具中也提供了基準面轉換關係的引數輸入,在後面的文章中我們也會進行詳細介紹。
(二)注意事項
①該工具的地理變換引數是可選引數。 當不需要地理變換或基準面變換時,引數中不會出現下拉選單,並且引數為空。 當需要變換時,將會基於輸入基準面和輸出基準面生成一個下拉選單,並會選擇一個預設變換。(例如,從 GCS2000 投影到 GCS2000_3_degree_108E 時不需要地理變換,因為輸入座標系和輸出座標系都具有 GCS2000 基準面。 但是,從 GCS2000 投影到 WGS_1984_UTM_Zone_12N 時則需要地理變換,因為輸入座標系使用的是GCS2000 基準面,而輸出座標系使用的是 WGS_1984 基準面。可以使用工具進行測試,輸入資料和目標座標系後,若列表中不自動彈出變換關係,則需要透過Create Custom Geographic Tramsformation工具來進行自定義。
提示:變換是雙向的。 例如,如果將資料從 WGS 1984 轉換為 NAD 1927,可以選取一個名為 NAD_1927_to_WGS_1984_3 的變換,然後此工具即可正確應用它。)
②空間範圍的問題,在定義投影中我們已經講到每一個投影都是有他對應的座標範圍的,如果輸入資料的座標值與他所帶的空間參照資訊之間存在衝突,則在執行本工具時常常會報出"Error 999999執行函式出錯 invalid extent for output coordinate system"的錯誤,這是應當考慮輸入資料是否存在上述問題。
③關於輸出資料,應當指出路徑和資料名稱,不支援 in_memory 工作空間作為編寫輸出資料集的位置。
④如果輸入的要素類或資料集具有"未知"或未指定的座標系,可以使用輸入座標系引數指定輸入資料集的座標系。 這樣,無需修改輸入資料就可以指定資料的座標系(當輸入資料為只讀格式時,可能無法修改)。 也可以使用定義投影工具永久性地為該資料集指定一個座標系。
⑤此工具的輸入不能是 Coverage、VPF Coverage、柵格資料集和柵格目錄。 使用投影柵格工具可以對柵格資料集進行投影。
上述四點注意事項是在常規使用中需要注意點,除此之外想要繼續深入的瞭解可以檢視投影變換官方幫助文件。
(四)地理投影變化的自定義
①橢球體不同帶來的問題
假設我們直接使用Project工具將wgs84座標系變換為CGS2000座標系,如圖1所示,在我輸入完幾個必填引數後,由於橢球體不同,此時地理轉換關係前面就出現了綠點,這個引數變成了必選引數,這是由於wgs84使用的是D_WGS_84橢球體而cgs2000使用的是D_China_2000橢球體
②自定義變換關係及檔案生成
在project工具中,地理變換關係引數沒有被識別出來,說明該gtf檔案不存在,這個時候就需要我們使用自定義工具來進行自定義,工具位置如圖4,點選工具後按照圖5進行引數設定,(由於我們的目標座標系是CGS2000,引數尚未開放,因此我這裡直接將轉換引數設定為0,0,0進行演示,如果需要這個引數可以向有關部門申請或者作為教育科研使用的情況下透過軟體進行引數反算,這裡不做贅述)。執行工具後我們就可以在對應路徑下找到gtf檔案(圖6),arcpro工具基本一致,無論是map還是pro都會在路徑下生產gtf檔案。
此時我們再使用project時,即可看到軟體自動識別到了我們剛剛自定義的轉換關係(圖7)