GIS中的座標系定義與轉換 (轉)

gugu99發表於2008-05-28
GIS中的座標系定義與轉換 (轉)[@more@]

  GIS中的座標系定義與轉換
 
  自 "Mnfo上的GIS開發"一文在世界網上刊登後,有好幾位網友向我詢問座標系定義與轉換方面的問題,問題可歸結為 (1) 地圖在Mapinfo上顯示得很好,但在MapX中卻顯示不出來或顯示得不對;(2) GPS定位得到的WGS84座標怎麼往北京54座標地圖上轉。這些問題也是曾經困惑我的問題,在此我談談我個人的一些認識及,供各位參考,也希望相關方面的專業人士能給予糾正及補充。

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個橢球體引數如下:

  橢球體  Mapinfo中代號  年代  長半軸   短半軸   1/扁率

  Krassovsky  3  1940  6378245  6356863  298.3
  IAG 75    31  1975   6378140  6356755   298.25722101
  WGS 84  28  1984  6378137.000  6356752.314  298.257223563

  橢球體與基準面之間的關係是一對多的關係,也就是基準面是在橢球體基礎上建立的,但橢球體不能代表基準面,同樣的橢球體能定義不同的基準面,如前蘇聯的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 Map Agency)公佈了世界大多數國家的當地基準面至WGS1984基準面的轉換3引數(平移引數),可從 ,其中包括有香港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(">)可下載到包含北京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], [Affranorm]) 

其中引數: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引數自定義基準面就行了。
 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-1004756/,如需轉載,請註明出處,否則將追究法律責任。

相關文章