坐標(biāo)系統(tǒng)和投影變換在ArcGIS桌面產(chǎn)品中的應(yīng)用 在我們了解了坐標(biāo)系統(tǒng)和投影的定義和其內(nèi)在的聯(lián)系后,本文著重總結(jié)一下坐標(biāo)系統(tǒng)和投影變換在桌面產(chǎn)品(版本9.2)中的應(yīng)用(分ArcMap、ArcCatalog、ArcToolBox三大主要應(yīng)用模塊)。 1、動態(tài)投影(ArcMap) 所謂動態(tài)投影指:改變ArcMap中的Data Frame(工作區(qū))的空間參考或是對后加入到ArcMap工作區(qū)中數(shù)據(jù)的投影變換。ArcMap的Data Frame(工作區(qū))的坐標(biāo)系統(tǒng)默認(rèn)為第一個加載到當(dāng)前Data Frame(工作區(qū))的那個文件的坐標(biāo)系統(tǒng),后加入的數(shù)據(jù),如果和當(dāng)前工作區(qū)坐標(biāo)系統(tǒng)不同,則ArcMap會自動做投影變換,把后加入的數(shù)據(jù)投影變換到當(dāng)前坐標(biāo)系統(tǒng)下顯示,但此時數(shù)據(jù)文件所存儲的實(shí)際數(shù)據(jù)坐標(biāo)值并沒有改變,只是顯示形態(tài)上的變化!因此叫動態(tài)投影。表現(xiàn)這一點(diǎn)最明顯的例子就是在Export Data時,用戶可以選擇是按this layer's source data(數(shù)據(jù)源的坐標(biāo)系統(tǒng)導(dǎo)出),還是按照the Data Frame(當(dāng)前工作區(qū)的坐標(biāo)系統(tǒng))導(dǎo)出數(shù)據(jù)。 關(guān)于ArcMap的這種動態(tài)投影機(jī)制,我們可以利用一個北京54投影坐標(biāo)系數(shù)據(jù)(鄉(xiāng)鎮(zhèn).shp)和<ArcGIS Installation Directory>/DeveloperKit/SamepleCom/data/World/目錄下的world30.shp數(shù)據(jù)來做一個實(shí)驗(yàn)說明。 鄉(xiāng)鎮(zhèn).shp數(shù)據(jù)的坐標(biāo)系統(tǒng)為北京54投影坐標(biāo)系(Krasovsky_1940_Transverse_Mercator)。在ArcMap或ArcCatalog中預(yù)覽形態(tài)如圖7所示: 圖7 北京54投影坐標(biāo)系數(shù)據(jù)單獨(dú)顯示幾何形態(tài) world30.shp數(shù)據(jù)的坐標(biāo)系統(tǒng)為WGS84坐標(biāo)系(GCS_WGS_1984)。在ArcMap或ArcCatalog中預(yù)覽形態(tài)如圖8所示: 圖8 WGS84坐標(biāo)系數(shù)據(jù)單獨(dú)顯示幾何形態(tài) 而在ArcMap中先加載北京54坐標(biāo)系數(shù)據(jù)后再加入WGS84坐標(biāo)系數(shù)據(jù),讓ArcMap對WGS84坐標(biāo)系數(shù)據(jù)進(jìn)行動態(tài)投影后兩數(shù)據(jù)疊加顯示效果如圖9所示: 圖9 ArcMap對WGS84數(shù)據(jù)進(jìn)行動態(tài)投影后的顯示狀態(tài) 可以非常明顯的看到ArcMap對WGS84數(shù)據(jù)做完動態(tài)投影后的數(shù)據(jù)幾何形態(tài)上的改變,并且此時從ArcMap右下角的狀態(tài)欄上也可以看到當(dāng)前Data Frame(工作空間)的坐標(biāo)系統(tǒng)為北京54平面投影坐標(biāo)系統(tǒng)。 反之在ArcMap中先加載WGS84坐標(biāo)系數(shù)據(jù)后再加入北京54坐標(biāo)系數(shù)據(jù),讓ArcMap對北京54坐標(biāo)系數(shù)據(jù)進(jìn)行動態(tài)投影后兩數(shù)據(jù)疊加顯示效果如圖10所示: 圖10 ArcMap對北京54坐標(biāo)系數(shù)據(jù)進(jìn)行動態(tài)投影后的顯示狀態(tài) 將在圖9中動態(tài)投影后的WGS84坐標(biāo)系統(tǒng)數(shù)據(jù)按系統(tǒng)框架坐標(biāo)系統(tǒng)導(dǎo)出后,單獨(dú)加載或預(yù)覽的數(shù)據(jù)幾何形態(tài)如圖11: 圖11 按北京54坐標(biāo)系統(tǒng)框架導(dǎo)出WGS84數(shù)據(jù)后的數(shù)據(jù)幾何形態(tài)顯示 通過上述實(shí)驗(yàn)?zāi)軌蚝芎玫恼f明ArcMap的動態(tài)投影特性。 2、坐標(biāo)系統(tǒng)描述(ArcCatalog) 大家都知道在ArcCatalog中可以給數(shù)據(jù)定義坐標(biāo)系統(tǒng)描述!即在數(shù)據(jù)上鼠標(biāo)右鍵->Properties->XY Coordinate System選項(xiàng)卡,這里可以通過New、Modify、Select、Import方式來為數(shù)據(jù)定義坐標(biāo)系統(tǒng)描述。但有許多用戶都認(rèn)為在這里定義了數(shù)據(jù)的坐標(biāo)系統(tǒng)信息后,其數(shù)據(jù)本身就發(fā)生了投影變換。其實(shí)不然,這里定義的數(shù)據(jù)坐標(biāo)系統(tǒng)信息都對應(yīng)到與該數(shù)據(jù)同名而后綴名為.prj的文件當(dāng)中!如果把該文件刪除,在ArcCatalog中重新查看(要在該數(shù)據(jù)的上層節(jié)點(diǎn)上Refresh刷新一下)該文件的坐標(biāo)信息時,一樣會顯示為Unknown,并且數(shù)據(jù)的坐標(biāo)值并沒有發(fā)生實(shí)質(zhì)上的投影變換,這里改的僅僅是對數(shù)據(jù)坐標(biāo)系統(tǒng)信息的一個描述而已,這就好比我們每個人的基本信息登記卡,更改了登記信息,但并沒有改變你這個人本身。因此數(shù)據(jù)文件中所存儲數(shù)據(jù)的坐標(biāo)值并沒有真正的投影變換到你想要更改到的坐標(biāo)系統(tǒng)下。 我們同樣拿上述的兩個數(shù)據(jù)做一下實(shí)驗(yàn),在ArcCatalog中更改world30.shp的坐標(biāo)系統(tǒng)描述,在world30.shp文件上鼠標(biāo)右鍵->Properties->XY Coordinate System選項(xiàng)卡中,通過Import方式導(dǎo)入鄉(xiāng)鎮(zhèn).shp文件的Krasovsky_1940_Transverse_Mercator投影坐標(biāo)系統(tǒng)描述,之后看一下結(jié)果圖12。 圖12 更改坐標(biāo)系統(tǒng)描述后的數(shù)據(jù)幾何形態(tài) 從上述示例我們可以很明顯的看到更改數(shù)據(jù)的坐標(biāo)系統(tǒng)描述并不能使數(shù)據(jù)做投影變換,從而使數(shù)據(jù)投影到平面上來,但該數(shù)據(jù)的prj文件已經(jīng)記錄了更改后的坐標(biāo)系統(tǒng)描述,PROJCS["Krasovsky_1940_Transverse_Mercator",GEOGCS["GCS_Krasovsky_1940",DATUM["D_Krasovsky_1940",SPHEROID["Krasovsky_1940",6378245.0,298.3]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",111.0],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]] Prj文件記錄了該投影坐標(biāo)系的詳細(xì)參數(shù)。 但對數(shù)據(jù)坐標(biāo)系統(tǒng)的這個描述也是非常重要的,如果我們拿到一份數(shù)據(jù),從ArcMap下所顯示的坐標(biāo)來看,像是投影坐標(biāo)系統(tǒng)下的平面坐標(biāo),但不知道是基于哪個橢球體的什么投影方法,因此就無法再對數(shù)據(jù)做進(jìn)一步的處理,如:投影變換、量測等操作。因?yàn)槲覀儫o法得知從什么坐標(biāo)系統(tǒng)下開始變換,以及該坐標(biāo)系統(tǒng)下的量測單位是什么。 因此大家一定要更正對ArcCatalog中數(shù)據(jù)屬性中關(guān)于坐標(biāo)系統(tǒng)描述的認(rèn)識。 3、投影變換(ArcToolBox) 上面說了這么多,可能有人要問:“要真正的改變數(shù)據(jù)的坐標(biāo)值該怎么辦?”也就是做真正的投影變換。在ArcToolBox->Data Management Tools->Projections and Transformations中提供了如下工具: 在這個工具集下有這么幾個工具最為常用: 1、Define Projection 2、Feature->Project 3、Raster->Project Raster 4、Create Custom Geographic Transformation 當(dāng)數(shù)據(jù)在沒有任何空間參考信息時,在ArcCatalog的坐標(biāo)系統(tǒng)描述(XY Coordinate System)選項(xiàng)卡中會顯示為Unknown!這時如果要對數(shù)據(jù)進(jìn)行投影變換就要先利用Define Projection工具來給數(shù)據(jù)定義一個Coordinate System,然后再利用Feature->Project或Raster->Project Raster工具來對數(shù)據(jù)進(jìn)行投影變換! 由于我們國家經(jīng)常使用的坐標(biāo)系統(tǒng)為北京54和西安80。這兩個坐標(biāo)系統(tǒng)變換到其他坐標(biāo)系統(tǒng)下時,通常需要提供一個Geographic Transformation,因?yàn)椴煌队八诘臋E球體及Datum不同!關(guān)鍵是Datum不同,也就是說當(dāng)兩個投影基于不同的Datum時就需要制定參數(shù)做Geographic Transformation。這里就用到我們前面所說的轉(zhuǎn)換3參數(shù)、轉(zhuǎn)換7參數(shù)了(三個平移參數(shù)ΔX、ΔY、ΔZ表示兩坐標(biāo)原點(diǎn)的平移值;三個旋轉(zhuǎn)參數(shù)εx、εy、εz表示當(dāng)?shù)刈鴺?biāo)系旋轉(zhuǎn)至與地心坐標(biāo)系平行時,分別繞Xt、Yt、Zt的旋轉(zhuǎn)角;最后是比例校正因子,用于調(diào)整橢球大?。覀儑业霓D(zhuǎn)換參數(shù)是保密的,因此可以自己計(jì)算或在購買數(shù)據(jù)時向國家測繪部門索要。 實(shí)際工作中一般都根據(jù)工作區(qū)內(nèi)已知的北京54坐標(biāo)控制點(diǎn)計(jì)算轉(zhuǎn)換參數(shù),如果工作區(qū)內(nèi)有足夠多的已知北京54與WGS84坐標(biāo)控制點(diǎn),可直接計(jì)算坐標(biāo)轉(zhuǎn)換所需的7參數(shù)或3參數(shù);當(dāng)工作區(qū)內(nèi)有3個已知北京54與WGS84坐標(biāo)控制點(diǎn)時,可用下式計(jì)算WGS84到北京54坐標(biāo)的轉(zhuǎn)換參數(shù)(A、B、C、D、E、F): x54 = AX84 + BY84 + C y54 = DX84 + EY84 + F 多余一點(diǎn)用作檢驗(yàn);在只有一個已知控制點(diǎn)的情況下(往往如此),用已知點(diǎn)的北京54與WGS84坐標(biāo)之差作為平移參數(shù),當(dāng)工作區(qū)范圍不大時精度也足夠了。 那么當(dāng)精度要求較高,實(shí)測數(shù)據(jù)為WGS1984坐標(biāo)數(shù)據(jù)時,欲轉(zhuǎn)換到北京54基準(zhǔn)面的高斯-克呂格投影坐標(biāo),如何定義坐標(biāo)系參數(shù)呢?你可選擇WGS 1984作為基準(zhǔn)面,當(dāng)只有一個已知控制點(diǎn)時,根據(jù)平移參數(shù)調(diào)整東偽偏移、北緯偏移值實(shí)現(xiàn)WGS84到北京54的轉(zhuǎn)換,此時的轉(zhuǎn)換系數(shù)(A、B、C、D、E、F)中A、B、D、E為0,只有X、Y方向的平移值C、F ;當(dāng)有3個已知控制點(diǎn)時,可利用得到的轉(zhuǎn)換系數(shù)(A、B、C、D、E、F)定義 AffineTransform坐標(biāo)系變換對象,實(shí)現(xiàn)坐標(biāo)系的轉(zhuǎn)換,當(dāng)然有足夠多已知控制點(diǎn)時,直接求定7參數(shù)自定義基準(zhǔn)面就行了。 Geographic Transformation通常需要指定變換方向的,如果沒有指定變換的方向,ArcMap會自動正確應(yīng)用變換方法如從WGS 1984到 NAD1927,我們就可以選擇NAD_1927_to_WGS_1984_3這種變換方法,ArcMap會自動判定轉(zhuǎn)換方向從而正確實(shí)現(xiàn)數(shù)據(jù)的投影變換。有些變換方法是先把地理坐標(biāo)系(經(jīng)緯度)變換到地心坐標(biāo)系(X Y Z),然后再將地心坐標(biāo)系坐標(biāo)(X Y Z),變換到地理坐標(biāo)系統(tǒng),圖13。 地理坐標(biāo)系統(tǒng) 地心坐標(biāo)系統(tǒng) 地理坐標(biāo)系統(tǒng) 圖13 從地理坐標(biāo)系統(tǒng)變換到地心坐標(biāo)系統(tǒng)再到地理坐標(biāo)系統(tǒng) Geocentric Transformation(3參數(shù))、Coordinate Frame(7參數(shù))、Molodensky-Badekas(10參數(shù),是7參數(shù)變換方法的一種變體,多了定義XYZ旋轉(zhuǎn)軸的起始位置)都是這樣的方法。 Molodensky(3參數(shù))和Abridged Molodensky(3參數(shù)是Molodensky方法的一種變體)變化方法則是直接在不同的地理坐標(biāo)系統(tǒng)下進(jìn)行變換無需借助地心坐標(biāo)系進(jìn)行轉(zhuǎn)換。那么上述的這些方法的精度取決與用于定義轉(zhuǎn)換參數(shù)的控制點(diǎn)的質(zhì)量個數(shù)及選擇的變換方法,精度相差可從厘米到米。 美國國家大地測量局用一種基于格網(wǎng)的變換方法(NADCON和HARN)在NAD1927和NAD1983及其他地理坐標(biāo)系統(tǒng)下做變換,彼此相臨的州的精度可達(dá)0.15米,阿拉斯加州及周邊島嶼的精度可達(dá)0.5米,夏威夷地區(qū)精度可達(dá)0.2米等等,精度取決于計(jì)算柵格大小時測量數(shù)據(jù)的質(zhì)量。隨著衛(wèi)星測距和測量技術(shù)的改善,美國在更新了測量控制網(wǎng)后,推出了這種High Accuracy Reference Network (HARN)方法或說是柵格格網(wǎng),其精度可達(dá)0.05米。 加拿大采用同NADCON類似的基于格網(wǎng)的方法(NTV2)在NAD 1927 和 NAD 1983之間做變換,這種方法采用了雙線性內(nèi)插的方法來計(jì)算點(diǎn)的坐標(biāo)。關(guān)于這兩種方法本文不做更多描述,詳細(xì)信息可參考ArcGIS幫助。 知道轉(zhuǎn)換參數(shù)后,可以利用Create Custom Geographic Transformation工具來定義一個Geographic Transformation方法,變換方法可以根據(jù)已知的轉(zhuǎn)換參數(shù)個數(shù)選擇變換方法,這就完成了對數(shù)據(jù)的投影變換,數(shù)據(jù)本身坐標(biāo)值就發(fā)生了變化。當(dāng)然這種投影變換工作也可以在ArcMap中通過改變Data Frame的Coordinate System來實(shí)現(xiàn),只是要在做完之后按照Data Frame的坐標(biāo)系統(tǒng)導(dǎo)出數(shù)據(jù)即可,即為做“動態(tài)投影變換”。 相關(guān)的實(shí)驗(yàn)可選用ArcTutor(ArcDesktop中的練習(xí)數(shù)據(jù))中的WGS84和NAD1927或NAD1983數(shù)據(jù)進(jìn)行試驗(yàn)。 World files文件 1、CAD world files 該文件在ArcGIS中對于CAD來說,是定義了2個點(diǎn)之間的相似變換的坐標(biāo)對。即源點(diǎn)、目標(biāo)點(diǎn)坐標(biāo)值,一般來說源數(shù)據(jù)點(diǎn)的坐標(biāo)是CAD圖層上一個已知控制點(diǎn)(也可以是任意點(diǎn))的坐標(biāo),而目標(biāo)點(diǎn)的坐標(biāo)值為想要該已知點(diǎn)重新定位到的坐標(biāo)值。 CAD的world files文件是一個以wld為后綴的文本文件。因此我們可以用記事本或?qū)懽职迦我鈩?chuàng)建或編輯world files文件,從而對CAD數(shù)據(jù)進(jìn)行正確的配準(zhǔn)和矯正。world file文件的示例如圖14所示: 圖14 world file文件示例 CAD world file里的坐標(biāo)對最多只有四對,即做一個2點(diǎn)的變換,world file文件既可以通過我們自己用文件編輯工具進(jìn)行創(chuàng)建,同樣ArcGIS也支持world file文件的創(chuàng)建與保存和加載等操作。在ArcMap中可以借助Georeferencing工具條的Add Contorl Point來增加控制點(diǎn)的映射關(guān)系(源和目標(biāo)點(diǎn)),通過View Link Table打開Link Table對話框,利用Save工具按鈕可以將建立好的Link關(guān)系保存成world file文件,或是使用Update Georeferencing菜單來保存Link關(guān)系從而生成world file文件。 一個CAD只能有一個world file文件,如果該數(shù)據(jù)集已經(jīng)有了world file文件,則上述的Save或是Update Georeferencing操作將重寫現(xiàn)有的world file文件。 ArcMap在加載CAD數(shù)據(jù)時,如果該數(shù)據(jù)有world file文件,ArcMap將使用world file所定義的轉(zhuǎn)換關(guān)系對整個數(shù)據(jù)集的數(shù)據(jù)做變換。 2、Raster world files 影像數(shù)據(jù)的投影及坐標(biāo)系統(tǒng)原理與矢量數(shù)據(jù)一致,只是因?yàn)槠浯鎯Ψ绞绞且詵鸥裥辛行问酱鎯Φ模虼诵枰獙鸥駭?shù)據(jù)與現(xiàn)實(shí)世界的坐標(biāo)系建立起一個聯(lián)系,因此部分影像數(shù)據(jù)也具有world file文件,之所以說部分影像具有world file文件是因?yàn)镋RDAS, IMAGINE, BSQ, BIL, BIP, GeoTIFF和Grid影像是在其頭文件中記錄了數(shù)據(jù)的地理參考信息。 其他格式的影像則用一個獨(dú)立的ASCII碼的world file文件,其中記錄著影像與real-world的坐標(biāo)變換信息。其命名規(guī)范為文件名稱與數(shù)據(jù)文件同名,后綴取影像格式后綴的第一第三個字符和w組成或直接在其后加‘w’字符,對于沒有后綴或后綴不足3個字符的情況也采取在其命名后直接加‘w’表示,如圖15所示: 表15 world file文件命名示例 在ArcGIS 9.2 SP2中,如果無法用world file文件來記錄這些變換信息,則Georeferencing 工具條的Update Georeferencing操作將把這些變換信息寫進(jìn)一個aux.xml文件中,并把這種仿射變換信息記錄于一個文本文件中或是后綴擴(kuò)展名以x結(jié)尾的文件中。如果對一個已經(jīng)存在地圖坐標(biāo)系統(tǒng)信息的影像文件進(jìn)行Update Georeferencing操作,則會生成一個以‘x’結(jié)尾的文件,用于記錄真正的仿射變換信息(圖16)。這個文件只需要把最后的‘x’字符刪去,該文件便可在ArcGIS 9.1或是在沒有ArcGIS軟件的環(huán)境下使用。 圖16 對已有坐標(biāo)系統(tǒng)信息的影像進(jìn)行world file命名的示例 影像文件的world file文件示例如下: 20.17541308822119 0.00000000000000 0.00000000000000 -20.17541308822119 424178.11472601280548 4313415.90726399607956 應(yīng)用如下公式來表達(dá)image-to-world的6參數(shù)仿射變換 x1 = Ax + By + C y1 = Dx + Ey + F 各參數(shù)意義如下: X1、Y1待求的影像上某一像素的地理坐標(biāo) A、E分別為影像的每一像素點(diǎn)代表的X、Y方向上的分辨率 B、 D旋轉(zhuǎn)參數(shù) C、 F為影像左上角點(diǎn)的地理坐標(biāo)值 通過上述6個參數(shù),我們可以計(jì)算影像上任一像素點(diǎn)的真實(shí)地理坐標(biāo)。這里 需要特別注意的一點(diǎn)是E參數(shù)之所以為負(fù)值,是由于影像坐標(biāo)系和真實(shí)世界坐標(biāo)系的Y軸方向相反,影像坐標(biāo)的原點(diǎn)為影像左上角點(diǎn),且Y軸正方向向下,而真實(shí)世界的坐標(biāo)系統(tǒng)原點(diǎn)在左下角且Y軸正方向向上所致。影像數(shù)據(jù)的world file文件的制作和保存及Load操作跟CAD數(shù)據(jù)的world file文件方法相同,在此不敖述。 還需要注意的是ArcGIS會自動讀取某些影像頭文件(Geotiff)中的空間參考信息,從而會重寫world file文件中的信息,因此可以設(shè)置選用world file文件來定義影像的坐標(biāo)系統(tǒng),通過勾選Tools->Options->Raster->General選項(xiàng)卡下的Use world file to define the coordinates of the raster選項(xiàng)即可。
|