湯 曦 王 義
(中鐵二院工程集團(tuán)有限責(zé)任公司, 成都 610031)
目前我國鐵路有基于北京1954坐標(biāo)系、西安1980坐標(biāo)系、CGCS2000坐標(biāo)系等多種規(guī)格的測繪成果資料,然而,此類成果資料在應(yīng)用時(shí)需進(jìn)行大量的空間坐標(biāo)及數(shù)據(jù)格式的轉(zhuǎn)換,造成了數(shù)據(jù)管理和應(yīng)用的困難[1-2]及資源浪費(fèi)。
針對這一問題,本文提出對多源多態(tài)數(shù)據(jù)4D產(chǎn)品即數(shù)字正射影像(DOM)、數(shù)字高程模型(DEM)、柵格地圖(DRG)、數(shù)字線劃圖(DLG)、衛(wèi)星遙感影像及其RPC參數(shù)定向文件、航空攝影影像及其相關(guān)定向文件(像主點(diǎn)、POS數(shù)據(jù)等)、空三加密成果等進(jìn)行基于統(tǒng)一空間坐標(biāo)系的數(shù)據(jù)管理。采取了主流的ArcGIS平臺為依托,基于ArcGIS平臺二次開發(fā)接口實(shí)現(xiàn)數(shù)據(jù)檢查、坐標(biāo)系轉(zhuǎn)換、格式轉(zhuǎn)換以及入庫等功能。同時(shí)為保證坐標(biāo)轉(zhuǎn)換的精度和效率,本文采用通過數(shù)學(xué)逼近模型和控制點(diǎn)進(jìn)行數(shù)值變換,并做了相應(yīng)的精度驗(yàn)證試驗(yàn)[3-4]。
多源數(shù)據(jù)包括多尺度的DLG(包括dwg、dxf、Shapefile和geodatabase中矢量數(shù)據(jù)集),DEM(NSDTF國標(biāo)格式、tif格式和 grid格式)、DOM(包含 tiff和geotiff格式)等。在將數(shù)據(jù)按照數(shù)據(jù)類型進(jìn)行格式轉(zhuǎn)換的過程中,為保持?jǐn)?shù)據(jù)的兼容性,入庫數(shù)據(jù)中影像統(tǒng)一轉(zhuǎn)換為geotiff格式,矢量統(tǒng)一轉(zhuǎn)換為Shapefile格式,轉(zhuǎn)換中保持?jǐn)?shù)據(jù)不壓縮,保證原有的數(shù)據(jù)信息不損失[5]。
1.2.1 參數(shù)轉(zhuǎn)換模型
七參數(shù)模型即7個(gè)未知數(shù)構(gòu)成的具備平移、旋轉(zhuǎn)、縮放功能為一體的函數(shù),由3個(gè)平移因子(ΔX,ΔY,ΔZ)、3個(gè)旋轉(zhuǎn)角度因子(Δα,Δβ,Δγ)和 1個(gè)縮放參數(shù)K組成。在旋轉(zhuǎn)角度不大的情況下求解模型時(shí),把旋轉(zhuǎn)矩陣采取線性化的操作即可。然而,角度較大的情況下,坐標(biāo)轉(zhuǎn)換會造成精度損失[6]。空間坐標(biāo)轉(zhuǎn)換的擬合函數(shù)是一個(gè)矩陣函數(shù),但可將其轉(zhuǎn)化成超定非線性方程組,繼而應(yīng)用非線性最小二乘算法求解。本文采用一種基于非線性最小二乘的坐標(biāo)換算方法得到七參數(shù)[7],該方法更容易收斂、不隨初始值變化、操作簡單便捷、容易實(shí)現(xiàn)。
以選取3個(gè)已知點(diǎn)坐標(biāo),組成9個(gè)方程為例進(jìn)行求解,具體步驟如下:
(1)擬合矩陣函數(shù)
空間三維坐標(biāo)轉(zhuǎn)換模型為:
式中:x1,x2,x3——平移矩陣的 3 個(gè)分量;
x4——尺度參數(shù);
x——某點(diǎn)轉(zhuǎn)換前的三維坐標(biāo);
y——該點(diǎn)轉(zhuǎn)換后的三維坐標(biāo)。
(2)最小二乘原理確定七參數(shù)
等價(jià)于求式(3)的極小值問題。
(3)求解多元函數(shù)的極小值
將給定值作為已知條件進(jìn)行迭代,在迭代計(jì)算的整個(gè)過程中符合選定條件時(shí)停止,得到七參數(shù)值。
1.2.2 相同橢球投影轉(zhuǎn)換模型
本文投影轉(zhuǎn)換采用常用的高斯正反算模型,其數(shù)學(xué)模型如下:
(1)高斯投影正算公式
式中:X——子午線弧長。
(2)高斯投影反算公式
式中:ηf、tf——分別為按Bf值計(jì)算的相應(yīng)量;
Bf——表底點(diǎn)緯度;
a——橢球體長半軸;
b——橢球體短半軸;
f——橢球體扁率;
e——橢球體第一偏心率;
e′——橢球體第二偏心率;
B——橢球體緯度;
M——子午圈的曲率半徑;
N——卯酉圈的曲率半徑[8]。
1.2.3 轉(zhuǎn)換流程
本文的數(shù)據(jù)可以分成矢量和柵格兩大類。對于不同橢球基準(zhǔn)間的坐標(biāo)轉(zhuǎn)換,首先要利用公共控制點(diǎn)計(jì)算轉(zhuǎn)換參數(shù),再利用轉(zhuǎn)換參數(shù)進(jìn)行坐標(biāo)系轉(zhuǎn)換;對于同一橢球不同投影間的坐標(biāo)系,則直接利用投影正反算公式進(jìn)行投影轉(zhuǎn)換。數(shù)據(jù)處理流程如圖1所示。
圖1 多源數(shù)據(jù)坐標(biāo)轉(zhuǎn)換流程圖
由圖1可知,圖中控制點(diǎn)和數(shù)字線劃圖作為矢量數(shù)據(jù)先進(jìn)行坐標(biāo)基準(zhǔn)檢查,若坐標(biāo)基準(zhǔn)相同,則直接進(jìn)行坐標(biāo)投影轉(zhuǎn)換;若坐標(biāo)基準(zhǔn)不同,則首先進(jìn)行坐標(biāo)基準(zhǔn)轉(zhuǎn)化,隨后進(jìn)行坐標(biāo)投影轉(zhuǎn)換,更新圖形要素,并輸出轉(zhuǎn)換結(jié)果,該流程結(jié)束。矢量要素逐點(diǎn)進(jìn)行坐標(biāo)轉(zhuǎn)換效率不高,因而采用逐要素坐標(biāo)轉(zhuǎn)換的方法,對圖層中的每個(gè)要素逐次逐級轉(zhuǎn)換,轉(zhuǎn)換流程如圖2所示。
圖2 矢量數(shù)據(jù)坐標(biāo)轉(zhuǎn)換流程圖
由圖2可知,流程轉(zhuǎn)換分為數(shù)據(jù)輸入、數(shù)據(jù)處理、數(shù)據(jù)輸出3層。數(shù)據(jù)輸入包括輸入已知n組重合點(diǎn)坐標(biāo)和輸入已知轉(zhuǎn)換參數(shù)。重合點(diǎn)坐標(biāo)作為輸入點(diǎn)計(jì)算轉(zhuǎn)換參數(shù),通過轉(zhuǎn)換參數(shù)提取圖形要素的原始坐標(biāo),計(jì)算得到各要素的目標(biāo)坐標(biāo)。最后,更新圖形要素得到輸出的轉(zhuǎn)換結(jié)果。矢量數(shù)據(jù)坐標(biāo)轉(zhuǎn)換利用ArcGIS Engine中已有的ITransform2D方法實(shí)現(xiàn)。
數(shù)字高程模型圖、航空數(shù)字影像、衛(wèi)星遙感影像、數(shù)字正射影像圖作為柵格數(shù)據(jù)進(jìn)行轉(zhuǎn)換。柵格數(shù)據(jù)的坐標(biāo)換算可采用幾何校正的方法,但需注意的是,該方法實(shí)施環(huán)節(jié)存在過多的人工干預(yù),自動化程度不高。柵格數(shù)據(jù)坐標(biāo)轉(zhuǎn)換可采用IRasterGeometryProc方法下的Wrap方法,首先將柵格影像的4個(gè)角點(diǎn)坐標(biāo)作為坐標(biāo)換算的已知點(diǎn),其次根據(jù)轉(zhuǎn)換參數(shù)求出要轉(zhuǎn)換的新坐標(biāo)系下的坐標(biāo),基于此圖像單元進(jìn)行重采樣,達(dá)到空間轉(zhuǎn)換的目的,得到轉(zhuǎn)換后的柵格數(shù)據(jù)。柵格數(shù)據(jù)轉(zhuǎn)換流程如圖3所示。
圖3 柵格數(shù)據(jù)坐標(biāo)轉(zhuǎn)換流程圖
拓?fù)潢P(guān)系是描述空間要素的幾何關(guān)系,包括點(diǎn)、線、面的鄰接、包含、相離等關(guān)系。在數(shù)據(jù)入庫之前,需對數(shù)據(jù)進(jìn)行拓?fù)潢P(guān)系檢查,本文所設(shè)計(jì)的系統(tǒng)根據(jù)生產(chǎn)需要對拓?fù)湟?guī)則進(jìn)行了拓展并設(shè)置了相應(yīng)的規(guī)則,比如面狀要素遵循不能自相交、面邊線的節(jié)點(diǎn)上必須有點(diǎn)、不能有碎面等規(guī)則,線狀要素遵循節(jié)點(diǎn)上必須有點(diǎn)、不能有碎線、線不能跨越兩個(gè)以上面等規(guī)則,點(diǎn)狀要素遵循點(diǎn)不能重疊、兩個(gè)點(diǎn)層不能互相重疊、點(diǎn)必須在線的節(jié)點(diǎn)上等規(guī)則。
上述拓?fù)潢P(guān)系檢查通過利用ArcGIS Engine中提供的ISpatialFilter、IGeometry、IHitTest和ITopologicalOperator等接口實(shí)現(xiàn)。檢查完畢后自動修改或者提示人工修改,可以按索引自動跳到錯(cuò)誤所在位置,修改完成后進(jìn)入下一環(huán)節(jié)。
數(shù)據(jù)入庫前要按不同的數(shù)據(jù)類型設(shè)置相對應(yīng)的入庫模板。柵格數(shù)據(jù)入庫模板設(shè)置相對簡單,矢量數(shù)據(jù)尤其是線劃圖數(shù)據(jù)要復(fù)雜得多。矢量數(shù)據(jù)入庫圖層代碼統(tǒng)一采用國標(biāo)圖層代碼,將鐵路數(shù)字線劃圖圖層代碼轉(zhuǎn)換到國標(biāo)規(guī)定圖層代碼,通過建立線劃圖數(shù)據(jù)入庫模板,建立一一對應(yīng)關(guān)系,利用“鐵路地理空間信息數(shù)據(jù)入庫系統(tǒng)”進(jìn)行轉(zhuǎn)換。線劃圖圖層對應(yīng)關(guān)系(即鐵路圖層碼和標(biāo)準(zhǔn)GB碼的對應(yīng)關(guān)系)如表1所示。除此之外,還要將數(shù)據(jù)的空間信息和時(shí)間信息作為數(shù)據(jù)庫的關(guān)鍵索引值,數(shù)據(jù)入庫時(shí)可以將這些信息自動添加,再人工檢查,這樣多源多時(shí)相的數(shù)據(jù)就可以錄入到統(tǒng)一數(shù)據(jù)庫中,可按不同的坐標(biāo)和時(shí)間瀏覽和查詢,方便進(jìn)行管理。
表1 鐵路與GB碼應(yīng)關(guān)系表
本項(xiàng)目開發(fā)了名為“鐵路地理空間信息數(shù)據(jù)入庫系統(tǒng)”入庫軟件。
本軟件由ArcEngine和C#二次開發(fā),主要功能包括新建工程、數(shù)據(jù)導(dǎo)入、屬性檢查、拓?fù)錂z查、坐標(biāo)轉(zhuǎn)換和圖層管理等。
平臺中主程序與主窗體的代碼為程序中的GeoDataStorageSystems.sln,其余模塊以組件形式引入。其中,Catalog模塊封裝了數(shù)據(jù)選擇窗體;CommonLib模塊封裝了操作矢量要素、影像、數(shù)據(jù)庫的通用方法;Coordinate Transformations模塊封裝了坐標(biāo)轉(zhuǎn)換功能;DataManage模塊封裝了數(shù)據(jù)導(dǎo)入導(dǎo)出功能;Project Manage模塊封裝了與工程有關(guān)的操作。
基于ArcGIS Engine二次開發(fā)組件,采用C#實(shí)現(xiàn)了多源數(shù)據(jù)統(tǒng)一管理的坐標(biāo)轉(zhuǎn)換程序?!拌F路地理空間信息數(shù)據(jù)入庫系統(tǒng)”包括工程管理、數(shù)據(jù)管理和輔助工具三大功能模塊,本文針對輔助工具中的坐標(biāo)轉(zhuǎn)換模塊進(jìn)行重點(diǎn)說明。該模塊可以對矢量數(shù)據(jù)、柵格數(shù)據(jù)以及dwg數(shù)據(jù)等進(jìn)行統(tǒng)一坐標(biāo)轉(zhuǎn)換。針對dwg數(shù)據(jù),本程序首先調(diào)用ArcGIS接口將其轉(zhuǎn)換成shp格式文件,然后以矢量數(shù)據(jù)的方式進(jìn)行坐標(biāo)轉(zhuǎn)換;在矢量數(shù)據(jù)轉(zhuǎn)換中,為提高轉(zhuǎn)換效率,以要素為單位遍歷圖層,通過ArcGIS接口為每個(gè)要素單獨(dú)賦予新的坐標(biāo)系;對于柵格數(shù)據(jù),只提取其四至點(diǎn)的坐標(biāo),并對其進(jìn)行坐標(biāo)轉(zhuǎn)換,然后以新坐標(biāo)為標(biāo)準(zhǔn),對柵格數(shù)據(jù)進(jìn)行重采樣,以完成柵格圖層的定位。
坐標(biāo)轉(zhuǎn)換模塊主要包括生成轉(zhuǎn)換方案和坐標(biāo)轉(zhuǎn)換兩部分。生成轉(zhuǎn)換方案中需設(shè)置源坐標(biāo)系、目標(biāo)坐標(biāo)系和轉(zhuǎn)換參數(shù)。其中,轉(zhuǎn)換參數(shù)包括七參數(shù)和可能需要的投影參數(shù),完成配置后,生成轉(zhuǎn)換方案文件,作為下一步坐標(biāo)轉(zhuǎn)換的輸入文件。在計(jì)算七參數(shù)界面,輸入已知n組重合的源坐標(biāo)和目標(biāo)坐標(biāo)的值作為已知控制點(diǎn)數(shù)據(jù),數(shù)據(jù)在編輯過程可以進(jìn)行增刪改的操作,確認(rèn)無誤后計(jì)算生成轉(zhuǎn)換參數(shù)。
(1)實(shí)驗(yàn)一:利用同一區(qū)域矢量和柵格的歷史數(shù)據(jù),矢量數(shù)據(jù)較新采用了CGCS2000大地坐標(biāo)系,而柵格數(shù)據(jù)采用了WGS84經(jīng)緯度坐標(biāo)系,轉(zhuǎn)換前兩組坐標(biāo)差異較大,變換到同一坐標(biāo)系后的結(jié)果顯示了較好的一致性。
(2)實(shí)驗(yàn)二:為驗(yàn)證坐標(biāo)轉(zhuǎn)換結(jié)果的精度,選取有實(shí)際坐標(biāo)的20個(gè)控制點(diǎn)計(jì)算7參數(shù),選取58個(gè)檢查點(diǎn)將轉(zhuǎn)換后的坐標(biāo)與實(shí)際數(shù)據(jù)進(jìn)行對比,結(jié)果如表2所示。
表2 坐標(biāo)轉(zhuǎn)換結(jié)果與實(shí)際數(shù)據(jù)的較差表(m)
由計(jì)算結(jié)果可得,測試數(shù)據(jù)轉(zhuǎn)換中X方向轉(zhuǎn)換誤差為0.039 m,Y方向轉(zhuǎn)換誤差為0.051 m,高程誤差為0.220 m。在實(shí)際生產(chǎn)中,國內(nèi)項(xiàng)目的高程大都采用國家85高程為基準(zhǔn),高程需要轉(zhuǎn)換較少;而平面坐標(biāo)歷史或者是跨帶等原因需要轉(zhuǎn)換的情況比較多。經(jīng)試驗(yàn),在小區(qū)域采用七參數(shù)轉(zhuǎn)換法。可滿足規(guī)范精度要求,效率比較高,能轉(zhuǎn)換各種類型的數(shù)據(jù)。相同橢球距離較遠(yuǎn)的情況下,利用高斯投影正反算公式實(shí)現(xiàn)坐標(biāo)轉(zhuǎn)換,轉(zhuǎn)換原理更嚴(yán)密,轉(zhuǎn)換精度可靠。
在生產(chǎn)過程中積累了大量的歷史空間數(shù)據(jù)時(shí),如何保存和管理顯得越來越重要,以數(shù)據(jù)庫的形式管理空間數(shù)據(jù)是目前應(yīng)用的理想方式。為方便數(shù)據(jù)查詢,有必要將這些數(shù)據(jù)納入到同一坐標(biāo)系下,因此,在入庫之前需利用轉(zhuǎn)換參數(shù)將這些雜亂的空間數(shù)據(jù)轉(zhuǎn)換到CGCS2000坐標(biāo)系下。
為實(shí)現(xiàn)多源地理空間數(shù)據(jù)的統(tǒng)一管理,本文基于七參數(shù)坐標(biāo)轉(zhuǎn)換模型的非線性最小二乘解及高斯正反算公式,設(shè)計(jì)實(shí)現(xiàn)了矢量及柵格數(shù)據(jù)統(tǒng)一坐標(biāo)轉(zhuǎn)換方法。該方法利用同一套坐標(biāo)轉(zhuǎn)換參數(shù)即可同時(shí)轉(zhuǎn)換矢量數(shù)據(jù)與柵格數(shù)據(jù),提高了多源數(shù)據(jù)的入庫效率,并保證了數(shù)據(jù)的準(zhǔn)確性和可靠性。把歷年保存的矢量與柵格數(shù)據(jù)基于相同坐標(biāo)系入庫,方便數(shù)據(jù)的疊加、查詢等操作,同時(shí)為后續(xù)的綜合分析提供了數(shù)據(jù)保障。得到的主要研究結(jié)論為:
(1)設(shè)計(jì)了與數(shù)據(jù)性質(zhì)相對應(yīng)坐標(biāo)轉(zhuǎn)換方案并進(jìn)行了驗(yàn)證,結(jié)果表明該方案滿足精度要求。
(2)基于ArcGIS Engine二次開發(fā)平臺,采用C#語言開發(fā)了數(shù)據(jù)入庫前坐標(biāo)轉(zhuǎn)換、格式轉(zhuǎn)換、查錯(cuò)等模塊。
(3)對同一區(qū)域的矢量柵格數(shù)據(jù)入庫,保證了數(shù)據(jù)庫坐標(biāo)系和格式的統(tǒng)一性。