龔紅蕾,劉俊長,師淑娟,張亞東
(河北省地球物理勘查院,河北 廊坊 065000)
等值線平面圖是物化探成果最主要的一種表達方式,如地球化學圖、視極化率等值線平面圖、△T等值線平面圖等,為更詳細地反映物化探參數(shù)的含量及其分布特征,這類等值線圖件通常需要標注極值。目前在常用的等值線圖制作軟件中,具有極值標注功能的有地調(diào)局發(fā)展中心的GeoExpl、新疆金維的GeoIPAS等,但這些軟件制圖編輯功能相對較弱,使用起來感覺不便。MapGIS具有強大的制圖編輯功能[1],其圖形文件已成為地礦行業(yè)最主要的標準格式[2],但其等值線圖沒有極值標注功能。為了實現(xiàn)MapGIS等值線圖極值點的標注,作者利用其組件技術(shù)及特有算法,在VB環(huán)境下實現(xiàn)了MapGIS等值線圖極值點的自動標注,為廣大地質(zhì)工作者利用MapGIS制作內(nèi)容齊全的等值線圖,提供了一個有效途徑。
組件技術(shù)是一種面向?qū)ο蟮能浖_發(fā)技術(shù),它把對象及其數(shù)據(jù)和方法進行了封裝,主要包括動態(tài)鏈接庫(DLL)和Active控件(OCX)文件。在組件技術(shù)框架下,人們開發(fā)出功能各異的組件,然后將它們進行適當?shù)慕M合,實現(xiàn)各種復雜的應用。
為更好地利用MapGIS進行二次開發(fā),武漢中地公司在該套軟件中提供了一系列的組件[3],如基礎組件 MapGISBasCom1.dll、圖形顯示組件MapGISDspCom.dll、圖層管理組件 MapGISLayerCom.dll等。采用Visual Basic語言利用 Map-GIS組件進行二次開發(fā)的方法步驟如下[4-6]。
(1)從Visual Basic的Project(工程)菜單中選擇References(引用),References對話框出現(xiàn)后,選中復選框中所需的類型庫,如MapGISBasCom1 1.0Type Library。
(2)聲明和為對象分配內(nèi)存空間。如
(3)使用對象的方法、屬性。
如:取點工作區(qū)中點對象的數(shù)目
該算法的基本原理,是所要標注的極值點包含在等值線圖上每一個最小閉合區(qū)中,為敘述方便我們將最小閉合區(qū)稱為極值區(qū)。求取落在極值區(qū)內(nèi)所有點的極值和點位坐標,根據(jù)圈閉極值區(qū)的等值線的高程值,判斷所要標注極值是極大值還是極小值,按判斷結(jié)果進行標注。對所有的極值區(qū)進行上述處理,從而完成整張圖的極值點標注。
具體算法是首先讀入原始數(shù)據(jù),依據(jù)點位坐標形成點工作區(qū)PntObj,將觀測值與相應的點進行屬性掛接。調(diào)入觀測值的等值線區(qū)文件,挑選包含極值的等值線區(qū)即上述的極值區(qū),并形成新的工作區(qū)MyregObj。將PntObj與MyregObj進行點對區(qū)的相交分析,結(jié)果存入點工作區(qū)KongJianPntO-bj中。該點工作區(qū)中每個點的屬性將包含所在極值區(qū)的ID和觀測值,求取KongJianPntObj中ID值相同點的觀測值屬性的極大值和極小值,并形成極大值和極小值數(shù)組,該數(shù)組中包含極值區(qū)的ID及極值點的坐標。依據(jù)極值區(qū)的ID提取包含該區(qū)的等值線,將等值線的高程值與極值數(shù)組中的極值進行比較,判斷所要標注極值的屬性。如果是極大值,則標注極大值的子圖符號和相應的極值注釋;否則標注極小值的相關(guān)內(nèi)容。處理完所有的ID值,標注工作即告結(jié)束。算法流程見圖1。
本算法中的核心算法是挑選極值區(qū)到極值區(qū)工作區(qū)、點對區(qū)的相交分析和依據(jù)ID提取所圈閉的極值區(qū)的等值線的高程值,詳細說明如下。
2.2.1 挑選極值區(qū)并形成極值區(qū)工作區(qū)
為挑選極值區(qū),首先應了解極值區(qū)的特點。極值區(qū)首先是閉合的獨立區(qū),其內(nèi)部不能疊合其它的區(qū)。圖2顯示了等值線圖中閉合區(qū)的類型,共有四種類型的閉合區(qū),它們均由1圈(單環(huán))弧段圈閉,但第4類型不是需要挑選的極值區(qū),顯然由一圈弧段圈閉的閉合區(qū)不完全是極值區(qū)。從圖2看,1類至3類型的閉合區(qū)是我們要挑選的極值區(qū)。觀察圈閉閉合區(qū)的弧段數(shù),類型1由一條弧段圈閉,類型2由二條弧段圈閉,類型3由三條弧段圈閉,類型4由四條弧段圈閉。從以上分析可以看出由1條至3條弧段構(gòu)成的單圈弧閉合區(qū)是我們所要的極值區(qū),主要代碼如下。
圖1 算法流程圖Fig.1 Algorithm flow chart
圖2 閉合區(qū)類型示意圖Fig.2 Diagram for the closed section types
2.2.2 點對區(qū)的空間相交分析[7]
點對區(qū)的空間相交分析是地理信息系統(tǒng)的特有功能[8-9],能夠把空間上與特定區(qū)重合的點從眾多的點中分離出來,所提取的點同時具有點和重合區(qū)的屬性[10],為從不同的極值區(qū)內(nèi)求得觀測值的極值提供了方便。
2.2.3 提取所圈閉極值區(qū)的等值線的高程值
為確定所要標注的極值區(qū)內(nèi)的極值是極大值還是極小值,需要提取圈閉該極值區(qū)的等值線的高程屬性值,由該屬性值與求得的極值進行比較,從而確定所需標注極值的特性。極值點位于閉合區(qū)內(nèi),離極值點最近的線就是圈閉極值區(qū)的等值線,該等值線必須是由工作區(qū)提取的。
(1)原始數(shù)據(jù):原始數(shù)據(jù)存放在EXCEL工作薄的第一個工作表中,數(shù)據(jù)格式如下:
第一行為字段名:橫坐標,縱坐標,元素1、元素2、…、元素m。
以下各行為相應字段的數(shù)據(jù),其中橫坐標和縱坐標的單位為與制作等值線圖的橫坐標和縱坐標的單位一致。
(2)異常區(qū)文件:是由MapGIS的空間分析模塊形成的等值線區(qū)文件,并且在繪制等值線時選擇數(shù)據(jù)范圍與原始數(shù)據(jù)一致。
程序界面如圖3所示,如選中“保存粘點文件(含屬性)”,程序?qū)⑻崾颈4嬖紨?shù)據(jù)點文件,該文件已掛接點位及觀測值等屬性。
(1)點擊“開始”按鈕,開始計算,見圖3。
(2)彈出對話框,提示“打開原始數(shù)據(jù)工作薄”,打開原始數(shù)據(jù)EXCEL文件。這里如果打開的是網(wǎng)格化的點位數(shù)據(jù),在標注極值時將標注網(wǎng)格化的數(shù)據(jù),可靈活選擇。
(3)依次提示“開始 XX 元素的計算!”,見圖4。點擊“確定”,彈出“打開XX元素異常區(qū)文件”對話框,打開異常區(qū)文件,開始計算。
(4)所有元素計算完成后,退出程序界面。圖5是河北省某1∶200 000幅Fe2O3的計算實例。
圖5 計算實例Fig.5 Calculation example
該程序通過構(gòu)造MapGIS點數(shù)據(jù)工作區(qū),利用點與挑選的等值線極值區(qū)進行點對區(qū)的相交分析,提取出極值區(qū)內(nèi)的數(shù)據(jù)。應用求取的極值與極值區(qū)邊線的高程值,進行比較確定所標注極值的性質(zhì),進而完成計算。該程序解決了MapGIS繪制等值線圖進行極值自動標注的問題,為使MapGIS制作的物化探等值線圖更全面地表達觀測值的特性提供了方便,如地球化學圖通常要求標注極值,有了本程序可更好地發(fā)揮MapGIS的作用。
[1]中地軟件叢書編委會.MAPGIS地理信息系統(tǒng)參考手冊[M].武漢:武漢大學出版社,2002.
[2]劉俊長,龔紅蕾,劉軍恒,等.基于 MapGIS的彩色平剖圖的自動繪制[J].物探與化探,2009,33(5):592-594.
[3]武漢中地信息工程有限公司,北京中地時代軟件工程有限公司.MAPGIS組件開發(fā)手冊[M].武漢:武漢大學出版社,2002.
[4]楊本倫.Visual Basic開發(fā)技術(shù)大全[M].北京:清華大學出版社,2010.
[5]劉俊長,龔紅蕾,陳軍威,等.基于MapGIS組件技術(shù)實現(xiàn)化探異常參數(shù)的計算[J].物探化探計算技術(shù),2012,34(1):112-115.
[6]武漢中地數(shù)碼科技有限公司,北京中地時代軟件工程有限公司.MAPGIS二次開發(fā)培訓教程(VB)[M].武漢:武漢大學出版社,2004.
[7]劉俊長,龔紅蕾,張玉領,等.用MapGIS實現(xiàn)區(qū)域化探數(shù)據(jù)的空間分析[J].物探與化探,2008,32(6):690-692.
[8]郭仁忠.空間分析[M].武漢:武漢測繪科技大學出版社,1997.
[9]王家耀.空間信息系統(tǒng)原理[M].北京:科學出版社,2001.
[10]吳信才.MAPGIS地理信息系統(tǒng)[M].北京:電子工業(yè)出版社,2004.