孫 斌 韓艷玲 鄭貴洲
(中國(guó)地質(zhì)大學(xué)信息工程學(xué)院 湖北 武漢 430074)
基于MFC的MDI礦山管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
孫 斌 韓艷玲 鄭貴洲
(中國(guó)地質(zhì)大學(xué)信息工程學(xué)院 湖北 武漢 430074)
礦山數(shù)據(jù)龐大、復(fù)雜、多樣,礦山數(shù)據(jù)信息化管理十分重要。在分析MDI(Multiple Document Interface)基本類結(jié)構(gòu)關(guān)系的基礎(chǔ)上,設(shè)計(jì)了礦山管理信息系統(tǒng)MDI功能結(jié)構(gòu)?;贛apGIS K9二次開(kāi)發(fā)平臺(tái),實(shí)現(xiàn)了數(shù)據(jù)管理模板和地圖制圖模板,主要功能包括礦區(qū)管理、圖層管理、儲(chǔ)量管理、文檔管理、數(shù)據(jù)查看、文件管理、可視化預(yù)覽以及專題制圖等。實(shí)踐表明該系統(tǒng)可大大提高礦山數(shù)據(jù)管理的效率。
礦山管理 多文檔界面 MapGIS 數(shù)據(jù)管理模板 地圖制圖模板
在煤礦開(kāi)采過(guò)程中每時(shí)每刻都在產(chǎn)生大量的數(shù)據(jù),這些數(shù)據(jù)具有數(shù)據(jù)量大、多源異構(gòu)、空間數(shù)據(jù)和屬性數(shù)據(jù)并存的特點(diǎn)[1],處理起來(lái)十分復(fù)雜。目前礦山行業(yè)已有許多礦山管理應(yīng)用軟件,周強(qiáng)波等[2]、張維國(guó)等[3]研究了礦山管理系統(tǒng)中數(shù)據(jù)的存儲(chǔ)與管理,但缺少對(duì)礦區(qū)空間數(shù)據(jù)管理與分析的研究;馬恒亮[4]和榮秀娟[5]側(cè)重于對(duì)礦區(qū)數(shù)據(jù)測(cè)量方法與數(shù)據(jù)編輯的研究,基本實(shí)現(xiàn)了礦山數(shù)據(jù)資料的管理和利用。但同時(shí)這些軟件也存在以下亟待解決的問(wèn)題:軟件功能無(wú)法擴(kuò)展,信息資源難以共享,海量的多源異構(gòu)數(shù)據(jù)難以有效傳遞等問(wèn)題。因此,有必要采取一定的技術(shù)手段,研發(fā)一套礦山管理信息系統(tǒng)軟件,滿足礦區(qū)多源異構(gòu)數(shù)據(jù)管理及分析等的需要。
系統(tǒng)通過(guò)MapGIS二次開(kāi)發(fā)所提供的基于MFC類庫(kù)的MDI應(yīng)用程序,實(shí)現(xiàn)了不同文檔模板管理不同類型的數(shù)據(jù);通過(guò)MapGIS K9組件,實(shí)現(xiàn)了系統(tǒng)的礦區(qū)管理、圖層管理、儲(chǔ)量管理、統(tǒng)計(jì)分析和專題制圖等核心功能;通過(guò)SQL Server數(shù)據(jù)庫(kù)、GDB(GeoDatabase)地理數(shù)據(jù)庫(kù)等,實(shí)現(xiàn)礦區(qū)多源異構(gòu)數(shù)據(jù)的組織與管理。
本文基于MapGIS K9二次開(kāi)發(fā)平臺(tái),利用MFC技術(shù)在多文檔模板框架下,實(shí)現(xiàn)礦山管理信息系統(tǒng)界面上的數(shù)據(jù)管理和文檔管理的同步切換。并且通過(guò)新增文檔模板的形式對(duì)系統(tǒng)功能擴(kuò)充,提高了管理海量數(shù)據(jù)信息的能力,對(duì)實(shí)現(xiàn)礦山信息化、數(shù)字化及科學(xué)化管理具有十分重要的意義。
1.1 MDI基本類結(jié)構(gòu)關(guān)系
MDI應(yīng)用程序是由菜單、工具欄、子窗口區(qū)和狀態(tài)條所組成,可同時(shí)打開(kāi)多個(gè)類型的文檔數(shù)據(jù),每個(gè)類型的文檔擁有一個(gè)相關(guān)聯(lián)的文檔模板對(duì)象,并支持同時(shí)在多個(gè)子窗口中進(jìn)行操作[6],如圖1所示。
圖1 MDI基本類結(jié)構(gòu)關(guān)系
CWinAPP類是整個(gè)MDI的核心,保存了一份所有在應(yīng)用程序中注冊(cè)的文檔模板的指針鏈表,通過(guò)AddDocTemplate()創(chuàng)建多個(gè)文檔模板,每個(gè)模板又可以創(chuàng)建不同的視圖類和文檔類。通過(guò)GetFirstDocTemplatePostion()得到MDI注冊(cè)的第一個(gè)文檔模板在整個(gè)文檔模板中的位置值,然后GetNextDocTemplate()使用GetFirstDocTemplatePostion()的返回值,返回第一個(gè)文檔模板的指針,得到第二個(gè)文檔模板指針的位置值,如此循環(huán)獲得所有在MDI中注冊(cè)的文檔模板的指針。同時(shí),CWinAPP類可以調(diào)用全局函數(shù)AfxGetMainWnd()獲取MDI的主框架指針。在文檔模板CMultiDocTemplate中通過(guò)GetFirstDocPosition()和GetNextDoc()得到指向該文檔模板的指針。文檔類CDocument利用GetFirstViewPosition()和GetNextView()遍歷該文檔所對(duì)應(yīng)的視圖。在視圖類CView中通過(guò)GetDocument()得到該視圖的文檔類指針。父窗口CMDIFrameWnd利用GetActiveFrame()獲取當(dāng)前活動(dòng)的MDI子窗口CMDIChildWnd,然后通過(guò)該子窗口激活對(duì)應(yīng)的視圖和文檔[7]。
在多文檔應(yīng)用程序中,文檔處于中心地位,并與每個(gè)視圖相關(guān)聯(lián),控制著每個(gè)相關(guān)的視圖。一個(gè)文檔模板可以包含多個(gè)文檔,一個(gè)文檔可以有多個(gè)不同的顯示視圖,但一個(gè)視圖類對(duì)象只能有一個(gè)與之相聯(lián)系的文檔對(duì)象[8]。
1.2 MDI功能結(jié)構(gòu)
礦山管理信息系統(tǒng)采用MDI技術(shù),基于C/S架構(gòu)模式開(kāi)發(fā),客戶端包含多個(gè)運(yùn)行程序,負(fù)責(zé)數(shù)據(jù)處理,數(shù)據(jù)庫(kù)存儲(chǔ)于服務(wù)器端。服務(wù)器端采用SQL Server 2008 R2數(shù)據(jù)庫(kù)和FTP服務(wù)器的組織管理方式,同時(shí)還支持使用MapGIS K9地理數(shù)據(jù)庫(kù)GDB管理煤礦圖層數(shù)據(jù),客戶端通過(guò)MapGIS K9內(nèi)置組件對(duì)服務(wù)器端的地理數(shù)據(jù)庫(kù)進(jìn)行管理??蛻舳酥饕蓴?shù)據(jù)管理和地圖制圖兩個(gè)文檔模板組成,如圖2所示。數(shù)據(jù)管理模板負(fù)責(zé)礦區(qū)數(shù)據(jù)的組織和管理,主要完成礦區(qū)管理、文檔管理、儲(chǔ)量管理以及礦區(qū)數(shù)據(jù)的的查詢與編輯等功能,并為地圖制圖功能模塊提供數(shù)據(jù)支持。地圖制圖模板融合了MapGIS制圖功能和服務(wù)器數(shù)據(jù)管理功能,提供了礦區(qū)管理、文件管理、圖層管理和地圖文檔管理等功能。
圖2 系統(tǒng)多文檔框架功能結(jié)構(gòu)圖
系統(tǒng)基于MFC多文檔框架模式開(kāi)發(fā),數(shù)據(jù)管理和地圖制圖分別為一個(gè)獨(dú)立的文檔模板形式,系統(tǒng)各功能模塊之間可以靈活地通信,兩者之間的使用互不影響,通過(guò)新增文檔模板靈活地對(duì)系統(tǒng)功能進(jìn)行擴(kuò)展。
2.1 多文檔模板實(shí)現(xiàn)
MapGIS類庫(kù)提供了基于MFC類庫(kù)的二次開(kāi)發(fā)函數(shù)庫(kù),用面向?qū)ο蟮乃枷氚褢?yīng)用程序所需的API功能作了封裝,形成派生于MFC類庫(kù)的多個(gè)可重用基類[9]。利用基于MFC的MapGIS類庫(kù),獲得從窗口顯示到圖形查詢編輯的各項(xiàng)功能,構(gòu)建符合面向?qū)ο蟮牡V山管理信息系統(tǒng)。根據(jù)系統(tǒng)的需求分析,系統(tǒng)中的數(shù)據(jù)管理和地圖制圖處理的是不同的文件類型,需使用不同的文檔模板應(yīng)用程序,因此,結(jié)合MFC的多文檔技術(shù),通過(guò)繼承并改造MDI已有的功能,將系統(tǒng)的數(shù)據(jù)管理和地圖制圖兩大功能模塊定義為MFC多文檔的兩個(gè)子模板。數(shù)據(jù)管理子模板命名為DataManage,地圖制圖子模板命名為MapMake,兩模板之間互相獨(dú)立并且擁有各自的功能,通過(guò)在系統(tǒng)中切換兩者的模板來(lái)實(shí)現(xiàn)不同功能的切換,如圖3所示。
圖3 系統(tǒng)MDI結(jié)構(gòu)圖
CSXCMISApp控制著數(shù)據(jù)管理和地圖制圖兩個(gè)文檔模板的所有對(duì)象,完成礦山管理信息系統(tǒng)的初始化和最后的清除工作。CMainFrame是整個(gè)系統(tǒng)的主框架窗口,是完成多文檔模板的核心。CDataChildFrame和CMapChildFrame是MDI框架窗口的子窗口,用來(lái)管理數(shù)據(jù)管理和地圖制圖模板相關(guān)的文檔和視圖。CSXCMISDataDoc和CSXCMISMapDoc管理礦山數(shù)據(jù),前者包括礦區(qū)數(shù)據(jù)的分類分層存放、儲(chǔ)量管理、數(shù)據(jù)的編輯和下載等,后者包括礦區(qū)數(shù)據(jù)的分類分層存放、文件管理、地圖圖層管理和地圖文檔管理等。CSXCMISDataView和CSXCMISMapView是用來(lái)顯示文檔數(shù)據(jù)并與用戶進(jìn)行交互,前者通過(guò)數(shù)據(jù)列表的形式顯示數(shù)據(jù),后者通過(guò)MapGIS二次開(kāi)發(fā)組件顯示數(shù)據(jù)。
本文以數(shù)據(jù)管理模板為例,說(shuō)明系統(tǒng)MDI應(yīng)用程序的實(shí)現(xiàn)過(guò)程。首先向工程中添加數(shù)據(jù)管理模板所對(duì)應(yīng)的文檔類、視圖類和框架窗口類(CSXCMISDataDoc、CSXCMISDataView、CDataChildFrame)。然后在CSXCMISApp的InitInstance()初始化函數(shù)中定義剛才構(gòu)造的三個(gè)類的對(duì)應(yīng)關(guān)系,并獲取應(yīng)用程序指針,通過(guò)AddDocTemplate()將數(shù)據(jù)管理文檔模板添加到CSXCMISApp中。新增數(shù)據(jù)管理模板的部分代碼如下:
//獲取應(yīng)用程序的對(duì)象指針
CWinApp* pApp = AfxGetApp();
ENSURE(pApp != NULL);
pApp->AddDocTemplate(new CMultiDocTemplate
(IDR_DMMAINMENU,
//資源標(biāo)識(shí)
//文檔類
RUNTIME_CLASS(CSXCMISDataDoc),
//自定義 MDI 子窗口框架
RUNTIME_CLASS(CDataChildFrame),
//瀏覽視窗類
RUNTIME_CLASS(CSXCMISDataView)));
通過(guò)類似的方法將地圖制圖模板添加到CSXCMISApp中,并建立各自的文檔類、視圖類和框架窗口類之間的關(guān)系。所有與應(yīng)用程序相關(guān)的數(shù)據(jù)存儲(chǔ)在文檔對(duì)象中,視圖通過(guò)調(diào)用文檔類的接口訪問(wèn)和更新數(shù)據(jù)。當(dāng)文檔中的數(shù)據(jù)發(fā)生改變時(shí),根據(jù)MFC的消息傳遞機(jī)制,調(diào)用UpdateAllViews()成員函數(shù)更新所有相關(guān)視圖,各個(gè)視圖通過(guò)OnUpdate()反映文檔數(shù)據(jù)的變化,保證每個(gè)子窗口中的數(shù)據(jù)能夠同步更新[10],如圖4所示。
圖4 數(shù)據(jù)管理模板界面
2.2 多文檔模板動(dòng)態(tài)切換
在礦山管理信息系統(tǒng)中可以打開(kāi)數(shù)據(jù)管理和地圖制圖兩個(gè)不同的文檔模板,每個(gè)模板都有對(duì)應(yīng)的菜單、工具條、狀態(tài)條和子窗口區(qū)組成,并可以打開(kāi)多個(gè)文檔,通過(guò)調(diào)用各自的轉(zhuǎn)換函數(shù)OnDomainchooseDatamanage()和OnDomainchooseMapmaking()進(jìn)行兩個(gè)模板之間的靈活切換。以數(shù)據(jù)管理模板切換為例,說(shuō)明文檔模板切換的實(shí)現(xiàn)過(guò)程。CSXCMISApp應(yīng)用程序通過(guò)CMultiDocTemplate::GetFirstDocPosition()獲取與數(shù)據(jù)管理模板的文檔集合中的第一個(gè)文檔的位置,并用POSITION值作為CMultiDocTemplate::GetNextDoc()的參數(shù)來(lái)重復(fù)遍歷與數(shù)據(jù)管理模板相關(guān)的文檔列表。同樣,通CDocument::GetFirstViewPosition()查詢此文檔下的所有已創(chuàng)建的視圖,并用POSITION值作為CDocument::GetNextView()的參數(shù)來(lái)重復(fù)遍歷與數(shù)據(jù)管理模板相關(guān)的視圖列表。最后調(diào)用GetParentFrame()函數(shù)返回包圍View的父框架窗口的指針,激活父框架窗口。具體代碼如下:
void CMainFrame::OnDomainchooseDatamanage(){
//“功能切換-數(shù)據(jù)管理”菜單
CMultiDocTemplate*pDocTemplate=
((CSXCMISApp*)AfxGetApp())->m_pDocDataTemplate;
if (NULL == pDocTemplate) { return; }
POSITION pDocPos =
pDocTemplate->GetFirstDocPosition();
while(pDocPos != NULL)
{ CDocument * pDocument = pDocTemplate->GetNextDoc(pDocPos);
POSITION pViewPos = pDocument->GetFirstViewPosition();
while(pViewPos != NULL)
{ CView * pView = pDocument->GetNextView(pViewPos);
if (NULL != pView)
{CFrameWnd* pFrameWnd = pView->GetParentFrame();
if (NULL != pFrameWnd)
{MDIActivate(pFrameWnd);
return;}}} }}
3.1 礦區(qū)管理功能
數(shù)據(jù)管理模板和地圖制圖模板使用相同的礦區(qū)管理功能。礦山管理信息系統(tǒng)是以礦區(qū)數(shù)據(jù)作為管理的基礎(chǔ),由于系統(tǒng)涉及到的礦區(qū)數(shù)據(jù)比較復(fù)雜,不同的礦區(qū)歸屬于不同的行政區(qū),不同的礦區(qū)又有不同類型的數(shù)據(jù),但這些數(shù)據(jù)具有層級(jí)關(guān)系的特點(diǎn)。系統(tǒng)根據(jù)用戶對(duì)礦山數(shù)據(jù)的操作動(dòng)態(tài)生成礦區(qū)管理目錄樹(shù),這種結(jié)構(gòu)能清晰地表達(dá)礦山數(shù)據(jù)之間的層次化關(guān)系。
動(dòng)態(tài)礦區(qū)管理目錄樹(shù)導(dǎo)航結(jié)構(gòu)是通過(guò)TreeView控件以樹(shù)狀視圖的方式顯示具有分類和層次關(guān)系的礦山數(shù)據(jù)。通過(guò)GetRootItem()獲取礦區(qū)數(shù)據(jù)的根節(jié)點(diǎn),即省份節(jié)點(diǎn),由GetNextItem()遍歷礦區(qū)數(shù)據(jù)所包含的省份節(jié)點(diǎn),然后利用GetChildItem()得到省份節(jié)點(diǎn)的子節(jié)點(diǎn),即市區(qū)節(jié)點(diǎn),通過(guò)GetNextItem()遍歷市區(qū)節(jié)點(diǎn),以此循環(huán)遍歷,直到通過(guò)GetItemData()將礦區(qū)關(guān)聯(lián)的內(nèi)容和下一節(jié)點(diǎn)的值相同時(shí),結(jié)束循環(huán)。循壞結(jié)束的部分代碼如下:
hNextMin = GetNextItem(hMin,TVGN_NEXT);
//hMin為礦區(qū)數(shù)據(jù)的句柄
char* pData = (char*)GetItemData(hMin);
DeleteItem(hMin);
delete[] pData;
//刪除礦區(qū)編號(hào)數(shù)據(jù)
hMin = hNextMin;
礦區(qū)管理目錄樹(shù)結(jié)構(gòu)是通過(guò)在服務(wù)器端設(shè)定數(shù)據(jù)庫(kù)中的數(shù)據(jù)表的形式,目錄樹(shù)讀取數(shù)據(jù)表后生成相應(yīng)的節(jié)點(diǎn),直接完成礦山數(shù)據(jù)的層次分配。以省、市、縣、礦區(qū)為節(jié)點(diǎn)建立各級(jí)數(shù)據(jù)子樹(shù),添加到礦區(qū)節(jié)點(diǎn)的內(nèi)容有預(yù)查階段、普查階段、詳查階段、勘探階段和采礦階段,每個(gè)階段又有相應(yīng)的子樹(shù),存儲(chǔ)CAD圖庫(kù)、MapGIS圖庫(kù)、報(bào)告、附件、附表、圖紙等礦區(qū)數(shù)據(jù)類型。如圖4的左側(cè)顯示的是礦山數(shù)據(jù)的層次化管理結(jié)構(gòu)。
3.2 圖層管理功能
圖層管理模塊是地圖制圖模板中用來(lái)管理礦區(qū)空間數(shù)據(jù)的。根據(jù)礦區(qū)數(shù)據(jù)的特點(diǎn),礦山地理信息要素采用線分類法,要素類型按從屬和層次關(guān)系分為3級(jí):大類、中類、小類[11]。其中,大類包含采掘工程圖、測(cè)井曲線圖、儲(chǔ)量圖等13大類,中類是在上述各大類基礎(chǔ)上細(xì)分形成的要素類,地名要素是最為隱含類在小類中具體體現(xiàn)。根據(jù)線分類法原則,將礦區(qū)數(shù)據(jù)逐次地分成3個(gè)層級(jí)類目,并排列成一個(gè)有層次、逐級(jí)展開(kāi)的分類體系,并能準(zhǔn)確地反映類目之間的邏輯關(guān)系,如圖5所示。
圖5 從服務(wù)器文件系統(tǒng)查詢圖層結(jié)果
屬性圖層對(duì)應(yīng)查詢:采用多條件復(fù)合式的查詢方式,系統(tǒng)把被查詢對(duì)象的所有可查詢屬性字段自動(dòng)列出,如查詢儲(chǔ)量信息,可根據(jù)礦區(qū)分類信息、MapGIS圖庫(kù)信息、圖層信息和查詢數(shù)據(jù)的來(lái)源等條件構(gòu)造邏輯表達(dá)式任意組合查詢。查詢到的圖層數(shù)據(jù)可以批量下載到本地電腦或添加到當(dāng)前活動(dòng)的地圖中。
將查詢結(jié)果選擇性地添加到當(dāng)前活動(dòng)的地圖中的實(shí)現(xiàn)過(guò)程:首先,根據(jù)圖層查找的結(jié)果利用GetItemCount()函數(shù)獲取選擇結(jié)果圖層的行列數(shù),然后利用GetItemText()函數(shù)讀取結(jié)果數(shù)據(jù)的文件名和路徑,最后利用GetActiveFrame()函數(shù)將選擇的數(shù)據(jù)添加到當(dāng)前正在編輯的地圖文檔中,并發(fā)送WM_MM_MAPSELECT消息給接收端,接收端定義這個(gè)消息并進(jìn)行消息映射,實(shí)現(xiàn)消息映射函數(shù)。部分實(shí)現(xiàn)代碼如下:
//獲得列數(shù)
nColumnCount=GetHeaderCtrl().GetItemCount();
nRowCount=GetItemCount();
//獲得行數(shù)
//獲取文件路徑+文件名。其中,arrayMaxCount為數(shù)據(jù)最
//大數(shù)目,i為行數(shù)的循環(huán)變量
filePathNameArray[arrayCount+1]=GetItemText(i,
nColumnCount-1)+_T(″″)+GetItemText(i,1);
CMDIChildWndEx* pMDIChildWnd = (CMDIChildWndEx*)((CMDIFrameWndEx*)
AfxGetMainWnd())->GetActiveFrame();
//發(fā)送端發(fā)送消息
pMDIChildWnd->SendMessage(
WM_MM_MAPSELECT, WM_MM_MAPSELECT, (LPARAM)filePathNameArray);
//接收端: 圖層列表中選擇了圖層文件項(xiàng)
UINT WM_MM_MAPSELECT=
RegisterWindowMessage(_T(″MM_MAPSELECT″));//定義消息映射表
ON_REGISTERED_MESSAGE(
WM_MM_MAPSELECT, OnCustomMsg)
//實(shí)現(xiàn)消息映射函數(shù)
AddLayerToCurrentMap((CString*)lParam);
3.3 儲(chǔ)量管理功能
儲(chǔ)量管理是數(shù)據(jù)管理模板對(duì)靜態(tài)的煤礦存儲(chǔ)量的管理以及動(dòng)態(tài)的煤礦生產(chǎn)量的統(tǒng)計(jì)分析。靜態(tài)的存儲(chǔ)量管理包括:礦區(qū)名稱、礦區(qū)編號(hào)、儲(chǔ)量單位、礦產(chǎn)名稱、礦山類型、保有儲(chǔ)量合計(jì)、動(dòng)用儲(chǔ)量合計(jì)的新增、修改和刪除操作,如圖6(a)所示。動(dòng)態(tài)的統(tǒng)計(jì)分析主要采用統(tǒng)計(jì)圖表的方式反映不斷變化的儲(chǔ)量信息,可以根據(jù)統(tǒng)計(jì)圖表的走勢(shì)對(duì)礦區(qū)生產(chǎn)進(jìn)行預(yù)測(cè),如圖6(b)所示。
圖6 自定義分類統(tǒng)計(jì)與分析效果圖
數(shù)據(jù)庫(kù)中存儲(chǔ)了煤礦生產(chǎn)運(yùn)行中的原始數(shù)據(jù),是儲(chǔ)量數(shù)據(jù)自定義統(tǒng)計(jì)分析的來(lái)源??蛇x擇不同年份進(jìn)行統(tǒng)計(jì),也可選擇111b、122b、333等不同類型進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)內(nèi)容包括保有儲(chǔ)量、消耗儲(chǔ)量、累計(jì)查明儲(chǔ)量等,統(tǒng)計(jì)結(jié)果可以選擇“餅圖”和“柱狀圖”等多種不同的可視化表達(dá)方式。根據(jù)用戶的自定義選擇,系統(tǒng)首先通過(guò)礦區(qū)名稱和礦區(qū)編號(hào)在服務(wù)器端獲取SQL Server儲(chǔ)量表中礦區(qū)的儲(chǔ)量信息,并將用戶輸入的信息轉(zhuǎn)換為系統(tǒng)可執(zhí)行的SQL語(yǔ)句,然后傳遞給客戶端,存儲(chǔ)到內(nèi)存中,最后系統(tǒng)將參與統(tǒng)計(jì)分析的數(shù)據(jù)項(xiàng)列表展示出來(lái),繪制出以年份為橫坐標(biāo),各個(gè)量的變化為縱坐標(biāo)的統(tǒng)計(jì)分析圖。
通過(guò)自定義統(tǒng)計(jì)圖表,可以反映出儲(chǔ)量數(shù)據(jù)中隱藏的現(xiàn)象、規(guī)律和趨勢(shì),也可以在圖表中查看各種儲(chǔ)量的信息及相關(guān)數(shù)據(jù)并對(duì)儲(chǔ)量作出估算,實(shí)現(xiàn)了煤炭?jī)?chǔ)量的動(dòng)態(tài)化管理。
3.4 其他功能
其他模塊包括文檔管理、數(shù)據(jù)查看、文件管理、地圖文檔管理等模塊。文檔管理模塊是數(shù)據(jù)管理模板中礦區(qū)采集信息數(shù)據(jù)入庫(kù)的核心,包括礦山數(shù)據(jù)的新增、查詢、修改、刪除操作。數(shù)據(jù)查看模塊是數(shù)據(jù)管理模板中提供對(duì)數(shù)據(jù)預(yù)覽、下載、元數(shù)據(jù)顯示等功能。文件管理模塊是地圖制圖模板中通過(guò)資源管理器目錄樹(shù)遍歷選中文件夾中的所有MapGIS圖層文件(.wt、.wl、.wp),并將文件信息(文件名稱、大小、路徑)顯示在圖層列表中,或者直接把圖層數(shù)據(jù)顯示在地圖視圖中。地圖文檔管理模塊是地圖制圖模板中提供新建、打開(kāi)、保存、另存為、關(guān)閉地圖文檔和添加地圖圖層以及數(shù)據(jù)制圖輸出的功能。
本文根據(jù)礦山數(shù)據(jù)的特點(diǎn),運(yùn)用MFC多文檔技術(shù),通過(guò)分析MDI基本類結(jié)構(gòu)關(guān)系,給出了多文檔模板的添加和動(dòng)態(tài)切換的構(gòu)造方法,實(shí)現(xiàn)了數(shù)據(jù)管理和地圖制圖兩個(gè)文檔模板中礦區(qū)管理、交互編輯、圖層管理、儲(chǔ)量管理、統(tǒng)計(jì)分析、專題制圖和可視化預(yù)覽等功能。多文檔模板構(gòu)造方法具有通用性、靈活性和可操作性等特征,通過(guò)該方法可以構(gòu)造出滿足不同需求的應(yīng)用程序,從而提高了軟件的開(kāi)發(fā)效率和質(zhì)量。系統(tǒng)以山西省大同市吳官屯礦區(qū)數(shù)據(jù)為例,進(jìn)行實(shí)證研究和應(yīng)用實(shí)驗(yàn),充分說(shuō)明能夠滿足礦山多源異構(gòu)數(shù)據(jù)的管理、專題研究以及礦山生產(chǎn)等方面的實(shí)際需求,具有很好的推廣應(yīng)用前景。鑒于用戶需求局限于礦山數(shù)據(jù)的有效組織與管理,系統(tǒng)沒(méi)有融入礦山GIS時(shí)空分析的功能,但系統(tǒng)為其他應(yīng)用預(yù)留了可擴(kuò)展的接口,可以在礦山模擬分析、剖切與等值線套合分析、地質(zhì)災(zāi)害監(jiān)測(cè)預(yù)警分析等方面開(kāi)展進(jìn)一步的工作。
[1] 曾燊,李永樹(shù),蔡國(guó)林.基于GIS煤礦技術(shù)信息管理系統(tǒng)的研究與實(shí)現(xiàn)[J].測(cè)繪科學(xué),2009,34(5):235-237.
[2] 周強(qiáng)波,張子昕,徐翰,等.智能礦山系統(tǒng)的應(yīng)用與開(kāi)發(fā)[J].測(cè)繪與空間地理信息,2015,38(12):111-114,118.
[3] 張維國(guó),孫效玉,周沖,等.樹(shù)形結(jié)構(gòu)數(shù)據(jù)在數(shù)字礦山中的存儲(chǔ)管理與應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,25(3):150-153.
[4] 馬恒亮.淺析礦山測(cè)量信息系統(tǒng)的研究與設(shè)計(jì)[J].科技展望,2015(16):15.
[5] 榮秀娟.地測(cè)空間管理信息系統(tǒng)在礦山中的應(yīng)用[J].科技信息,2012(14):347.
[6] 侯俊杰.深入淺出MFC[M].2版.武漢:華中科技大學(xué)出版社,2001.
[7] 孫鑫.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.
[8] 楊黎東.對(duì)MFC中文檔與視圖結(jié)構(gòu)的探析[J].教育教學(xué)論壇,2012(S2):123-125.
[9] 張偉川.基于MAPGIS二次開(kāi)發(fā)的工程圖形的管理編輯實(shí)現(xiàn)[J].科技視界,2012(17):160-161,218.
[10] 何鵬,王益,王建忠,等.多文檔程序自適應(yīng)繪圖與混合編程技術(shù)[J].太赫茲科學(xué)與電子信息學(xué)報(bào),2015,13(4):641-645.
[11] 國(guó)家測(cè)繪局測(cè)繪標(biāo)準(zhǔn)化研究所.GB/T 13923—2006 基礎(chǔ)地理信息要素分類與代碼[S]. 北京:中國(guó)標(biāo)準(zhǔn)出版社,2006:1-2.
DESIGN AND IMPLEMENTATION OF MDI MINE MANAGEMENT INFORMATION SYSTEM BASED ON MFC
Sun Bin Han Yanling Zheng Guizhou
(CollegeofInformationEngineering,ChinaUniversityofGeosciences,Wuhan430074,Hubei,China)
Mine data is huge, complex and diverse, thus the informationization management of mine data comes to be very important. In this paper, an MDI functional structure of mine management information system is designed based on the analysis of fundamental class structure relations of MDI. On the basis of the secondary development platform of MapGIS K9, the data management template and map drawing template are established, which include the main functions of mine management, layer management, reserve management, document management, data review, file management, visualization preview and thematic mapping, etc. Practice shows that the system can greatly improve the efficiency of mine data management.
Mine management Multiple document interface MapGIS Data management template Map drawing template
2016-03-17。孫斌,副教授,主研領(lǐng)域:空間數(shù)據(jù)庫(kù),GIS應(yīng)用。韓艷玲,碩士生。鄭貴洲,教授。
TP311.52
A
10.3969/j.issn.1000-386x.2017.04.015