刁明光, 劉芳, 譚專條, 薛濤, 王彥佐
(1.中國地質(zhì)大學(xué)(北京) 信息工程學(xué)院,北京 100083; 2.中國國土 資源航空物探遙感中心,北京 100083)
礦產(chǎn)資源是不可再生資源,管理部門需嚴(yán)格按照有關(guān)規(guī)定,采用先進(jìn)的技術(shù)手段,對(duì)礦山開采工作進(jìn)行監(jiān)控管理。其中,利用遙感技術(shù)監(jiān)測礦山的開采狀況是一種高效、科學(xué)的手段。為有效記錄礦山開采信息,工作人員在獲得礦山開采監(jiān)控地區(qū)的礦山遙感監(jiān)測成果數(shù)據(jù)[1]后,需要提取遙感監(jiān)測成果數(shù)據(jù)的相關(guān)信息,結(jié)合遙感影像制作礦山遙感監(jiān)測解譯記錄表[2](簡稱解譯記錄表)。
解譯記錄表的主要填報(bào)內(nèi)容包括監(jiān)測區(qū)的空間信息和相應(yīng)的屬性信息。相關(guān)部門通常根據(jù)實(shí)際需要,制定解譯記錄表的模板。數(shù)據(jù)采集部門按模板的要求進(jìn)行數(shù)據(jù)填報(bào)。屬性信息用以描述礦山開采區(qū)域的礦權(quán)歸屬、礦山名稱和開采單位等信息,由監(jiān)測區(qū)矢量數(shù)據(jù)的屬性信息構(gòu)成;空間信息用以描述開采區(qū)域在遙感影像上的大小、形狀以及位置,主要以遙感影像與矢量要素疊加的圖像形式呈現(xiàn)。
一般情況下,解譯記錄表包含所有礦山開采區(qū)域的開采信息,且每個(gè)開采區(qū)域都有對(duì)應(yīng)的解譯記錄表。將解譯記錄表匯總后提交管理部門,管理部門通過瀏覽解譯記錄表可快速了解礦山資源開采狀況,獲取科學(xué)、直觀的數(shù)據(jù),為決策提供可靠依據(jù)。
目前,解譯記錄表的制作主要是由人工完成,技術(shù)人員利用ArcMap完成解譯記錄表的制作,但傳統(tǒng)手工解譯記錄表制作存在如下問題:
1)制表成本高,專業(yè)性強(qiáng)。制作解譯記錄表所依賴的ArcMap功能復(fù)雜,對(duì)計(jì)算機(jī)軟硬件要求高,制作人員需具備一定的專業(yè)知識(shí)。
2)制表工作量大、效率低。全國礦山開采區(qū)域眾多,每個(gè)開采區(qū)域均需制作相應(yīng)的解譯記錄表,制表數(shù)量龐大。技術(shù)人員手工提取制表數(shù)據(jù),不斷重復(fù)屬性數(shù)據(jù)復(fù)制、粘貼、解譯圖像制作、解譯記錄表合并等工作,操作繁雜,效率低。
3)制表格式不一致,數(shù)據(jù)準(zhǔn)確性低。礦山遙感監(jiān)測成果數(shù)據(jù)整理單位眾多,人工制作解譯記錄表無法保證統(tǒng)一格式和數(shù)據(jù)的準(zhǔn)確,不利于成果數(shù)據(jù)的規(guī)范化管理。
為此,研究一種能夠自動(dòng)提取礦山遙感監(jiān)測成果數(shù)據(jù),并自動(dòng)生成礦山遙感監(jiān)測解譯記錄表的方法并在軟件上加以實(shí)現(xiàn)十分必要。
解譯記錄表自動(dòng)生成是建立在礦山監(jiān)測成果數(shù)據(jù)的約束和規(guī)范描述基礎(chǔ)上,用于自動(dòng)生成解譯記錄表的礦山遙感監(jiān)測成果數(shù)據(jù),來源于礦山遙感監(jiān)測成果編制系統(tǒng)。使用此數(shù)據(jù)便于規(guī)范解譯記錄表的構(gòu)成要素(記錄內(nèi)容)。在此前提下,結(jié)合手工制作解譯記錄表的工作過程,設(shè)計(jì)符合實(shí)際需求的自動(dòng)制作解譯記錄表流程,并對(duì)制作流程進(jìn)行規(guī)范。
解譯記錄表的數(shù)據(jù)來源于礦山開采區(qū)域的礦山遙感監(jiān)測成果數(shù)據(jù),包括開采區(qū)的遙感影像及相關(guān)矢量圖層。其中,遙感影像主要為國產(chǎn)高分影像(IMG或GEOTIFF格式),矢量圖層由數(shù)據(jù)采集部門經(jīng)過實(shí)地測量制作并提交。圖層的屬性表必須包含解譯記錄表所需的屬性字段且字段的命名規(guī)則、數(shù)據(jù)精度一致,從而保證矢量圖層的規(guī)范以及數(shù)據(jù)的準(zhǔn)確性,為計(jì)算機(jī)自動(dòng)提取信息提供保障。
解譯記錄表的構(gòu)成要素分為屬性信息和空間信息2類。其中,屬性信息有文本和數(shù)字2種形式,空間信息由矢量圖層和遙感影像的形式呈現(xiàn)。
屬性信息主要來源于矢量圖層的屬性表,依據(jù)《礦山遙感監(jiān)測成果數(shù)據(jù)入庫要求》[3],屬性表需包括主要礦種、中心點(diǎn)地理坐標(biāo)、批準(zhǔn)礦權(quán)面積和存在問題等字段。
空間信息描述礦山開采區(qū)域矢量要素的大小和形狀等空間分布特征,由解譯圖像對(duì)礦山開采區(qū)域的空間分布特征進(jìn)行直觀描述。解譯圖像采用以一個(gè)開采區(qū)矢量要素為中心、遙感影像為背景的疊加方式進(jìn)行制作并包含地圖實(shí)際比例尺。
解譯記錄表的手工編制過程如圖1所示。
圖1 手工解譯記錄表編制流程
首先,由人工提取監(jiān)測區(qū)礦山遙感監(jiān)測成果數(shù)據(jù)中矢量圖層的屬性信息并填充解譯記錄表;然后,結(jié)合遙感影像制作解譯圖像,并將解譯圖像填充到對(duì)應(yīng)的解譯記錄表中;最后,引用解譯記錄表模板,為每個(gè)開采區(qū)域的矢量要素制作各自的解譯記錄表并將解譯記錄表匯總提交到管理部門。解譯記錄表自動(dòng)生成流程是基于手工制表過程的抽象而形成的,在制作方法上,將制作過程以工程的形式來呈現(xiàn),如圖2所示。在已有的礦山遙感監(jiān)測成果編制系統(tǒng)中新建工程后,加載規(guī)范后的監(jiān)測區(qū)成果數(shù)據(jù),選擇解譯記錄表功能,程序?qū)⒆詣?dòng)提取所需的屬性信息并緩存于系統(tǒng)中,完成所有解譯圖像制作后,可單擊導(dǎo)出所有解譯記錄表按鈕,程序即將緩存的屬性信息與對(duì)應(yīng)的解譯圖像填充到依據(jù)模板生成的解譯記錄表中,再合并為一個(gè)文檔輸出到指定的文件目錄中。
圖2 自動(dòng)解譯記錄表編制流程
解譯記錄表的自動(dòng)生成方法涉及2個(gè)關(guān)鍵點(diǎn):一是從遙感監(jiān)測成果數(shù)據(jù)中進(jìn)行有效信息提??;二是實(shí)現(xiàn)文檔數(shù)據(jù)的填充和圖片的插入,完成文檔的編輯工作。為此,采用自動(dòng)讀取遙感監(jiān)測成果系統(tǒng)中監(jiān)測區(qū)屬性數(shù)據(jù)并將其與矢量圖層等空間數(shù)據(jù)一一映射的方式,來進(jìn)行有效信息提取,并以嵌入式的方式將這些功能集成至礦山遙感監(jiān)測成果編制系統(tǒng)[1]中來實(shí)現(xiàn)解譯記錄表文檔的編輯工作。針對(duì)解譯記錄表制作過程中只使用ArcMap制圖及數(shù)據(jù)可視化等模塊中少部分功能對(duì)遙感監(jiān)測成果數(shù)據(jù)進(jìn)行信息提取這一特點(diǎn),采用基于AE(ArcGIS Engine)的二次開發(fā)模式,將AE提供的ArcGIS工具集成到宿主程序中[4],使解譯記錄表制作過程脫離ArcGIS Desktop單獨(dú)運(yùn)行,從而完成解譯記錄表的信息提取功能。信息提取完成后,結(jié)合文檔對(duì)象模型(document object model,DOM)對(duì)解譯記錄表進(jìn)行填充,最終實(shí)現(xiàn)解譯記錄表的自動(dòng)生成。
解譯記錄表自動(dòng)生成功能的整框架設(shè)計(jì)如圖3所示,在.Net Framework框架下,將解譯記錄表功能集成到礦山遙感監(jiān)測成果編制系統(tǒng)中,其中,解譯記錄表中需要嵌入AE的數(shù)據(jù)可視化組件、地圖制圖組件以及DOM。解譯記錄表功能通過調(diào)用AE標(biāo)準(zhǔn)接口實(shí)現(xiàn)信息提取,自定義的Records實(shí)體類緩存AE標(biāo)準(zhǔn)接口讀取的屬性信息和空間信息,同時(shí)在解譯記錄表功能中引用Microsoft.Office.Interop.Word類庫,并借助該類庫中的操作類完成解譯記錄表的編輯工作,實(shí)現(xiàn)解譯記錄表的自動(dòng)生成。
圖3 解譯記錄表的自動(dòng)生成方法框架
解譯記錄表自動(dòng)生成系統(tǒng)以這種輕量級(jí)軟件設(shè)計(jì)思路進(jìn)行設(shè)計(jì),只集成了解譯記錄表信息提取操作所必需工具,只要具備ArcGIS Engine Runtime即可運(yùn)行,無需安裝整個(gè)ArcGIS Desktop,解決了傳統(tǒng)解譯記錄表對(duì)ArcMap依賴性強(qiáng),內(nèi)存消耗大、運(yùn)行慢的問題;在降低成本的同時(shí),規(guī)范了解譯記錄表數(shù)據(jù)格式,提高了數(shù)據(jù)的準(zhǔn)確性。
解譯記錄表的構(gòu)成要素包括屬性信息和空間信息,因此解譯記錄表信息自動(dòng)提取分為屬性信息的提取和空間信息的提取。
1)屬性信息提取。解譯記錄表的屬性信息來源于遙感監(jiān)測成果數(shù)據(jù)中開采區(qū)域矢量圖層的屬性表,由AE的圖層訪問接口中的要素類(IFeatureClass)接口查詢并批量緩存。圖層-對(duì)象數(shù)據(jù)映射關(guān)系如圖4所示。通過圖層訪問接口,讀取要素圖層的屬性表,自定義實(shí)體類(Records)緩存程序讀取的屬性表數(shù)據(jù)。緩存方式是將類屬性與要素的屬性字段對(duì)應(yīng),即一個(gè)類對(duì)象對(duì)應(yīng)矢量圖層的一個(gè)矢量要素并包含該要素的屬性信息。通過這種方式實(shí)現(xiàn)圖層與對(duì)象之間的數(shù)據(jù)映射,將屬性表中的屬性信息封裝到類對(duì)象,一次性緩存所有矢量要素的屬性信息。將初始化后的所有Records類對(duì)象存到一個(gè)列表中供程序下一步讀取,至此完成屬性信息的提取。
圖4 圖層-對(duì)象數(shù)據(jù)映射
2)空間信息提取??臻g信息由解譯圖像呈現(xiàn),解譯圖像的制作涉及制圖要素(比例尺)的自動(dòng)添加和解譯圖像的批量導(dǎo)出2項(xiàng)關(guān)鍵技術(shù)。系統(tǒng)通過接口調(diào)用集成AE地圖制圖組件,實(shí)現(xiàn)制圖要素的自動(dòng)添加和解譯圖像批量導(dǎo)出功能。
制圖要素包括:圖名、圖例、比例尺、指北針和數(shù)字比例等要素,是地圖重要的輔助工具,制圖要素類均繼承自地圖環(huán)境類(MapSurround),如表1所示。
表1 地圖環(huán)境類
比例尺用于描述地圖實(shí)際比例,是地圖上必不可少的制圖要素,解譯圖像中的比例尺由程序根據(jù)地圖視圖的實(shí)際比例自動(dòng)添加,其格式、位置統(tǒng)一。比例尺的自動(dòng)添加分2步:一是創(chuàng)建比例尺對(duì)象;二是初始化比例尺對(duì)象,即設(shè)置相應(yīng)屬性并獲取地圖實(shí)際比例。
比例尺類(ScaleBar)是抽象類,繼承自地圖環(huán)境類(MapSurround)。解譯圖像采用比例尺類子類的AlternatingScaleBar樣式,初始化AlternatingScaleBar對(duì)象,對(duì)比例尺的大小和形狀等屬性進(jìn)行設(shè)置,例如設(shè)置MapSurround類uid屬性,定義屬性分割段數(shù)(Subdivision)、比例尺起始數(shù)值(DivisionsBeforeZero)等。完成比例尺樣式的設(shè)置后,獲取地圖實(shí)際比例,設(shè)置固定位置,實(shí)現(xiàn)比例尺的自動(dòng)添加。
比例尺自動(dòng)添加完成后,下一步將生成解譯圖像。在系統(tǒng)中集成AE地圖制圖組件,地圖制圖組件中的PageLayoutControl控件可獲取解譯圖像數(shù)據(jù),結(jié)合Export操作類[5]實(shí)現(xiàn)圖像的批量生成并導(dǎo)出。AE提供導(dǎo)出柵格數(shù)據(jù)和矢量數(shù)據(jù)2種數(shù)據(jù)類型,其中柵格數(shù)據(jù)可導(dǎo)出圖片格式如圖5所示,解譯圖像的導(dǎo)出使用ExportJPEG操作類,導(dǎo)出格式為JPG。
圖5 可導(dǎo)出的圖片格式
解譯圖像的批量生成是通過循環(huán)以下幾個(gè)步驟實(shí)現(xiàn):
1)確定解譯圖像的輸出范圍。根據(jù)實(shí)際需求,利用九宮格定位法確定解譯圖像輸出范圍,即以矢量要素的外接矩形為中心采取3×3的比例范圍自動(dòng)定位遙感影像輸出范圍[6],如圖6所示。
圖6 九宮格定位法示意圖
2)設(shè)置解譯圖像的屬性信息。初始化Export類對(duì)象的屬性,包括圖片格式(Filter)、輸出文件名(ExportFileName)、圖片空間分辨率(Resolution)以及解譯圖像輸出的緩存路徑。
3)保存生成的解譯圖像信息。以緩存路徑+名稱+后綴的文本格式保存到Records類對(duì)象中用于緩存解譯圖像的屬性中,實(shí)現(xiàn)矢量要素與解譯圖像的一一對(duì)應(yīng)以及屬性關(guān)聯(lián)。
4)程序重復(fù)上述3個(gè)步驟。遍歷圖層中的所有矢量要素,針對(duì)每個(gè)矢量要素生成對(duì)應(yīng)的解譯圖像并存儲(chǔ),從而實(shí)現(xiàn)解譯圖像的批量生成。
Records類對(duì)象的屬性緩存有要素的屬性信息和空間信息,完成解譯記錄表構(gòu)成要素的自動(dòng)提取。由列表緩存Records類對(duì)象,即一個(gè)對(duì)象緩存一個(gè)矢量要素對(duì)應(yīng)的解譯記錄表數(shù)據(jù),包括屬性信息以及解譯圖像的相關(guān)信息,方便程序下一步填充Word文檔。構(gòu)成要素的自動(dòng)提取,避免了人工提取屬性數(shù)據(jù)、制作解譯圖像的繁雜,成功解決了傳統(tǒng)解譯記錄表制作過程中遇到的工作量大、效率低的問題。
將解譯記錄表的構(gòu)成要素緩存到Records類對(duì)象屬性中后,讀取緩存在類對(duì)象中的構(gòu)成要素并自動(dòng)填充解譯記錄表是系統(tǒng)功能的另一關(guān)鍵點(diǎn)。為實(shí)現(xiàn)Word 文檔的自動(dòng)處理,通過引用DOM和編程接口Microsoft.Office.Interop.Word類庫[7],控制Word文檔的讀、寫等操作。文檔自動(dòng)填充過程中有2個(gè)關(guān)鍵技術(shù):一是數(shù)據(jù)定位;二是圖片的插入。
數(shù)據(jù)定位利用書簽解決,通過WordAppHelper操作類的設(shè)置書簽值方法(SetBookMarksValue),將Records類對(duì)象緩存的屬性信息寫入Document對(duì)象對(duì)應(yīng)的書簽,實(shí)現(xiàn)數(shù)據(jù)填充過程中的數(shù)據(jù)定位。圖像的插入由InsertPicture方法實(shí)現(xiàn),通過讀取Records類對(duì)象屬性獲取解譯圖像的緩存路徑、名稱和后綴信息,程序可自動(dòng)插入圖片。
數(shù)據(jù)定位和圖片插入完成后,生成帶有屬性信息和解譯圖像的Document文檔對(duì)象,即一個(gè)Document文件對(duì)象對(duì)應(yīng)一個(gè)矢量要素的解譯記錄表。如圖7,Records類對(duì)象的屬性與Document對(duì)象的書簽一一對(duì)應(yīng),實(shí)現(xiàn)對(duì)象屬性與文檔書簽位置映射。
圖7 對(duì)象-文檔映射
基于Word對(duì)象模型的文檔自動(dòng)編輯實(shí)現(xiàn)步驟如下:
1)提供一個(gè)解譯記錄表模板,在模板中添加書簽,使書簽與Records類對(duì)象的屬性一一對(duì)應(yīng),實(shí)現(xiàn)文檔數(shù)據(jù)的定位。
2)引用Microsoft.Office.Interop.Word類庫,按模板創(chuàng)建文檔對(duì)象,將Records類對(duì)象的屬性值,包括屬性字段和解譯圖像信息,按書簽定位對(duì)文檔進(jìn)行數(shù)據(jù)填充、圖片插入。
3)遍歷Records類對(duì)象列表,為所有對(duì)象生成各自的文檔對(duì)象。
4)由WordMerger操作類的接口將生成的文檔對(duì)象合并所有解譯記錄表并輸出。
程序借助DOM實(shí)現(xiàn)了文檔的自動(dòng)編輯,通過設(shè)計(jì)不同類的共同屬性,完成遙感監(jiān)測成果數(shù)據(jù)與解譯記錄表的數(shù)據(jù)映射,并按模板生成新的解譯記錄表,解決了傳統(tǒng)解譯記錄表制作過程中的格式不統(tǒng)一,數(shù)據(jù)不準(zhǔn)確的問題。
解譯記錄表自動(dòng)生成功能可快速、高效地批量制作解譯圖像并自動(dòng)提取矢量圖層的屬性信息。根據(jù)需求,用戶通過界面上的輔助功能對(duì)解譯圖像的制作進(jìn)行相應(yīng)的設(shè)置。
用戶在系統(tǒng)中加載礦山遙感監(jiān)測成果數(shù)據(jù)后,可選取制作解譯記錄表的開采區(qū)域矢量圖層,進(jìn)入如圖8所示的解譯記錄表功能編制界面(圖中數(shù)據(jù)來自于2016年福建三元區(qū)特定區(qū)域的礦山遙感監(jiān)測成果數(shù)據(jù)),這一界面與給定的解譯記錄表模板的樣式、字段名稱一致,提供對(duì)圖斑截圖的預(yù)覽功能。圖斑截圖中對(duì)矢量要素的高亮顯示且自動(dòng)添加比例尺,同時(shí)屬性信息能自動(dòng)填充,方便用戶瀏覽解譯記錄表。
圖8 解譯記錄表功能界面
解譯記錄表的功能界面上提供參數(shù)設(shè)置、影像信息、生成所有圖斑截圖、刷新圖斑截圖和導(dǎo)出所有解譯記錄表5個(gè)輔助功能按鈕。矢量要素目錄樹包含矢量圖層的所有要素,通過雙擊目錄樹的子節(jié)點(diǎn)可預(yù)覽該要素對(duì)應(yīng)的解譯記錄表。參數(shù)設(shè)置用于設(shè)置解譯圖像的像素閾值;影像信息用于填寫遙感影像的相關(guān)參數(shù);生成所有圖斑截圖用于批量生成所有解譯圖像;刷新圖斑截圖用于主界面加載的遙感影像顯示范圍調(diào)整后對(duì)解譯記錄表功能界面上的解譯圖像進(jìn)行刷新;導(dǎo)出所有解譯記錄表功能用于一鍵生成所有解譯記錄表并自動(dòng)合并成單獨(dú)的Word文檔輸出到指定路徑。最終自動(dòng)生成的解譯記錄表如圖9所示。
圖9 自動(dòng)生成的解譯記錄表
按照解譯記錄表自動(dòng)生成方法,實(shí)現(xiàn)的解譯記錄表自動(dòng)生成功能簡化了解譯記錄表的生成流程,解決了傳統(tǒng)手工解譯記錄表制作過程中的問題。
1)采用基于插件式開發(fā)方式,將解譯記錄表自動(dòng)生成功能集成到宿主程序中,該程序是一個(gè)能夠脫離ArcGIS Desktop獨(dú)立運(yùn)行的輕量級(jí)軟件,提高了運(yùn)行速度,減少了內(nèi)存消耗。
2)解譯記錄表構(gòu)成要素的自動(dòng)提取,包括屬性信息的自動(dòng)提取以及解譯圖像的批量生成,減少了人工的重復(fù)工作,提高了制表效率。
3)結(jié)合文檔對(duì)象模型按模板生成Word文檔并自動(dòng)填充、合并,實(shí)現(xiàn)了開采圖斑與解譯記錄表數(shù)據(jù)的一對(duì)一映射,減少了人工填寫的繁瑣,避免了人為誤操作,保證了解譯記錄表格式的統(tǒng)一性及數(shù)據(jù)的準(zhǔn)確性。
解譯記錄表自動(dòng)生成功能的實(shí)現(xiàn),驗(yàn)證了解譯記錄表自動(dòng)生成方法的可行性。可見,解譯記錄表自動(dòng)生成方法提供了一種快捷方式,幫助用戶利用軟件自動(dòng)提取矢量圖層和遙感影像的相關(guān)信息,對(duì)從事信息挖掘工作的專業(yè)人士利用計(jì)算機(jī)對(duì)大數(shù)據(jù)量的遙感監(jiān)測數(shù)據(jù)進(jìn)行挖掘具有一定的指導(dǎo)意義。