李靖,王林飛,閆浩飛
(中國(guó)自然資源航空物探遙感中心,北京 100083)
航磁異常是航空磁測(cè)的重要成果之一,它是以航磁原始測(cè)量數(shù)據(jù)為基礎(chǔ),輔以位場(chǎng)轉(zhuǎn)化數(shù)據(jù),結(jié)合區(qū)域地質(zhì)構(gòu)造及其他物化探資料,綜合分析后進(jìn)行拾取的局部異常。通過(guò)對(duì)航磁異常的定性分析及定量解釋?zhuān)芍苯踊蜷g接地尋找礦床、區(qū)分和圈定各類(lèi)磁性地質(zhì)體、劃分某些成礦遠(yuǎn)景區(qū)、研究地質(zhì)構(gòu)造,以及為國(guó)民經(jīng)濟(jì)各部門(mén)提供基礎(chǔ)性地球物理資料[1]。
我國(guó)自開(kāi)始進(jìn)行航空磁法勘測(cè)至今已有60余年,測(cè)量比例尺由1∶100萬(wàn)至1∶1萬(wàn)不等,已覆蓋了中國(guó)大部分陸地和海域[2]。以航磁異常為主的航空物探異常已成為地質(zhì)找礦的重要信息之一,它不但對(duì)實(shí)時(shí)的找礦具有指導(dǎo)作用,更加對(duì)研究區(qū)域性地質(zhì)構(gòu)造具有重要意義,對(duì)地質(zhì)找礦戰(zhàn)略性部署提供重要參考。然而長(zhǎng)期以來(lái),由于嚴(yán)重缺乏對(duì)航磁異常信息全面、科學(xué)、有效的管理,雖然建立了基于Oracle的航空物探數(shù)據(jù)庫(kù),對(duì)航空物探數(shù)據(jù)進(jìn)行存儲(chǔ)管理[3],但對(duì)于航磁異常數(shù)據(jù)而言?xún)H僅將數(shù)據(jù)保存至數(shù)據(jù)庫(kù)中并不能充分發(fā)揮其作用,航磁異常的圖面展示受到很多技術(shù)上的制約,一定程度上限制了其服務(wù)提供?;诖?,筆者在對(duì)航磁異常數(shù)據(jù)進(jìn)行深入研究的基礎(chǔ)上,結(jié)合大量圖件及相關(guān)規(guī)范,采用二次開(kāi)發(fā)的形式,實(shí)現(xiàn)了對(duì)存儲(chǔ)在Oracle數(shù)據(jù)庫(kù)中的航磁異常數(shù)據(jù)進(jìn)行自動(dòng)渲染的功能。
圖1給出了航磁數(shù)據(jù)的生產(chǎn)流程,航空物探工作以項(xiàng)目為單位通過(guò)野外飛行作業(yè)獲取到的航磁ΔT數(shù)據(jù),經(jīng)數(shù)據(jù)處理解釋專(zhuān)家對(duì)數(shù)據(jù)進(jìn)行處理分析,形成本地?cái)?shù)據(jù),主要包括本地?cái)?shù)據(jù)庫(kù)形式的基礎(chǔ)數(shù)據(jù)、圖層數(shù)據(jù)形式的解釋評(píng)價(jià)成果數(shù)據(jù)、網(wǎng)格成果數(shù)據(jù);本地?cái)?shù)據(jù)經(jīng)人工數(shù)字制圖工作后,形成最終成果圖件。
圖1 航磁數(shù)據(jù)生產(chǎn)流程
根據(jù)信息化建設(shè)對(duì)全部數(shù)據(jù)的管理需要,通過(guò)數(shù)據(jù)采集軟件對(duì)成果數(shù)據(jù)及圖件進(jìn)行采集錄入,存儲(chǔ)至以ArcSDE為引擎進(jìn)行管理的Oracle數(shù)據(jù)庫(kù)中。為形成可發(fā)布的圖件,需要再次對(duì)數(shù)據(jù)進(jìn)行渲染,因此需大量的人工干預(yù)進(jìn)行數(shù)字制圖。
筆者通過(guò)對(duì)數(shù)據(jù)庫(kù)管理引擎的研究,明確了基于Oracle數(shù)據(jù)庫(kù)的制圖渲染的基本機(jī)制,即通過(guò)ArcSDE連接數(shù)據(jù)庫(kù),使用ArcGIS平臺(tái)進(jìn)行操作,依據(jù)數(shù)據(jù)屬性列手動(dòng)進(jìn)行子類(lèi)劃分,確定渲染方式(唯一值渲染或多字段唯一值渲染),使用*.style文件形式的符號(hào)庫(kù)與屬性?xún)?nèi)容進(jìn)行關(guān)聯(lián)匹配,依照相關(guān)行業(yè)標(biāo)準(zhǔn)規(guī)范為數(shù)據(jù)要素選擇對(duì)應(yīng)的制圖符號(hào),若無(wú)符合要求的符號(hào),則需打開(kāi)符號(hào)管理器,新建或者在已有符號(hào)基礎(chǔ)上制作完成所需符號(hào),匹配完成后,刷新圖面并將符號(hào)信息進(jìn)行保存[3-6]。在渲染過(guò)程中,主要難點(diǎn)有二:其一,項(xiàng)目工作中,是按照解釋工作逐步推進(jìn),逐一對(duì)異常數(shù)據(jù)進(jìn)行分類(lèi)及渲染,此種方法明顯不適用于大數(shù)據(jù)量的數(shù)據(jù)庫(kù)管理;其二,數(shù)據(jù)庫(kù)平臺(tái)的渲染方式是對(duì)數(shù)據(jù)進(jìn)行分類(lèi),而后對(duì)每一類(lèi)別進(jìn)行渲染,最后將渲染信息保存至工程文件中,即數(shù)據(jù)庫(kù)每更新一次,就要對(duì)數(shù)據(jù)重新進(jìn)行一次渲染工作,工作量巨大且重復(fù)?;诖耍叫枰环N能夠滿(mǎn)足數(shù)據(jù)表達(dá)需求的自動(dòng)渲染工具。
航磁異常數(shù)據(jù)作為點(diǎn)類(lèi)型數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫(kù)中,在制圖表達(dá)過(guò)程中所需的信息有五種,其一為坐標(biāo)信息,以雙精度浮點(diǎn)型存儲(chǔ),記錄異常點(diǎn)的經(jīng)緯度信息;其二,異常軸向?yàn)殡p精度浮點(diǎn)型,記錄異常的軸向角度,以正東方向?yàn)榱?,遵循右手螺旋法則,單位為度;其三,異常性質(zhì)為無(wú)符號(hào)整型,記錄解釋專(zhuān)家對(duì)磁異常的定性劃分,通過(guò)數(shù)據(jù)字典可查找原始語(yǔ)義,即引起磁異常的巖體性質(zhì),如04表示由輝長(zhǎng)巖引起的局部異常;其四,異常分類(lèi)為無(wú)符號(hào)整型,記錄解釋專(zhuān)家對(duì)異常的半定量級(jí)別劃分,如01表示甲一類(lèi)異常;其五,異常編號(hào)為可變長(zhǎng)度的字符串類(lèi)型,用于記錄解釋專(zhuān)家為方便描述對(duì)異常進(jìn)性的編號(hào),如新C-2014-126,表示該異常地處新疆,為航磁異常,測(cè)量于2014年,在測(cè)量區(qū)內(nèi)排序編號(hào)126。
由于異常點(diǎn)圖層的圖面表達(dá)信息非常豐富,與多個(gè)屬性相關(guān),每一屬性又有各自的數(shù)據(jù)字典,各數(shù)據(jù)字典項(xiàng)對(duì)應(yīng)一符號(hào),若想表達(dá)完全,則需從三個(gè)符號(hào)類(lèi)別中分別選出一個(gè)再進(jìn)行疊加,而若將三類(lèi)符號(hào)全部排列組合在一起形成一個(gè)新的符號(hào),則會(huì)使符號(hào)庫(kù)指數(shù)級(jí)增長(zhǎng),特別是異常軸向信息屬性,其并非數(shù)據(jù)字典,是數(shù)值型數(shù)據(jù),因其無(wú)固定值,在圖面表達(dá)時(shí)是根據(jù)其軸向?qū)Ψ?hào)角度值進(jìn)行設(shè)置,也就無(wú)法成為固定的符號(hào),因此在項(xiàng)目制圖工作對(duì)航磁異常點(diǎn)進(jìn)行表達(dá)時(shí),一般使用疊加圖層的方式來(lái)進(jìn)行渲染,即使用三個(gè)相同的點(diǎn)圖層進(jìn)行不同的符號(hào)化,疊加顯示在圖面上以表達(dá)其相關(guān)信息。如表1所示,其中一數(shù)據(jù)層用于表達(dá)異常分類(lèi),選擇中空的符號(hào)來(lái)表達(dá),且不遮擋異常性質(zhì)的花紋及顏色,一數(shù)據(jù)層用于表達(dá)異常性質(zhì),用顏色及花紋表達(dá)。同理,異常軸向也用一數(shù)據(jù)選用中空符號(hào),外加軸向示意表達(dá),對(duì)于異常編號(hào),則對(duì)任一圖層進(jìn)行注釋標(biāo)注,完成整個(gè)異常的圖面表達(dá)。
表1 航磁異常數(shù)據(jù)渲染方式
以上制圖工作中所需的符號(hào)形式由《航空物探數(shù)字制圖與印刷技術(shù)規(guī)定》明確,然而在實(shí)際工作中,規(guī)定所列舉的符號(hào)信息有所欠缺,重要信息異常類(lèi)別,體現(xiàn)了引起異常的巖體性質(zhì),其多樣性基本涵蓋了大部分巖石種類(lèi),在項(xiàng)目工作中,由于是手工制圖,常常選取就近花紋的已有符號(hào),在圖例中加以標(biāo)注區(qū)分。此種方法對(duì)小片區(qū)具有特定找礦方向的圖件較為實(shí)用,但對(duì)于大范圍、地質(zhì)構(gòu)造多樣、巖性種類(lèi)各異、異常數(shù)量多的綜合研究圖件而言,此種方法會(huì)導(dǎo)致在圖面上使用相同符號(hào)表現(xiàn)不同性質(zhì)異常的現(xiàn)象。因此,筆者結(jié)合數(shù)據(jù)庫(kù)數(shù)據(jù)及相關(guān)圖件,參照國(guó)家標(biāo)準(zhǔn)《GBT958-2015區(qū)域地質(zhì)圖圖例》及其他相關(guān)資料,對(duì)航空物探工作中所用到的航磁異常類(lèi)別符號(hào)進(jìn)行了整理歸納,完善異常類(lèi)別符號(hào)。在符號(hào)制作時(shí),使用矢量字體文件,通過(guò)符號(hào)管理器,在模板的基礎(chǔ)上制作完成相應(yīng)符號(hào),形成航空物探異常符號(hào)庫(kù)[8]。
航空物探數(shù)據(jù)庫(kù)中的異常數(shù)據(jù),由于數(shù)據(jù)屬性齊全,要表達(dá)在圖面上的信息,已劃分為有數(shù)據(jù)字典的屬性字段,而通過(guò)數(shù)據(jù)采集軟件錄入至數(shù)據(jù)庫(kù)中的數(shù)據(jù),屬性完備,可直接根據(jù)屬性字段內(nèi)容與符號(hào)庫(kù)內(nèi)符號(hào)進(jìn)行匹配并進(jìn)行其他屬性設(shè)置,完成數(shù)據(jù)渲染。
為簡(jiǎn)化人工操作,實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)的自動(dòng)渲染,主要需解決以下問(wèn)題:第一,航空物探數(shù)據(jù)庫(kù)的建設(shè)是為了實(shí)現(xiàn)信息化管理,但先前工作中多圖層疊加顯示的方法要在數(shù)據(jù)庫(kù)中對(duì)異常數(shù)據(jù)圖層存儲(chǔ)三遍,有違信息化管理的初衷[6-10],本軟件要對(duì)僅在數(shù)據(jù)庫(kù)中存儲(chǔ)一次的數(shù)據(jù)進(jìn)行自動(dòng)制圖;第二,航空物探數(shù)據(jù)庫(kù)并非針對(duì)某一項(xiàng)目,而是為將所有項(xiàng)目數(shù)據(jù)集中管理,因此,數(shù)據(jù)庫(kù)內(nèi)數(shù)據(jù)是在不斷增長(zhǎng),以往針對(duì)項(xiàng)目的圖件制作不存在此問(wèn)題,若要對(duì)新增數(shù)據(jù)進(jìn)行渲染,只能將數(shù)據(jù)拷貝至制圖界面重新手工制作,工作量大,易出錯(cuò),而航空物探數(shù)據(jù)庫(kù)內(nèi)信息量巨大,難以實(shí)現(xiàn)[11-15]。因此,筆者在航空物探數(shù)據(jù)庫(kù)管理引擎的基礎(chǔ)上,設(shè)計(jì)了對(duì)航磁異常單圖層數(shù)據(jù)進(jìn)行制圖渲染的流程,并使用原引擎接口進(jìn)行二次開(kāi)發(fā),實(shí)現(xiàn)航磁異常自動(dòng)渲染。
為遵從“高內(nèi)聚低耦合”的軟件設(shè)計(jì)思想,系統(tǒng)的流程按照三層架構(gòu)模式進(jìn)行設(shè)計(jì),即數(shù)據(jù)訪問(wèn)層層、業(yè)務(wù)邏輯層和顯示層[16]。其中數(shù)據(jù)訪問(wèn)層是整個(gè)系統(tǒng)的基礎(chǔ),用來(lái)對(duì)讀取數(shù)據(jù)庫(kù)數(shù)據(jù),并對(duì)其進(jìn)行劃分[12];處理層是自動(dòng)渲染的核心,包括各種接口的定義及實(shí)現(xiàn),主要實(shí)現(xiàn)不同屬性數(shù)據(jù)與符號(hào)的匹配及符號(hào)的相關(guān)參數(shù)設(shè)置及合成;顯示層為用戶(hù)提供可視化界面,通過(guò)繼承系統(tǒng)的二次開(kāi)發(fā)窗口,實(shí)現(xiàn)航磁異常數(shù)據(jù)的非默認(rèn)參數(shù)設(shè)置下對(duì)符號(hào)大小、顏色等參數(shù)設(shè)置的可視化顯示。
綜上,對(duì)航磁異常自動(dòng)渲染的流程設(shè)計(jì)如圖2所示,首先通過(guò)數(shù)據(jù)庫(kù)讀取接口獲取航磁異常數(shù)據(jù)的屬性字段內(nèi)容,根據(jù)獲取的屬性值與符號(hào)庫(kù)內(nèi)符號(hào)進(jìn)行匹配,再根據(jù)需要的符號(hào)參數(shù)對(duì)符號(hào)進(jìn)行設(shè)置,生成對(duì)應(yīng)的符號(hào),并暫時(shí)存入緩存,同時(shí)進(jìn)行判定,是否完成符號(hào)化所有信息的讀取,若未讀取完成,則對(duì)以上工作重新循環(huán),將新符號(hào)同時(shí)存入緩存,若已讀取完成,則將緩存中的符號(hào)作為符號(hào)層合成最終符號(hào),最后完成渲染工作,繪制至圖面[17]。
整個(gè)數(shù)據(jù)庫(kù)平臺(tái)的數(shù)據(jù)管理及服務(wù)平臺(tái)涉及的功能模塊眾多,在軟件研制過(guò)程中包括了 C、Fortan、VisualStudio C #、Visual Basic 等多種語(yǔ)言,由于各種語(yǔ)言的性能及特點(diǎn)不一致,作為基礎(chǔ)性的坐標(biāo)轉(zhuǎn)換接口,必須同時(shí)適應(yīng)多種語(yǔ)言的要求,因此要求坐標(biāo)函數(shù)必須形成統(tǒng)一的API函數(shù)供其他語(yǔ)言進(jìn)行訪問(wèn),一方面避免代碼的重復(fù)開(kāi)發(fā),減少研發(fā)工作量,另一方面方便對(duì)其進(jìn)行維護(hù)及擴(kuò)展[18-20]。
航空物探數(shù)據(jù)庫(kù)通過(guò)ArcSDE進(jìn)行管理,在授權(quán)終端機(jī)上可通過(guò)ArcGIS平臺(tái)進(jìn)行屬性查看及相關(guān)制圖、空間分析等操作,因此筆者通過(guò)二次開(kāi)發(fā),集成原ArcEngine相關(guān)接口及虛擬類(lèi),重新定義實(shí)現(xiàn)自動(dòng)渲染功能所需的類(lèi)對(duì)象,并進(jìn)行插件式開(kāi)發(fā),將其集成為ArcGIS平臺(tái)的拓展工具,在數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)中后,對(duì)其進(jìn)行自動(dòng)渲染,并將符號(hào)信息記錄至屬性庫(kù)中。實(shí)現(xiàn)自動(dòng)渲染所需類(lèi)主要包括三部分:實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀取及寫(xiě)入等操作的DataBaseop類(lèi);生成符號(hào)及標(biāo)注的MagNorSymbol類(lèi)及Label類(lèi),其中MagNorSymbol類(lèi)為PointSymbol類(lèi)的派生類(lèi),PointSynbol類(lèi)為點(diǎn)類(lèi)符號(hào)的基類(lèi),實(shí)現(xiàn)點(diǎn)符號(hào)的屬性控制,MagNorSymbol類(lèi)則是針對(duì)航磁異常所設(shè)計(jì)的符號(hào)類(lèi),通過(guò)數(shù)據(jù)庫(kù)接口讀取到的屬性合成最終所需的航磁異常符號(hào);最后是實(shí)現(xiàn)圖面渲染的MagRender類(lèi),定義渲染器并完成渲染。
圖2 航磁異常數(shù)據(jù)自動(dòng)渲染流程
圖3 異常點(diǎn)自動(dòng)渲染類(lèi)構(gòu)建
筆者依據(jù)上述設(shè)計(jì),構(gòu)建了航磁異常自動(dòng)渲染工具,并依照屬性對(duì)航磁異常進(jìn)行制圖渲染。如圖4所示,筆者選取部分?jǐn)?shù)據(jù)進(jìn)行還原,通過(guò)對(duì)比,可見(jiàn)二者基本一致,均符合相關(guān)標(biāo)準(zhǔn),達(dá)到根據(jù)數(shù)據(jù)對(duì)圖件進(jìn)行恢復(fù)的目標(biāo)。自動(dòng)渲染功能的研發(fā)大大拓展了航磁異常數(shù)據(jù)的應(yīng)用范圍,不但能夠?qū)⑺许?xiàng)目的航磁異常分布實(shí)時(shí)更新至一張圖,還能夠與其他解釋評(píng)價(jià)數(shù)據(jù)相互疊加進(jìn)行分析應(yīng)用,拓展了航磁數(shù)據(jù)的應(yīng)用領(lǐng)域。
圖 4成果圖件對(duì)比
數(shù)據(jù)渲染成圖是航空物探工作的重要成果之一,目前數(shù)據(jù)難以實(shí)現(xiàn)跨項(xiàng)目、跨平臺(tái)渲染,因此筆者以C#為編程語(yǔ)言,構(gòu)建航磁異常數(shù)據(jù)自動(dòng)渲染工具,實(shí)現(xiàn)了工具的研發(fā),最終成圖效果滿(mǎn)足航空物探工作圖件的要求,符合相關(guān)國(guó)家及行業(yè)規(guī)范。作為公共函數(shù),提供了標(biāo)準(zhǔn)的API接口,滿(mǎn)足不同開(kāi)發(fā)語(yǔ)言的調(diào)用,也方便對(duì)其進(jìn)行統(tǒng)一維護(hù)。此種方法思路及對(duì)象類(lèi),不僅可用于航磁異常的自動(dòng)渲染,更可加以應(yīng)用,對(duì)其他點(diǎn)類(lèi)數(shù)據(jù)進(jìn)行數(shù)據(jù)渲染,推動(dòng)航空物探數(shù)據(jù)的信息化應(yīng)用。