韓紹陽,柯 丹,侯惠群,胡水清
(1.中國核科技信息與經(jīng)濟研究院,北京 100048;2.核工業(yè)北京地質(zhì)研究院,北京 100029;3.中國石油勘探開發(fā)研究院,北京 100083)
隨著我國鈾資源開發(fā)和勘查工作的深入進行,在地表或近地表發(fā)現(xiàn)大規(guī)模鈾資源的可能性已經(jīng)很小,尋找深部鈾礦床是滿足我國對戰(zhàn)略鈾資源需求的長遠保障。自20世紀90年代初以來,我國鈾資源勘查的主攻方向轉(zhuǎn)為產(chǎn)于中新生代沉積盆地、地表覆蓋厚的可地浸砂巖型鈾礦。為了快速、經(jīng)濟地尋找砂巖型鈾資源,必須重視在理論上更為先進的物化探信息源,吸收數(shù)學(xué)、計算機技術(shù)最新成果,有效地轉(zhuǎn)換、分離、提取、解釋和綜合物化探異常場信息。這不僅能更好地解決地質(zhì)構(gòu)造等間接找礦問題,在鈾礦床(體)直接發(fā)現(xiàn)、空間定位等方面,更能起到獨特的作用。
GIS技術(shù)的廣泛應(yīng)用實現(xiàn)了鈾礦地質(zhì)工作的現(xiàn)代化,為綜合找礦和高效準確預(yù)測提供了良好的條件和環(huán)境。但是阻礙GIS深層次應(yīng)用的“瓶頸”是:以數(shù)據(jù)采集、存儲、管理、查詢檢索和制圖等功能為主的商業(yè)化GIS軟件尚不能滿足鈾資源勘查評價中物化探數(shù)據(jù)處理的需求,直接影響到了鈾資源勘查評價中GIS的效益和生命力。為了提高GIS與物化探技術(shù)在砂巖型鈾礦勘查領(lǐng)域中的應(yīng)用效率,基于A rcGISEngine組件開發(fā)了界面友好、操作簡單,集多源數(shù)據(jù)管理、區(qū)域物化探數(shù)據(jù)處理、綜合制圖和綜合評價等功能為一體的砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理系統(tǒng),將砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理方法與GIS軟件有機地融合在一起,構(gòu)建了砂巖型鈾礦區(qū)域物化探成礦信息提取技術(shù)平臺,在多個盆地的砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理過程中發(fā)揮了重要作用,取得了較好的應(yīng)用效果。
依據(jù)砂巖型鈾礦勘查評價過程中區(qū)域物化探成礦信息提取的需求,設(shè)計的系統(tǒng)功能可以大致歸結(jié)為兩大模塊:常用GIS功能模塊和物化探專業(yè)處理功能模塊。兩大功能模塊具有統(tǒng)一的操作界面,而且共享同一多源地學(xué)信息數(shù)據(jù)庫。為了能夠?qū)崿F(xiàn)與主流G IS商業(yè)軟件的數(shù)據(jù)共享,系統(tǒng)軟件的數(shù)據(jù)格式采用了EsriG IS軟件的數(shù)據(jù)格式,即:Shapefiles矢量數(shù)據(jù)和G ridfiles柵格數(shù)據(jù)。
信息系統(tǒng)中的GIS功能主要包括視圖管理、矢量數(shù)據(jù)的查詢和檢索、屬性管理、圖形操作、空間分析及制圖輸出等。
(1)視圖管理:主要包括基本的視圖操作,如新建視圖、打開視圖和保存視圖;還包括矢量和柵格數(shù)據(jù)的添加、轉(zhuǎn)換存儲、刪除和更新;視圖漫游、縮放和距離測量。
(2)矢量數(shù)據(jù)的查詢和檢索:能夠快速準確地對視圖中的矢量(包括點、線、面),進行查詢檢索,根據(jù)查詢的方式不同,又分為空間查詢和屬性查詢。
(3)屬性數(shù)據(jù)管理:包括對屬性表中字段、記錄的操作、圖元屬性值的查詢和修改等。
(4)圖形操作:包括圖形要素的添加、刪除、修改、移動、旋轉(zhuǎn)、復(fù)制和粘貼等。
(5)空間分析:包括矢量數(shù)據(jù)和柵格數(shù)據(jù)空間分析功能。矢量數(shù)據(jù)空間分析包括點面、點線、線面圖層的疊置以及它們之間的交叉、分割、聯(lián)合、拼接、合并等操作;柵格數(shù)據(jù)空間分析包括柵格圖層之間的合并、統(tǒng)計計算、變換處理和布爾邏輯運算等。
(6)制圖輸出:包括基本圖例的顯示、多種色彩分級方式、地圖、比例尺等信息,支持多種格式的圖像輸出,如JPEG、BMP和TIFF等。
根據(jù)系統(tǒng)需求分析,專業(yè)處理功能包括數(shù)據(jù)預(yù)處理、重磁數(shù)據(jù)處理、地質(zhì)數(shù)據(jù)處理和綜合評價方法。
(1)數(shù)據(jù)預(yù)處理:包括網(wǎng)格數(shù)據(jù)的滑動平均、重采樣、空區(qū)補值、擴邊處理、正則化濾波以及能量濾波等。
(2)重磁數(shù)據(jù)處理:重磁數(shù)據(jù)處理分為2個部分:數(shù)據(jù)的常規(guī)處理和弱信息的提取。常規(guī)處理方法包括磁源重力轉(zhuǎn)換、解析延拓、化磁極、方向?qū)?shù)、PARKER和Euler反褶積反演;弱信息提取方法包括弱異常增強、二次差分、自調(diào)節(jié)濾波、相關(guān)分析法和奇異值分解等。
(3)放射性數(shù)據(jù)處理:主要有各種放射性數(shù)據(jù)比值、鈾富集系數(shù)、變異系數(shù)、空間相關(guān)性分析、鈾成礦有利參數(shù)(U 2、U3、U5)、SA 分形等方法。
(4)綜合評價方法:對各種原始信息或提取得到的信息進行綜合,綜合評價模型包括專家打分法和證據(jù)權(quán)重法等。
基于GIS進行專業(yè)應(yīng)用系統(tǒng)的開發(fā),主要采用2種方式[1]:①宏語言二次開發(fā):利用通用型GIS軟件實現(xiàn)基本的GIS功能;專業(yè)處理功能模塊利用GIS軟件提供的二次開發(fā)宏語言或者利用宏語言調(diào)用專業(yè)處理功能模塊的應(yīng)用程序或動態(tài)鏈接庫來實現(xiàn),還可以通過OLE或DDE方式來實現(xiàn)。②組件式GIS二次開發(fā):在集成開發(fā)環(huán)境中嵌入組件式GIS軟件,利用組件式GIS軟件實現(xiàn)常用的G IS功能,然后利用集成開發(fā)語言(如Visual C++)開發(fā)專業(yè)處理功能模塊。宏語言二次開發(fā)簡單易行,但與集成開發(fā)語言相比,宏語言實現(xiàn)復(fù)雜算法的能力有限,執(zhí)行效率低,程序的穩(wěn)定性和移植性均較差,其最大的不足就是開發(fā)出來的應(yīng)用系統(tǒng)必須依賴于通用型GIS軟件平臺而存在,而往往由于正版GIS軟件的價格較高,因此會給用戶帶來較大的經(jīng)濟負擔(dān)?;诮M件式GIS開發(fā)是目前最流行的GIS二次開發(fā)方式,其最大的優(yōu)點就是開發(fā)出來的應(yīng)用系統(tǒng)能夠完全脫離龐大的GIS軟件平臺,以較少的代價獲取更經(jīng)濟的GIS應(yīng)用[2]。
目前主流的組件式GIS軟件主要有ESRI的A rcObjects、MapObjects以及新推出的A rcGIS Engine、MapInfo公司的MapX和Intergraph公司的Geomedia Objects等。A rcGIS Engine是一個基于ArcObjects構(gòu)建的,面向開發(fā)人員的嵌入式工具包,支持幾乎所有的標準開發(fā)環(huán)境,由控件、工具和對象庫3部分組成。工具包括按鈕、工具集和菜單,它們可以被放置在工具條控件上;A rcGIS Engine提供了20多個對象庫,每個對象庫均包含了針對不同應(yīng)用的接口函數(shù),用戶可以根據(jù)需要選擇相應(yīng)的對象庫。在Visual Basic6.0開發(fā)環(huán)境中,基于 A rcGIS Engine組件開發(fā)了砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理系統(tǒng),借助A rcGIS Engine實現(xiàn)常用的GIS功能,利用基于動態(tài)鏈接庫的混合編程技術(shù)實現(xiàn)專業(yè)化物化探數(shù)據(jù)處理功能。系統(tǒng)中部分GIS功能,如視圖的縮放和移動等,可以通過用戶自定義的方式添加A rcGISEngine提供的工具按鈕實現(xiàn),但如圖例編輯和屬性查詢等無法利用工具按鈕完成的功能,則需要通過調(diào)用A rcG IS Engine對象庫中的函數(shù)進行編程加以實現(xiàn)。
A rcGISEngine是由一組核心的ArcObjects包組成,因此利用A rcGIS Engine進行開發(fā),只需要了解A rcGISEngine開發(fā)包的接口,并且按照基于接口編程原理即可進行軟件的應(yīng)用開發(fā)和功能擴展。
混合編程(M ixed Programm ing)是采用2種或2種以上的編程語言進行組合編程,彼此相互調(diào)用,進行參數(shù)的傳遞,共享數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)信息。既可以發(fā)揮各種語言的長處,又能解決使用單獨一種語言存在的缺陷。此外,還能利用已有的各種程序模塊、目標庫程序模塊在短時間內(nèi)組成新的應(yīng)用程序,從而縮短軟件的開發(fā)時間,降低成本,提高軟件的效益。區(qū)域物化探數(shù)據(jù)處理核心程序,通常由Fortran和VC++語言編寫,可改寫為動態(tài)鏈接庫文件(DLL),供其他語言調(diào)用。在進行混合編程時,需要注意函數(shù)命名約定和參數(shù)傳遞方式。命名約定是為了解決不同語言對名稱標識符(如變量名、參數(shù)名、過程名和函數(shù)名等)的不同處理,對目標文件名的不同長度限制的約定;參數(shù)傳遞方式的一致性直接影響到程序調(diào)用的正確性,因此發(fā)送參數(shù)的方式和接收參數(shù)的方式要完全一致。
例如在VB平臺中可利用VB語言為程序設(shè)計友好的操作界面,通過混合編程技術(shù)調(diào)用已有的由Fortran和VC等語言編寫的功能強大的專業(yè)化處理程序(已改寫為動態(tài)鏈接庫文件),實現(xiàn)友好的操作界面與強大的數(shù)據(jù)處理功能的緊密結(jié)合[3]。VB與Fortran和VC++之間的參數(shù)類型對應(yīng)關(guān)系如表1所示,在VB環(huán)境中對函數(shù)進行調(diào)用時,參數(shù)的類型要嚴格按照表1中的對應(yīng)關(guān)系進行定義[4]。
表1 VB、FORTRAN和VC++之間的參數(shù)類型對應(yīng)關(guān)系Table1 Corresponding relations between VB,FORTRAN and VC++
砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理系統(tǒng)的主界面按照標準的Window s界面風(fēng)格進行設(shè)計,由菜單、工具條、圖例內(nèi)容表、視圖和狀態(tài)欄5部分組成(圖1~圖3)。各種GIS基本功能及鈾成礦信息提取功能也都具有非常友好的人機交互界面。同時,為了方便用戶了解各種鈾成礦信息提取方法的原理及參數(shù)設(shè)置,軟件提供了內(nèi)容豐富的幫助文檔。
圖1 數(shù)據(jù)處理系統(tǒng)添加專題界面Fig.1 The interface of adding theme in the data processing system
圖2 矢量數(shù)據(jù)的屬性表管理界面Fig.2 The interface of attribute tab lemanagement of vector data
圖3 空區(qū)補值及擴邊程序界面Fig.3 The program interface of fill-in value in the empty area and enlargingmargins
軟件中基本的GIS功能大部分可以直接通過A rcG IS Engine提供的工具按鈕來實現(xiàn),不需要進行任何編程,但是還有一些功能,如網(wǎng)格專題的添加、空間屬性查詢、圖例編輯等等都是需要通過編程來實現(xiàn)的。以下分別介紹地圖的縮放功能和網(wǎng)格專題添加等功能的具體實現(xiàn)過程。
4.2.1 地圖縮放功能的實現(xiàn)
(1)在VisualBasic 6.0開發(fā)環(huán)境下,添加地圖控件(ESRIMapControl)和工具條控件(ESRI ToolbarControl)2個組件到Visual Basic 6.0的組件欄中,并把它們拖曳到應(yīng)用程序的界面中,分別命名為MapControl和ToolBar。
(2)在ToolBar控件上點擊右鍵,打開屬性設(shè)置頁。在“General”項中將 Too lBar的“Buddy”屬性設(shè)置為 MapControl,然后在“Item s”項中點擊“Add”按鈕,打開“Contro ls Commands”頁,選擇地圖的縮小和放大按鈕直接拖曳到ToolBar中。
(3)在MapContro l上點擊右鍵,打開屬性設(shè)置頁,可以在“General”項中添加項目文件或者在“Map”項中加入圖層文件(Layer Files)或矢量文件(Shape Files)。
(4)保存、編譯并運行應(yīng)用程序,就可以進行地圖的縮放操作了。
以同樣的方式,類似地可以實現(xiàn)地圖的旋轉(zhuǎn)、刷新、移動、創(chuàng)建等值線等功能。
4.2.2 網(wǎng)格專題添加功能的實現(xiàn)
直接在主程序下進行專題添加功能的開發(fā),分為以下4步:
(1)設(shè)計專題添加對話框,界面如圖1所示,在該功能中也包括Shpefiles格式的矢量文件和影像文件的添加功能。
(2)由于網(wǎng)格專題(GRID Files)是以文件夾形式保存的,沒有專用的擴展名。在所有的網(wǎng)格專題相應(yīng)的文件夾中都包括一個log文件和擴展名為xm l的文件以及一些擴展名為adf的文件,而且這些文件的名稱都是固定不變的。因此,需要將包含這些特定文件的文件夾查找出來,并將查找到的文件夾名稱顯示在添加列表中,并給它們制定一個共有的圖標。這些都需要在Visual Basic6.0中編程來實現(xiàn),查找網(wǎng)格專題文件夾的程序代碼在此省略。
(3)編寫網(wǎng)格專題添加的程序代碼。下面是程序的核心代碼[5]:
(4)保存、編譯并運行程序,就可以實現(xiàn)網(wǎng)格專題的添加了。
4.2.3 屬性數(shù)據(jù)管理功能的實現(xiàn)
矢量數(shù)據(jù)的屬性管理功能包括字段操作、屬性修改等功能。考慮到屬性管理功能的特殊性和為了系統(tǒng)集成的方便,直接在系統(tǒng)主程序中對其進行開發(fā),而不采用創(chuàng)建命令或工具的方式開發(fā),其實現(xiàn)可以分為以下4步:
(1)在主程序界面下,添加一個對話框窗體及其相應(yīng)的控件,其中DataG rid控件用來顯示數(shù)據(jù),程序運行的界面如圖2所示。
(2)讀出當(dāng)前矢量圖層的所有屬性,并將其顯示到DataG rid控件中(代碼略)。
(3)屬性表的字段操作功能包括添加字段、修改字段和刪除字段。
添加字段功能的核心代碼如下:
Select Case comFieldType.Text判斷字段屬性
分別就長整型、浮點型、雙精度型、日期型、文本型進行討論
從選定的圖層獲取要素
pFeatureClass.AddField pField對要素添加字段
字段修改和字段刪除的實現(xiàn)思路與字段添加相似,在此不再闡述。
(4)屬性編輯功能的實現(xiàn),通過點擊界面屬性編輯菜單,開始屬性數(shù)據(jù)的修改和添加,并且編輯結(jié)束,可以保存到數(shù)據(jù)文件當(dāng)中,實現(xiàn)屬性的永久更改(代碼略)。
以同樣的方式實現(xiàn)了圖層標注、空間查詢和圖例編輯等功能,不再具體闡述。
專業(yè)處理功能實現(xiàn)的基本思路,就是先把需要處理的網(wǎng)格專題圖層(GRID Files)轉(zhuǎn)換成文本文件,然后再調(diào)用動態(tài)鏈接庫中的專業(yè)處理函數(shù)對文本文件進行處理,最后再將處理得到的結(jié)果文本文件轉(zhuǎn)換成柵格專題并導(dǎo)入到系統(tǒng)的當(dāng)前視圖中進行其他分析。下面以空區(qū)補值及擴邊功能的實現(xiàn)為例來詳細說明,可以分為以下3步[6]。
(1)設(shè)計參數(shù)設(shè)置對話框(圖3)。在操作選項中,用戶可以選擇進行空區(qū)補值、擴邊或既空區(qū)補值又擴邊等操作。程序提供了兩種插值算法:算術(shù)平均算法和加權(quán)平均算法。在空值區(qū)域的數(shù)值文本框中用戶可以輸入空區(qū)值的數(shù)值,系統(tǒng)默認值為-9 999.0;在擴邊數(shù)設(shè)置中,可以分別上下左右4個方向的擴邊數(shù)。
(2)將網(wǎng)格專題轉(zhuǎn)換成文本文件。定義了函數(shù)G ridToASCII進行網(wǎng)格到文本的轉(zhuǎn)換,函數(shù)的返回值是文本文件的輸出路徑和名稱,核心代碼如下:
(3)調(diào)用Fortran動態(tài)鏈接庫中的FunEmpty函數(shù)進行空區(qū)補值及擴邊處理,程序代碼如下:
(4)將處理后的文本文件轉(zhuǎn)換成網(wǎng)格專題,程序代碼如下:
pRaLayer.CreateFromDataset pRaDataset'從柵格數(shù)據(jù)集創(chuàng)建柵格圖層
其中ASCIIToGrid函數(shù)的功能是將文本文件轉(zhuǎn)換成柵格數(shù)據(jù)集,函數(shù)的返回值是柵格數(shù)據(jù)集,核心代碼如下:
在上面的代碼中,利用GridToASCII函數(shù)將GRID專題轉(zhuǎn)換為文本文件,然后調(diào)用FunEm pty函數(shù)對數(shù)據(jù)進行空區(qū)補值及擴邊處理,最后用ASCIIToGrid函數(shù)將處理的結(jié)果轉(zhuǎn)換為柵格數(shù)據(jù)集,再導(dǎo)入到柵格圖層中。其他專業(yè)處理功能的實現(xiàn)與空區(qū)補值及擴邊功能的實現(xiàn)是相似的。
基于組件式GIS開發(fā)砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理系統(tǒng),大大降低了軟件開發(fā)的難度,并提高了開發(fā)效率,增強了系統(tǒng)的靈活性和開放性。開發(fā)出來的砂巖型鈾礦區(qū)域物化探數(shù)據(jù)處理系統(tǒng)軟件,界面友好,操作簡便且功能實用,非專業(yè)人員易于掌握,不僅具有強大的專業(yè)處理功能,而且其GIS功能也可以完全不遜于通用型GIS軟件,同時還能夠完全脫離通用型GIS軟件平臺而獨立存在。該系統(tǒng)軟件已成功應(yīng)用于伊犁、鄂爾多斯和松遼盆地等多個地區(qū)的砂巖型鈾礦勘查評價,取得了較好的應(yīng)用效果,并獲得了國家版權(quán)局頒發(fā)的計算機軟件著作權(quán)登記證書。筆者旨在“拋磚引玉”,推動GIS技術(shù)在鈾資源物化探勘查評價領(lǐng)域內(nèi)的應(yīng)用進展,文中不足之處,還望各位專家及同行批評指正。
[1] 宋關(guān)福,鐘耳順.組件式地理信息系統(tǒng)研究與開發(fā)[J].中國圖像圖形學(xué)報,1998,3(4):313-317.
[2] 李朝峰,王杰,王桂粱.基于軟件組件化技術(shù)地理信息系統(tǒng)開發(fā)[J].四川測繪,2002,25(2):51-53.
[3] 周振紅,楊國錄,周洞汝,等.Fortran與V isual Basic混合編程的研究[J].武漢水利電力大學(xué)學(xué)報,1999,32(2):85-87.
[4] 王文軻,陳倩,郭忠海.通過動態(tài)鏈接庫實現(xiàn)VB和Fortran的混合編程[J].電腦開發(fā)與應(yīng)用,2002,15(2):22-23:28.
[5] 柯丹.基于GIS的鈾成礦信息提取模塊的開發(fā)及應(yīng)用[D].核工業(yè)北京地質(zhì)研究院,2005.
[6] 韓紹陽.基于GIS的砂巖型鈾礦弱信息提取及綜合評價方法技術(shù)體系研究[D].核工業(yè)北京地質(zhì)研究院,2005.