韓紹陽,柯 丹,侯惠群,胡水清
(1.中國核科技信息與經濟研究院,北京 100048;2.核工業北京地質研究院,北京 100029;3.中國石油勘探開發研究院,北京 100083)
隨著我國鈾資源開發和勘查工作的深入進行,在地表或近地表發現大規模鈾資源的可能性已經很小,尋找深部鈾礦床是滿足我國對戰略鈾資源需求的長遠保障。自20世紀90年代初以來,我國鈾資源勘查的主攻方向轉為產于中新生代沉積盆地、地表覆蓋厚的可地浸砂巖型鈾礦。為了快速、經濟地尋找砂巖型鈾資源,必須重視在理論上更為先進的物化探信息源,吸收數學、計算機技術最新成果,有效地轉換、分離、提取、解釋和綜合物化探異常場信息。這不僅能更好地解決地質構造等間接找礦問題,在鈾礦床(體)直接發現、空間定位等方面,更能起到獨特的作用。
GIS技術的廣泛應用實現了鈾礦地質工作的現代化,為綜合找礦和高效準確預測提供了良好的條件和環境。但是阻礙GIS深層次應用的“瓶頸”是:以數據采集、存儲、管理、查詢檢索和制圖等功能為主的商業化GIS軟件尚不能滿足鈾資源勘查評價中物化探數據處理的需求,直接影響到了鈾資源勘查評價中GIS的效益和生命力。為了提高GIS與物化探技術在砂巖型鈾礦勘查領域中的應用效率,基于A rcGISEngine組件開發了界面友好、操作簡單,集多源數據管理、區域物化探數據處理、綜合制圖和綜合評價等功能為一體的砂巖型鈾礦區域物化探數據處理系統,將砂巖型鈾礦區域物化探數據處理方法與GIS軟件有機地融合在一起,構建了砂巖型鈾礦區域物化探成礦信息提取技術平臺,在多個盆地的砂巖型鈾礦區域物化探數據處理過程中發揮了重要作用,取得了較好的應用效果。
依據砂巖型鈾礦勘查評價過程中區域物化探成礦信息提取的需求,設計的系統功能可以大致歸結為兩大模塊:常用GIS功能模塊和物化探專業處理功能模塊。兩大功能模塊具有統一的操作界面,而且共享同一多源地學信息數據庫。為了能夠實現與主流G IS商業軟件的數據共享,系統軟件的數據格式采用了EsriG IS軟件的數據格式,即:Shapefiles矢量數據和G ridfiles柵格數據。
信息系統中的GIS功能主要包括視圖管理、矢量數據的查詢和檢索、屬性管理、圖形操作、空間分析及制圖輸出等。
(1)視圖管理:主要包括基本的視圖操作,如新建視圖、打開視圖和保存視圖;還包括矢量和柵格數據的添加、轉換存儲、刪除和更新;視圖漫游、縮放和距離測量。
(2)矢量數據的查詢和檢索:能夠快速準確地對視圖中的矢量(包括點、線、面),進行查詢檢索,根據查詢的方式不同,又分為空間查詢和屬性查詢。
(3)屬性數據管理:包括對屬性表中字段、記錄的操作、圖元屬性值的查詢和修改等。
(4)圖形操作:包括圖形要素的添加、刪除、修改、移動、旋轉、復制和粘貼等。
(5)空間分析:包括矢量數據和柵格數據空間分析功能。矢量數據空間分析包括點面、點線、線面圖層的疊置以及它們之間的交叉、分割、聯合、拼接、合并等操作;柵格數據空間分析包括柵格圖層之間的合并、統計計算、變換處理和布爾邏輯運算等。
(6)制圖輸出:包括基本圖例的顯示、多種色彩分級方式、地圖、比例尺等信息,支持多種格式的圖像輸出,如JPEG、BMP和TIFF等。
根據系統需求分析,專業處理功能包括數據預處理、重磁數據處理、地質數據處理和綜合評價方法。
(1)數據預處理:包括網格數據的滑動平均、重采樣、空區補值、擴邊處理、正則化濾波以及能量濾波等。
(2)重磁數據處理:重磁數據處理分為2個部分:數據的常規處理和弱信息的提取。常規處理方法包括磁源重力轉換、解析延拓、化磁極、方向導數、PARKER和Euler反褶積反演;弱信息提取方法包括弱異常增強、二次差分、自調節濾波、相關分析法和奇異值分解等。
(3)放射性數據處理:主要有各種放射性數據比值、鈾富集系數、變異系數、空間相關性分析、鈾成礦有利參數(U 2、U3、U5)、SA 分形等方法。
(4)綜合評價方法:對各種原始信息或提取得到的信息進行綜合,綜合評價模型包括專家打分法和證據權重法等。
基于GIS進行專業應用系統的開發,主要采用2種方式[1]:①宏語言二次開發:利用通用型GIS軟件實現基本的GIS功能;專業處理功能模塊利用GIS軟件提供的二次開發宏語言或者利用宏語言調用專業處理功能模塊的應用程序或動態鏈接庫來實現,還可以通過OLE或DDE方式來實現。②組件式GIS二次開發:在集成開發環境中嵌入組件式GIS軟件,利用組件式GIS軟件實現常用的G IS功能,然后利用集成開發語言(如Visual C++)開發專業處理功能模塊。宏語言二次開發簡單易行,但與集成開發語言相比,宏語言實現復雜算法的能力有限,執行效率低,程序的穩定性和移植性均較差,其最大的不足就是開發出來的應用系統必須依賴于通用型GIS軟件平臺而存在,而往往由于正版GIS軟件的價格較高,因此會給用戶帶來較大的經濟負擔?;诮M件式GIS開發是目前最流行的GIS二次開發方式,其最大的優點就是開發出來的應用系統能夠完全脫離龐大的GIS軟件平臺,以較少的代價獲取更經濟的GIS應用[2]。
目前主流的組件式GIS軟件主要有ESRI的A rcObjects、MapObjects以及新推出的A rcGIS Engine、MapInfo公司的MapX和Intergraph公司的Geomedia Objects等。A rcGIS Engine是一個基于ArcObjects構建的,面向開發人員的嵌入式工具包,支持幾乎所有的標準開發環境,由控件、工具和對象庫3部分組成。工具包括按鈕、工具集和菜單,它們可以被放置在工具條控件上;A rcGIS Engine提供了20多個對象庫,每個對象庫均包含了針對不同應用的接口函數,用戶可以根據需要選擇相應的對象庫。在Visual Basic6.0開發環境中,基于 A rcGIS Engine組件開發了砂巖型鈾礦區域物化探數據處理系統,借助A rcGIS Engine實現常用的GIS功能,利用基于動態鏈接庫的混合編程技術實現專業化物化探數據處理功能。系統中部分GIS功能,如視圖的縮放和移動等,可以通過用戶自定義的方式添加A rcGISEngine提供的工具按鈕實現,但如圖例編輯和屬性查詢等無法利用工具按鈕完成的功能,則需要通過調用A rcG IS Engine對象庫中的函數進行編程加以實現。
A rcGISEngine是由一組核心的ArcObjects包組成,因此利用A rcGIS Engine進行開發,只需要了解A rcGISEngine開發包的接口,并且按照基于接口編程原理即可進行軟件的應用開發和功能擴展。
混合編程(M ixed Programm ing)是采用2種或2種以上的編程語言進行組合編程,彼此相互調用,進行參數的傳遞,共享數據結構以及數據信息。既可以發揮各種語言的長處,又能解決使用單獨一種語言存在的缺陷。此外,還能利用已有的各種程序模塊、目標庫程序模塊在短時間內組成新的應用程序,從而縮短軟件的開發時間,降低成本,提高軟件的效益。區域物化探數據處理核心程序,通常由Fortran和VC++語言編寫,可改寫為動態鏈接庫文件(DLL),供其他語言調用。在進行混合編程時,需要注意函數命名約定和參數傳遞方式。命名約定是為了解決不同語言對名稱標識符(如變量名、參數名、過程名和函數名等)的不同處理,對目標文件名的不同長度限制的約定;參數傳遞方式的一致性直接影響到程序調用的正確性,因此發送參數的方式和接收參數的方式要完全一致。
例如在VB平臺中可利用VB語言為程序設計友好的操作界面,通過混合編程技術調用已有的由Fortran和VC等語言編寫的功能強大的專業化處理程序(已改寫為動態鏈接庫文件),實現友好的操作界面與強大的數據處理功能的緊密結合[3]。VB與Fortran和VC++之間的參數類型對應關系如表1所示,在VB環境中對函數進行調用時,參數的類型要嚴格按照表1中的對應關系進行定義[4]。

