一、北京54坐標到西安80坐標轉換小結
1、北京54和西安80是兩種不同的大地基準面,不同的參考橢球體,因而兩種地圖下,同一個點的坐標是不同的,無論是三度帶六度帶坐標還是經緯度坐標都是不同的。
2、數字化后的得到的坐標其實不是WGS84的經緯度坐標,因為54和80的轉換參數至今沒有公布,一般的軟件中都沒有54或80投影系的選項,往往會選擇WGS84投影。
3、WGS84、北京54、西安80之間,沒有現成的公式來完成轉換。
4、對于54或80坐標,從經緯度到平面坐標(三度帶或六度帶)的相互轉換可以借助軟件完成。
5、54和80間的轉換,必須借助現有的點和兩種坐標,推算出變換參數,再對待轉換坐標進行轉換。(均靠軟件實現)
6、在選擇參考點時,注意不能選取河流、等高線、地名、高程點,公路盡量不選。這些在兩幅地圖上變化很大,不能用作參考。而應該選擇固定物,如電站,橋梁等。
二、西安80坐標系與北京54坐標系轉換
西安80坐標系與北京54坐標系其實是一種橢球參數的轉換作為這種轉換在同一個橢球里的轉換都是嚴密的,而在不同的橢球之間的轉換是不嚴密,因此不存在一套轉換參數可以全國通用的,在每個地方會不一樣,因為它們是兩個不同的橢球基準。那么,兩個橢球間的坐標轉換,一般而言比較嚴密的是用七參數布爾莎模型,即 X 平移, Y 平移, Z 平移, X 旋轉(WX), Y 旋轉(WY), Z 旋轉(WZ),尺度變化(DM )。要求得七參數就需要在一個地區需要 3 個以上的已知點。如果區域范圍不大, 最遠點間的距離不大于 30Km( 經驗值),這可以用三參數,即 X 平移, Y 平移, Z 平移,而將 X 旋轉, Y 旋轉, Z 旋轉,尺度變化面DM視為 0 。
在MAPGIS平臺中實現步驟:
第一步:向地方測繪局(或其它地方)找本區域三個公共點坐標對(即54坐標x,y,z和80坐標x,y,z);
第二步:將三個點的坐標對全部轉換以弧度為單位。(菜單:投影轉換/輸入單點投影轉換,計算出這三個點的弧度值并記錄下來)
第三步:求公共點求操作系數(菜單:投影轉換/坐標系轉換)。如果求出轉換系數后,記錄下來。
第四步:編輯坐標轉換系數。(菜單:投影轉換/編輯坐標轉換系數。)最后進行投影變換,“當前投影”輸入80坐標系參數,“目的投影”輸入54坐標系參數。進行轉換時系統會自動調用曾編輯過的坐標轉換系數。
三、地理坐標系與投影坐標系的區別
1、首先理解地理坐標系(Geographic coordinate system),Geographic coordinate system直譯為地理坐標系統,是以經緯度為地圖的存儲單位的。很明顯,Geographic coordinate system是球面坐標系統。我們要將地球上的數字化信息存放到球面坐標系統上,如何進行操作呢?地球是一個不規則的橢球,如何將數據信息以科學的方法存放到橢球上?這必然要求我們找到這樣的一個橢球體。這樣的橢球體具有特點:可以量化計算的。具有長半軸,短
半軸,偏心率。以下幾行便是Krasovsky_1940橢球及其相應參數。
Spheroid: Krasovsky_1940
Semimajor Axis: 6378245.000000000000000000
Semiminor Axis: 6356863.018773047300000000
Inverse Flattening(扁率): 298.300000000000010000
然而有了這個橢球體以后還不夠,還需要一個大地基準面將這個橢球定位。在坐標系統描述中,可以看到有這么一行:
Datum: D_Beijing_1954
表示,大地基準面是D_Beijing_1954。
有了Spheroid和Datum兩個基本條件,地理坐標系統便可以使用。
完整參數:
Alias:
Abbreviation:
Remarks:
Angular Unit: Degree (0.017453292519943299)
Prime Meridian(起始經度): Greenwich (0.000000000000000000)
Datum(大地基準面): D_Beijing_1954
Spheroid(參考橢球體): Krasovsky_1940
Semimajor Axis: 6378245.000000000000000000
Semiminor Axis: 6356863.018773047300000000
Inverse Flattening: 298.300000000000010000
2、接下來便是Projection coordinate system(投影坐標系統),首先看看投影坐標系統中的一些參數。
Projection: Gauss_Kruger
Parameters:
False_Easting: 500000.000000
False_Northing: 0.000000
Central_Meridian: 117.000000
Scale_Factor: 1.000000
Latitude_Of_Origin: 0.000000
Linear Unit: Meter (1.000000)
Geographic Coordinate System:
Name: GCS_Beijing_1954
Alias:
Abbreviation:
Remarks:
Angular Unit: Degree (0.017453292519943299)
Prime Meridian: Greenwich (0.000000000000000000)
Datum: D_Beijing_1954
Spheroid: Krasovsky_1940
Semimajor Axis: 6378245.000000000000000000
Semiminor Axis: 6356863.018773047300000000
Inverse Flattening: 298.300000000000010000
從參數中可以看出,每一個投影坐標系統都必定會有Geographic Coordinate System。
投影坐標系統,實質上便是平面坐標系統,其地圖單位通常為米。
那么為什么投影坐標系統中要存在坐標系統的參數呢?
這時候,又要說明一下投影的意義:將球面坐標轉化為平面坐標的過程便稱為投影。
好了,投影的條件就出來了:
a、球面坐標
b、轉化過程(也就是算法)
也就是說,要得到投影坐標就必須得有一個“拿來”投影的球面坐標,然后才能使用算法去投影!
即每一個投影坐標系統都必須要求有Geographic Coordinate System參數。
3、我們現在看到的很多教材上的對坐標系統的稱呼很多,都可以歸結為上述兩種投影。其中包括我們常見的“非地球投影坐標系統”。):
大地坐標(Geodetic Coordinate):大地測量中以參考橢球面為基準面的坐標。地面點P的位置用大地經度L、大地緯度B和大地高H表示。當點在參考橢球面上時,僅用大地經度和大地緯度表示。大地經度是通過該點的大地子午面與起始大地子午面之間的夾角,大地緯度是通過該點的法線與赤道面的夾角,大地高是地面點沿法線到參考橢球面的距離。
方里網:是由平行于投影坐標軸的兩組平行線所構成的方格網。因為是每隔整公里繪出坐標縱線和坐標橫線,所以稱之為方里網,由于方里線同時又是平行于直角坐標軸的坐標網線,故又稱直角坐標網。
在1:1萬——1:20萬比例尺的地形圖上,經緯線只以圖廓線的形式直接表現出來,并在圖角處注出相應度數。為了在用圖時加密成網,在內外圖廓間還繪有加密經緯網的加密分劃短線(圖式中稱“分度帶”),必要時對應短線相連就可以構成加密的經緯線網。1:2 5萬地形圖上,除內圖廓上繪有經緯網的加密分劃外,圖內還有加密用的十字線。
我國的1:50萬——1:100萬地形圖,在圖面上直接繪出經緯線網,內圖廓上也有供加密經緯線網的加密分劃短線。
直角坐標網的坐標系以中央經線投影后的直線為X軸,以赤道投影后的直線為Y軸,它們的交點為坐標原點。這樣,坐標系中就出現了四個象限。縱坐標從赤道算起向北為正、向南為負;橫坐標從中央經線算起,向東為正、向西為負。
雖然我們可以認為方里網是直角坐標,大地坐標就是球面坐標。但是我們在一副地形圖上經常見到方里網和經緯度網,我們很習慣的稱經緯度網為大地坐標,這個時候的大地坐標不是球面坐標,她與方里網的投影是一樣的(一般為高斯),也是平面坐標
四、GIS中的坐標系定義與轉換
1. 橢球體、基準面及地圖投影
GIS中的坐標系定義是GIS系統的基礎,正確定義GIS系統的坐標系非常重要。GIS中的坐標系定義由基準面和地圖投影兩組參數確定,而基準面的定義則由特定橢球體及其對應的轉換參數確定,因此欲正確定義GIS系統坐標系,首先必須弄清地球橢球體(Ellipsoid)、大地基準面(Datum)及地圖投影(Projection)三者的基本概念及它們之間的關系。
基準面是利用特定橢球體對特定地區地球表面的逼近,因此每個國家或地區均有各自的基準面,我們通常稱謂的北京54坐標系、西安80坐標系實際上指的是我國的兩個大地基準面。我國參照前蘇聯從1953年起采用克拉索夫斯基(Krassovsky)橢球體建立了我國的北京54坐標系,1978年采用國際大地測量協會推薦的1975地球橢球體建立了我國新的大地坐標系--西安80坐標系,目前大地測量基本上仍以北京54坐標系作為參照,北京54與西安80坐標之間的轉換可查閱國家測繪局公布的對照表。 WGS1984基準面采用WGS84橢球體,它是一地心坐標系,即以地心作為橢球體中心,目前GPS測量數據多以WGS1984為基準。
上述3個橢球體參數如下:
橢球體與基準面之間的關系是一對多的關系,也就是基準面是在橢球體基礎上建立的,但橢球體不能代表基準面,同樣的橢球體能定義不同的基準面,如前蘇聯的Pulkovo 1942、非洲索馬里的Afgooye基準面都采用了Krassovsky橢球體,但它們的基準面顯然是不同的。
地圖投影是將地圖從球面轉換到平面的數學變換,如果有人說:該點北京54坐標值為X=4231898,Y=21655933,實際上指的是北京54基準面下的投影坐標,也就是北京54基準面下的經緯度坐標在直角平面坐標上的投影結果。
2. GIS中基準面的定義與轉換
雖然現有GIS平臺中都預定義有上百個基準面供用戶選用,但均沒有我們國家的基準面定義。假如精度要求不高,可利用前蘇聯的Pulkovo 1942基準面(Mapinfo中代號為1001)代替北京54坐標系;假如精度要求較高,如土地利用、海域使用、城市基建等GIS系統,則需要自定義基準面。
GIS系統中的基準面通過當地基準面向WGS1984的轉換7參數來定義,轉換通過相似變換方法實現,具體算法可參考科學出版社1999年出版的《城市地理信息系統標準化指南》第76至86頁。假設Xg、Yg、Zg表示WGS84地心坐標系的三坐標軸,Xt、Yt、Zt表示當地坐標系的三坐標軸,那么自定義基準面的7參數分別為:三個平移參數ΔX、ΔY、ΔZ表示兩坐標原點的平移值;三個旋轉參數εx、εy、εz表示當地坐標系旋轉至與地心坐標系平行時,分別繞Xt、Yt、Zt的旋轉角;最后是比例校正因子,用于調整橢球大小。
MapX中基準面定義方法如下:
Datum.Set(Ellipsoid, ShiftX, ShiftY, ShiftZ, RotateX, RotateY, RotateZ, ScaleAdjust, PrimeMeridian)
其中參數: Ellipsoid為基準面采用的橢球體;
ShiftX, ShiftY, ShiftZ為平移參數;
RotateX, RotateY, RotateZ為旋轉參數;
ScaleAdjust為比例校正因子,以百萬分之一計;
PrimeMeridian為本初子午線經度,在我國取0,表示經度從格林威治起算。
美國國家測繪局(National Imagery and Mapping Agency)公布了世界大多數國家的當地基準面至WGS1984基準面的轉換3參數(平移參數),可從 http://164.214.2.59/GandG/wgs84dt/dtp.html 下載,其中包括有香港Hong Kong 1963基準面、臺灣 Hu-Tzu-Shan 基準面的轉換3參數,但是沒有中國大陸的參數。
實際工作中一般都根據工作區內已知的北京54坐標控制點計算轉換參數,如果工作區內有足夠多的已知北京54與WGS84坐標控制點,可直接計算坐標轉換的7參數或3參數;當工作區內有3個已知北京54與WGS84坐標控制點時,可用下式計算WGS84到北京54坐標的轉換參數(A、B、C、D、E、F):x54 = AX84 + BY84 + C,y54 = DX84 + EY84 + F,多余一點用作檢驗;在只有一個已知控制點的情況下(往往如此),用已知點的北京54與WGS84坐標之差作為平移參數,當工作區范圍不大時精度也足夠了。
從Mapinfo中國的URL(http://www./download)可下載到包含北京54、西安80坐標系定義的Mapinfow.prj文件,其中定義的北京54基準面參數為:(3,24,-123,-94,-0.02,0.25,0.13,1.1,0),西安80基準面參數為:(31,24,-123,-94,-0.02,0.25,0.13,1.1,0),文件中沒有注明其參數的來源,我發現它們與Mapinfo參考手冊附錄G"定義自定義基準面"中的一個例子所列參數相同,因此其可靠性值得懷疑,尤其從西安80與北京54采用相同的7參數來看,至少西安80的基準面定義肯定是不對的。因此,當系統精度要求較高時,一定要對所采用的參數進行檢測、驗證,確保坐標系定義的正確性。
3. GIS中地圖投影的定義
我國的基本比例尺地形圖(1:5千,1:1萬,1:2.5萬,1:5萬,1:10萬,1:25萬,1:50萬,1:100萬)中,大于等于50萬的均采用高斯-克呂格投影(Gauss-Kruger),又叫橫軸墨卡托投影(Transverse Mercator);小于50萬的地形圖采用正軸等角割園錐投影,又叫蘭勃特投影(Lambert Conformal Conic);海上小于50萬的地形圖多用正軸等角園柱投影,又叫墨卡托投影(Mercator),我國的GIS系統中應該采用與我國基本比例尺地形圖系列一致的地圖投影系統。
在MapX中坐標系定義由基準面、投影兩部分參數組成,方法如下:
CoordSys.Set(Type, [Datum], [Units], [OriginLongitude], [OriginLatitude],
[StandardParallelOne], [StandardParallelTwo], [Azimuth], [ScaleFactor],
[FalseEasting], [FalseNorthing], [Range], [Bounds], [AffineTransform])
其中參數:Type表示投影類型,Type為1時地圖坐標以經緯度表示,它是必選參數,它后面的參數都為可選參數;
Datum為大地基準面對象,如果采用非地球坐標(NonEarth)無需定義該參數;
Units為坐標單位,如Units為7表示以米為單位;
OriginLongitude、OriginLatitude分別為原點經度和緯度;
StandardParallelOne、StandardParallelTwo為第一、第二標準緯線;
Azimuth為方位角,斜軸投影需要定義該參數;
ScaleFactor為比例系數;
FalseEasting, FalseNorthing為東偽偏移、北偽偏移值;
Range為地圖可見緯度范圍;
Bounds為地圖坐標范圍,是一矩形對象,非地球坐標(NonEarth)必須定義該參數;
AffineTransform為坐標系變換對象。
相應高斯-克呂格投影、蘭勃特投影、墨卡托投影需要定義的坐標系參數序列如下:
高斯-克呂格:投影代號(Type),基準面(Datum),單位(Unit),
中央經度(OriginLongitude),原點緯度(OriginLatitude),
比例系數(ScaleFactor),
東偽偏移(FalseEasting),北緯偏移(FalseNorthing)
蘭勃特: 投影代號(Type),基準面(Datum),單位(Unit),
中央經度(OriginLongitude),原點緯度(OriginLatitude),
標準緯度1(StandardParallelOne),標準緯度2(StandardParallelTwo),
東偽偏移(FalseEasting),北緯偏移(FalseNorthing)
墨卡托: 投影代號(Type),基準面(Datum),單位(Unit),
原點經度(OriginLongitude),原點緯度(OriginLatitude),
標準緯度(StandardParallelOne)
在城市GIS系統中均采用6度或3度分帶的高斯-克呂格投影,因為一般城建坐標采用的是6度或3度分帶的高斯-克呂格投影坐標。高斯-克呂格投影以6度或3度分帶,每一個分帶構成一個獨立的平面直角坐標網,投影帶中央經線投影后的直線為X軸(縱軸,緯度方向),赤道投影后為Y軸(橫軸,經度方向),為了防止經度方向的坐標出現負值,規定每帶的中央經線西移500公里,即東偽偏移值為500公里,由于高斯-克呂格投影每一個投影帶的坐標都是對本帶坐標原點的相對值,所以各帶的坐標完全相同,因此規定在橫軸坐標前加上帶號,如(4231898,21655933)其中21即為帶號,同樣所定義的東偽偏移值也需要加上帶號,如21帶的東偽偏移值為21500000米。
假如你的工作區位于21帶,即經度在120度至126度范圍,該帶的中央經度為123度,采用Pulkovo 1942基準面,那么定義6度分帶的高斯-克呂格投影坐標系參數為:(8,1001,7,123,0,1,21500000,0)。
那么當精度要求較高,實測數據為WGS1984坐標數據時,欲轉換到北京54基準面的高斯-克呂格投影坐標,如何定義坐標系參數呢?你可選擇WGS 1984(Mapinfo中代號104)作為基準面,當只有一個已知控制點時(見第2部分),根據平移參數調整東偽偏移、北緯偏移值實現WGS84到北京54的轉換,如: (8,104,7,123,0,1,21500200,-200),也可利用 AffineTransform坐標系變換對象,此時的轉換系數(A、B、C、D、E、F)中A、B、D、E為0,只有X、Y方向的平移值C、F ;當有3個已知控制點時,可利用得到的轉換系數(A、B、C、D、E、F)定義 AffineTransform坐標系變換對象,實現坐標系的轉換,如:(8,104,7,123,0,1,21500000,0,map.AffineTransform),其中AffineTransform定義為AffineTransform.set(7,A、B、C、D、E、F)(7表示單位米);當然有足夠多已知控制點時,直接求定7參數自定義基準面就行了。
.userData { BEHAVIOR. url(#default#userdata) }
(http://tieba.baidu.com/f?kz=354009166)