□ 袁紅 張文朗
(國家測繪地理信息局第四地形測量隊,黑龍江哈爾濱150025)
地理國情監測項目,產品成果數據較以前測繪項目種類較多,主要是數據庫格式的。過程生產根據工藝的要求,需要按分幅或在單景正射影像鑲嵌線范圍內來制作生產,最終成果數據以行政單元匯總提交,這就帶來了成果數據庫的拼合、裁切、數據庫格式的來回轉換。處理這些類似的問題一般的操作是將原始數據的每一個層的要素通過ArcMap加載,利用ArcToolBoxd工具在編輯狀態下進行要素的復制與粘貼、裁切,包括數據庫格式的轉換也是逐層完成的。地理國情監測項目每一個成果數據庫都有幾十個層,通過手工操作實現,帶來很大的工作量,且容易出現漏錯。然而通過計算機語言,開發應用程序,可以將這些一系列機械性的重復工作,以托管的方式,交給計算機處理,既省時、又省力,提高準確度。因此需要探討與研究在數據庫處理方面應用程序的開發與應用。
為了全面掌握我國地理國情現狀,滿足經濟社會發展和生態文明建設的需要,提高測繪地理信息服務保障能力,更好地服務于我國經濟建設工作,國務院下發通知,決定開展地理國情監測項目。該項目綜合運用多種現代高新技術,包括衛星定位系統(GNSS)、航空航天遙感技術(RS)、地理信息系統技術(GIS)。主要成果數據,包括國情要素數據、地表覆蓋數據內業都是在高分正射遙感影像上采集的,成果數據多且主要是數據庫形式,整個生產過程都需要借助計算機來完成。計算機軟件利用的程度決定著生產的進度,因此迫切需要開發出一些應用程序,對一些重復性的、繁瑣的、有規律可循的人工操作讓計算機來自動來完成。比如開發衛星遙感影像自動解譯軟件可以快速完成地表覆蓋分類;開發一些質量監督檢查軟件,可有效的控制產品質量。
對于一些數據重復、批量處理的工序,純手工操作,無疑是一個技術含量低、耗時量大的任務,當我們能利用一些其他手段,能快速、準確的解決問題,毫無疑問在質和量上都能提高一定的高度,減少一些不必要的重復工作量。
在地理國情監測項目中,由于遙感影像需要二次糾正,我們需要將按圖幅號劃分的數據庫統一進行合并,并將其按鑲嵌線的面元裁成對應景號的各個子庫。當我們需將大批量的數據進行合并時,通常需要逐一將每一個子庫的對應層進行合并,一般情況下,我們可以通過ArcMap的追加工具,或者通過加載數據逐一層的復制粘貼數據,這樣必然使得工作繁瑣、工作量大。
按景號裁庫主要是將合并的大庫,按每一個鑲嵌線面元的范圍裁成對應的小庫,一般情況下,我們需要按照景號建立對應的數據庫,并將該景號范圍的要素裁剪到對應的要素層。針對影像二次糾正的數據準備,若以手工方式操作,投入較大,而且容易出錯。涉及到數據結構的變化,在各個工序生產過程中,由于軟件的不兼容性,對讀取的數據格式有限制,經常需要對MDB格式的數據庫和GDB格式的數據庫進行轉換。對于大的行政單元,要實現數據格式的互換,通過程序設計達到批量處理既快速又準確。
程序主要是以VS2010為平臺,VB.NET為基本編程語言,C#為輔助編程語言。基于ArcObject的二次開發,對以開發語言的選擇,正常C#最優,但由于初學C#,主語言主要以VB.NET為主。
通過分析問題,找出解決問題的辦法,設計程序算法。在保證質量的前提下,尋找合適的解決方法,并在一定的程度上進行代碼優化,提高程序的穩定性,以及程序的運行速率。
批量合庫程序的設計,主要是在VB.NET+AO環境下設計。由于合并的數據庫數量多,為了保證合并過程中要素類中不丟要素,以及要素不丟屬性信息,設計思路主要是將文件夾下的所有數據庫往排序第一的數據庫中,以要素重構的方式合并到第一個庫中;為了提高程序運行的速率,以遍歷第一個庫下的要素類的方式,將其他庫中同名的要素類中的要素在第一個庫中的要素類中重構。
要素重構的主要代碼如下:
WhileNotpFeatCopyIsNothing
DimpFeatZTAsIFeature=pFeatureClass.
CreateFeature
pFeatZT.Shape=pFeatCopy.Shape
Forj=0TopFeatZT.Fields.FieldCount-1
DimpFieldNAsString=pFeatZT.Fields.
Field(j).AliasName
IfpFieldN<>“OBJECTID”AndpFieldN<>
“SHAPE”AndpFieldN<>“SHAPE_Length”
AndpFieldN<>“SHAPE_Area”Then
Fork=0TopFeatCopy.Fields.FieldCount-1
DimpFCNAsString=pFeatCopy.Fields.
Field(k).AliasName
IfpFCN=pFieldNThen
pFeatZT.Value(j)=pFeatCopy.Value(k)
ExitFor
EndIf
Next
EndIf
按景號裁庫程序設計的思路是通過遍歷所使用的鑲嵌線圖層中的要素,根據該要素的景號字段值,建立裁切后的子庫,然后將要素復制到裁切后子庫中的CQ層,調用C#編譯的ClipDo.dll的裁切函數,以CQ為裁切范圍,將大庫每一層要素裁切到子庫中,最后刪除子庫中的CQ層。
Dim pXKY AsString=System.Windows.Forms.Application.StartupPath+“”&pDH&“.gdb”
DimpNameAsString
DimpXKAsString=“”
Fori=0TopFeature.Fields.FieldCount-1
IfpFeature.Fields.Field(i).AliasName=“景號”Then
pName=pFeature.Value(i)
pXK=pPathXk+“”&pName&“.gdb”
DimpChFoldAsFileSystemObject=New FileSystemObject
IfpChFold.FolderExists(pXK)=TrueThen
pChFold.DeleteFolder(pXK)
EndIf
DimpFileOAsFileSystemObject=New FileSystemObject
DimpSfoAsScripting.Folder=pFileO.GetFolder(pXKY)
DimpSflAsScripting.File
ForEachpSflInpSfo.Files
DimpOldAsString=pXKY+“”&pSfl.Name
DimpNewAsString=pXK+“”&pSfl.Name
My.Computer.FileSystem.CopyFile(pOld,pNew,FileIO.UIOption.AllDialogs,FileIO.UICancelOption.DoNothing)
裁庫主要通過調用C#編寫的ClipDO.Dll。
數據轉換的設計思路是將需轉格式數據庫的要素在另一種格式的數據庫中以重構的方式轉換,通過數據屬性一一對應寫入要素屬性表,避免了由于數據結構變化導致的丟屬性的現象。