表1 VB、FORTRAN和VC++之間的參數類型對應關系Table1 Corresponding relations between VB,FORTRAN and VC++
砂巖型鈾礦區域物化探數據處理系統的主界面按照標準的Window s界面風格進行設計,由菜單、工具條、圖例內容表、視圖和狀態欄5部分組成(圖1~圖3)。各種GIS基本功能及鈾成礦信息提取功能也都具有非常友好的人機交互界面。同時,為了方便用戶了解各種鈾成礦信息提取方法的原理及參數設置,軟件提供了內容豐富的幫助文檔。

圖1 數據處理系統添加專題界面Fig.1 The interface of adding theme in the data processing system

圖2 矢量數據的屬性表管理界面Fig.2 The interface of attribute tab lemanagement of vector data

圖3 空區補值及擴邊程序界面Fig.3 The program interface of fill-in value in the empty area and enlargingmargins
軟件中基本的GIS功能大部分可以直接通過A rcG IS Engine提供的工具按鈕來實現,不需要進行任何編程,但是還有一些功能,如網格專題的添加、空間屬性查詢、圖例編輯等等都是需要通過編程來實現的。以下分別介紹地圖的縮放功能和網格專題添加等功能的具體實現過程。
4.2.1 地圖縮放功能的實現
(1)在VisualBasic 6.0開發環境下,添加地圖控件(ESRIMapControl)和工具條控件(ESRI ToolbarControl)2個組件到Visual Basic 6.0的組件欄中,并把它們拖曳到應用程序的界面中,分別命名為MapControl和ToolBar。
(2)在ToolBar控件上點擊右鍵,打開屬性設置頁。在“General”項中將 Too lBar的“Buddy”屬性設置為 MapControl,然后在“Item s”項中點擊“Add”按鈕,打開“Contro ls Commands”頁,選擇地圖的縮小和放大按鈕直接拖曳到ToolBar中。
(3)在MapContro l上點擊右鍵,打開屬性設置頁,可以在“General”項中添加項目文件或者在“Map”項中加入圖層文件(Layer Files)或矢量文件(Shape Files)。
(4)保存、編譯并運行應用程序,就可以進行地圖的縮放操作了。
以同樣的方式,類似地可以實現地圖的旋轉、刷新、移動、創建等值線等功能。
4.2.2 網格專題添加功能的實現
直接在主程序下進行專題添加功能的開發,分為以下4步:
(1)設計專題添加對話框,界面如圖1所示,在該功能中也包括Shpefiles格式的矢量文件和影像文件的添加功能。
(2)由于網格專題(GRID Files)是以文件夾形式保存的,沒有專用的擴展名。在所有的網格專題相應的文件夾中都包括一個log文件和擴展名為xm l的文件以及一些擴展名為adf的文件,而且這些文件的名稱都是固定不變的。因此,需要將包含這些特定文件的文件夾查找出來,并將查找到的文件夾名稱顯示在添加列表中,并給它們制定一個共有的圖標。這些都需要在Visual Basic6.0中編程來實現,查找網格專題文件夾的程序代碼在此省略。
(3)編寫網格專題添加的程序代碼。下面是程序的核心代碼[5]:

(4)保存、編譯并運行程序,就可以實現網格專題的添加了。
4.2.3 屬性數據管理功能的實現
矢量數據的屬性管理功能包括字段操作、屬性修改等功能。考慮到屬性管理功能的特殊性和為了系統集成的方便,直接在系統主程序中對其進行開發,而不采用創建命令或工具的方式開發,其實現可以分為以下4步:
(1)在主程序界面下,添加一個對話框窗體及其相應的控件,其中DataG rid控件用來顯示數據,程序運行的界面如圖2所示。
(2)讀出當前矢量圖層的所有屬性,并將其顯示到DataG rid控件中(代碼略)。
(3)屬性表的字段操作功能包括添加字段、修改字段和刪除字段。
添加字段功能的核心代碼如下:

Select Case comFieldType.Text判斷字段屬性

分別就長整型、浮點型、雙精度型、日期型、文本型進行討論

從選定的圖層獲取要素

pFeatureClass.AddField pField對要素添加字段
字段修改和字段刪除的實現思路與字段添加相似,在此不再闡述。
(4)屬性編輯功能的實現,通過點擊界面屬性編輯菜單,開始屬性數據的修改和添加,并且編輯結束,可以保存到數據文件當中,實現屬性的永久更改(代碼略)。
以同樣的方式實現了圖層標注、空間查詢和圖例編輯等功能,不再具體闡述。
專業處理功能實現的基本思路,就是先把需要處理的網格專題圖層(GRID Files)轉換成文本文件,然后再調用動態鏈接庫中的專業處理函數對文本文件進行處理,最后再將處理得到的結果文本文件轉換成柵格專題并導入到系統的當前視圖中進行其他分析。下面以空區補值及擴邊功能的實現為例來詳細說明,可以分為以下3步[6]。
(1)設計參數設置對話框(圖3)。在操作選項中,用戶可以選擇進行空區補值、擴邊或既空區補值又擴邊等操作。程序提供了兩種插值算法:算術平均算法和加權平均算法。在空值區域的數值文本框中用戶可以輸入空區值的數值,系統默認值為-9 999.0;在擴邊數設置中,可以分別上下左右4個方向的擴邊數。
(2)將網格專題轉換成文本文件。定義了函數G ridToASCII進行網格到文本的轉換,函數的返回值是文本文件的輸出路徑和名稱,核心代碼如下:

