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