在VS2010平臺下,運用內置打包發布工具,把設計的代碼生成可安裝的窗體交互式應用程序,這種二次開發的應用程序優點在于提高程序的可讀性、可移植性和可維護性。操作界面簡單,運行時點擊窗口命令按鈕即可,使得程序簡單易操作;在合庫程序界面,只需按照提示信息選擇需要合并的庫所在的文件夾,然后點擊運行即可;在按景號裁庫的程序界面,根據命令按鈕提示信息,選擇要裁切的大庫、鑲嵌線文件、中央經線、以及放子庫的文件夾即可;在GDB轉MDB格式的數據庫相互轉換的程序中,只需將要進行轉換的數據庫放入對應的文件夾中,然后分別選擇需要進行轉換的數據庫所在的文件夾和放入轉換后數據庫的文件夾。
硬件方面,當前市場上常用的計算機硬件配置都能滿足所需要的運行環境;系統方面,對于XP以上的操作系統都可以運行。較高的計算機配置,程序運行速度相對較快,對于面積較大的行政單元數據庫不用分批次操作,一次性可讀取,完成對成果數據庫的合并、裁切、數據庫格式的轉換。在DELL系列,7010型配置的計算機上批量合庫程序可一次性讀取300個文件(以5萬圖幅為單位),能正常運行,30分鐘執行完畢。裁庫程序可對一個行政單元的數據庫一次性裁切出400個子庫,需要運行近2個小時。對于不同格式的數據庫進行轉換處理起來較快,一般一個行政單元的數據庫(按圖幅計算)幾分鐘就運行完畢。
按照工序的要求,前期國情數據采集和地表覆蓋分類都是在初糾正的影像上進行的,外業獲取像控點成果后,對遙感影像進行了二次糾正。這就需要對前期生產的矢量數據套合正射攝影進行二次糾正。這就需要利用合庫程序先把子數據庫(一般一幅5萬圖為一個數據庫)拼合到一起,利用裁庫程序以遙感影像鑲嵌線為范圍創建一個面元,按其景號字段值建立數據庫,然后利用面元范圍裁切大庫。在成果提交時,是按行政單元,也可以利用合庫程序把所有子庫合并成一個數據庫。包括中間數據庫格式的反復轉換都可以使用轉換程序來實現。目前,新開發的這幾個程序,在新疆測區、內蒙測區、西藏測區已經推廣使用。經過實踐證明,和人工操作對比,大大節省時間,提高數十倍的效率。
基于ArcObject開發的批量合庫、裁庫、數據庫格式轉換應用程序在幾個測區中的應用,既省時又省力,準確無誤地完成了對3個測區海量數據的處理。在生產過程中針對某些問題,尤其在后期質量控制檢查方面,要多開發應用程序,能夠提高工作效率,解決時間緊、任務重的問題。地理國情監測項目的成果數據較多,且都是數據庫形式的,因此多開發一些數據庫方面的應用程序尤為重要。
【1】地理信息系統開發—ArcObjects方法[M].武漢大學出版.
【2】GIS程序設計.基于ArcEngine的C#開發實例.浙江大學出版社.
【3】基于遙感與GIS的城市總體規劃信息工程[J].測繪學報.
【4】地理信息系統理論與應用叢書.ArcGIS開發寶典.科學出版社.
【5】張富強.GIS中多維點數據的誤差區間分析法研究[J].測繪與空間地理信息,2010,33(2):65-68.