(3)調用Fortran動態鏈接庫中的FunEmpty函數進行空區補值及擴邊處理,程序代碼如下:

(4)將處理后的文本文件轉換成網格專題,程序代碼如下:

pRaLayer.CreateFromDataset pRaDataset'從柵格數據集創建柵格圖層
其中ASCIIToGrid函數的功能是將文本文件轉換成柵格數據集,函數的返回值是柵格數據集,核心代碼如下:


在上面的代碼中,利用GridToASCII函數將GRID專題轉換為文本文件,然后調用FunEm pty函數對數據進行空區補值及擴邊處理,最后用ASCIIToGrid函數將處理的結果轉換為柵格數據集,再導入到柵格圖層中。其他專業處理功能的實現與空區補值及擴邊功能的實現是相似的。
基于組件式GIS開發砂巖型鈾礦區域物化探數據處理系統,大大降低了軟件開發的難度,并提高了開發效率,增強了系統的靈活性和開放性。開發出來的砂巖型鈾礦區域物化探數據處理系統軟件,界面友好,操作簡便且功能實用,非專業人員易于掌握,不僅具有強大的專業處理功能,而且其GIS功能也可以完全不遜于通用型GIS軟件,同時還能夠完全脫離通用型GIS軟件平臺而獨立存在。該系統軟件已成功應用于伊犁、鄂爾多斯和松遼盆地等多個地區的砂巖型鈾礦勘查評價,取得了較好的應用效果,并獲得了國家版權局頒發的計算機軟件著作權登記證書。筆者旨在“拋磚引玉”,推動GIS技術在鈾資源物化探勘查評價領域內的應用進展,文中不足之處,還望各位專家及同行批評指正。
[1] 宋關福,鐘耳順.組件式地理信息系統研究與開發[J].中國圖像圖形學報,1998,3(4):313-317.
[2] 李朝峰,王杰,王桂粱.基于軟件組件化技術地理信息系統開發[J].四川測繪,2002,25(2):51-53.
[3] 周振紅,楊國錄,周洞汝,等.Fortran與V isual Basic混合編程的研究[J].武漢水利電力大學學報,1999,32(2):85-87.
[4] 王文軻,陳倩,郭忠海.通過動態鏈接庫實現VB和Fortran的混合編程[J].電腦開發與應用,2002,15(2):22-23:28.
[5] 柯丹.基于GIS的鈾成礦信息提取模塊的開發及應用[D].核工業北京地質研究院,2005.
[6] 韓紹陽.基于GIS的砂巖型鈾礦弱信息提取及綜合評價方法技術體系研究[D].核工業北京地質研究院,2005.