• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于 VC的 MAPGIS二次開發(fā)——以煙臺(tái)市環(huán)境地質(zhì)信息管理系統(tǒng)為例

    2010-03-19 03:18:00成建梅
    地下水 2010年3期
    關(guān)鍵詞:類庫(kù)圖件二次開發(fā)

    吳 璽,成建梅,常 敏

    (中國(guó)地質(zhì)大學(xué)環(huán)境學(xué)院,武漢 430074)

    0 引言

    MAPGIS軟件是武漢中地信息工程有限公司研制的具有自主版權(quán)的大型基礎(chǔ)地理信息系統(tǒng)軟件平臺(tái),是一個(gè)集當(dāng)代最先進(jìn)的圖形、圖像、地質(zhì)、地理、遙感、測(cè)繪、人工智能、計(jì)算機(jī)科學(xué)于一體的大型智能軟件,是集數(shù)字制圖、數(shù)據(jù)庫(kù)管理及空間分析為一體的空間信息系統(tǒng),是進(jìn)行現(xiàn)代化管理與決策的先進(jìn)工具。MAPGIS軟件已經(jīng)被廣泛應(yīng)用于各領(lǐng)域。其中,在土地、地籍、電信、管網(wǎng)、規(guī)劃等系統(tǒng)成為國(guó)家各部委向全國(guó)重點(diǎn)推廣的高科技產(chǎn)品,成為我國(guó)各領(lǐng)域進(jìn)行數(shù)字化建設(shè)的首選軟件。

    1 MAPGIS二次開發(fā)方式

    MAPGIS的二次開發(fā)方式主要有 API函數(shù)、MFC類庫(kù)、組件開發(fā)、ActiveX控件四種方式,MAPGIS二次開發(fā)庫(kù)封裝在若干動(dòng)態(tài)鏈接庫(kù)(DLL文件)中。MAPGIS提供的二次開發(fā)方式采用的開發(fā)接口獨(dú)立于開發(fā)工具(MFC類庫(kù)開發(fā)方式除外),用戶無(wú)需學(xué)習(xí)新的開發(fā)工具就可以進(jìn)行 MAPGIS二次開發(fā),MAPGIS有四種二次開發(fā)方式:

    (l)API函數(shù)開發(fā):MAPGIS的 API函數(shù)開發(fā)方式與 Windows的 API開發(fā)方式一樣[1]。

    (2)MFC類庫(kù)開發(fā):MAPGIS類庫(kù)是基于 MFC庫(kù)的開發(fā)方式。用面向?qū)ο蟮乃枷氚岩恍?API功能進(jìn)行封裝,形成多個(gè)派生于 MFC中 CView類的可重用基類,用戶利用基于MFC的 MAPGIS類庫(kù),可構(gòu)建面向?qū)ο筌浖こ痰?MAPGIS應(yīng)用系統(tǒng)。類庫(kù)開發(fā)是針對(duì) C++的[1]。

    (3)組件開發(fā):它是基于 COM(組件對(duì)象模型)標(biāo)準(zhǔn)的一種程序組件,能夠嵌入程序中運(yùn)行完成一定功能,在軟件開發(fā)中實(shí)現(xiàn)了功能重用。開發(fā)中只需簡(jiǎn)單調(diào)用功能接口就可以了。在使用可視化程度很高的開發(fā)工具 VC來(lái)開發(fā) MAPGIS應(yīng)用程序的過(guò)程中,最快速有效的方法就是使用 MAPGIS組件(控件)[1]。

    (4)ActiveX控件是 MAPGIS完成組件化改造的成果之一,它使得二次開發(fā)更為快捷便利,代碼的可復(fù)用性更高[1]。

    本文選擇了基于MFC類庫(kù)的開發(fā)。MAPGIS二次開發(fā)類庫(kù)是建立在 MAPGIS API之上的一個(gè)類庫(kù)層,用于支持基于MFC類庫(kù)的面向?qū)ο蟮?W indows程序設(shè)計(jì)。MAPGIS二次開發(fā)類庫(kù),提供了一套強(qiáng)有力的 C++類,它屏蔽了基于 MAPGIS API之上開發(fā)MAPGIS實(shí)用程序的許多復(fù)雜性,同時(shí)仍然允許有經(jīng)驗(yàn)的程序員使用底層的MAPGIS API功能。

    2 系統(tǒng)的開發(fā)

    煙臺(tái)市環(huán)境地質(zhì)信息管理系統(tǒng)具有數(shù)據(jù)管理、數(shù)據(jù)查詢、數(shù)據(jù)分析、報(bào)表分析、圖庫(kù)管理與編輯、災(zāi)害評(píng)價(jià)分析等功能的綜合性信息系統(tǒng),為今后預(yù)警預(yù)報(bào)系統(tǒng)的建立奠定基礎(chǔ)。整個(gè)系統(tǒng)的體系結(jié)構(gòu)圖如圖 1所示:

    圖1 信息管理系統(tǒng)結(jié)構(gòu)框圖

    系統(tǒng)最重要的內(nèi)容是數(shù)據(jù)的建設(shè),數(shù)據(jù)庫(kù)可分兩個(gè)部分,圖件資料和數(shù)據(jù)資料,本文采用兩者分離的方式進(jìn)行數(shù)據(jù)庫(kù)建設(shè)。

    2.1 基礎(chǔ)數(shù)據(jù)管理系統(tǒng)開發(fā)

    Visual C++6.0提供了各種各樣的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)——ODBC API、MFC ODBC、DAO、OLE DB等 。這些技 術(shù)各有自己的特點(diǎn),具有簡(jiǎn)單、靈活、訪問(wèn)速度快、可擴(kuò)展性好的特點(diǎn)。

    ODBC(Open Database Connectivity)[2]是客戶應(yīng)用程序訪問(wèn)關(guān)系數(shù)據(jù)庫(kù)時(shí)提供的一個(gè)統(tǒng)一接口,對(duì)于不同的數(shù)據(jù)庫(kù),ODBC提供了一套統(tǒng)一的 API,使用應(yīng)用程序可以應(yīng)用所提供的 API來(lái)訪問(wèn)任何提供了 ODBC驅(qū)動(dòng)程序的數(shù)據(jù)庫(kù),并且,ODBC已經(jīng)成為一種標(biāo)準(zhǔn),目前所有的關(guān)系數(shù)據(jù)庫(kù)[3]都提供了 ODBC驅(qū)動(dòng)程序,這使ODBC的應(yīng)用非常廣泛,基本上可用于所有的關(guān)系數(shù)據(jù)庫(kù)。

    由于 ODBC是一種底層的訪問(wèn)技術(shù),因此,直接使用 ODBCAPI編寫應(yīng)用程序需要編寫大量代碼。Visual C++提供了MFC ODBC類,其中封裝了 ODBC API,因此,使用 MFC來(lái)創(chuàng)建 ODBC的應(yīng)用程序非常簡(jiǎn)便。

    煙臺(tái)市海岸帶環(huán)境地質(zhì)問(wèn)題復(fù)雜,數(shù)據(jù)種類及數(shù)據(jù)量繁多,關(guān)系復(fù)雜。因此,研究選取了基于 MFC ODBC數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)來(lái)進(jìn)行開發(fā)。該系統(tǒng)集所有的數(shù)據(jù)管理、查詢、統(tǒng)計(jì)、分析報(bào)表功能于一體。采用該方法開發(fā)了管理系統(tǒng)中的基礎(chǔ)數(shù)據(jù)管理模塊,包括監(jiān)測(cè)點(diǎn)普查信息管理子系統(tǒng)、監(jiān)測(cè)點(diǎn)水位數(shù)據(jù)管理子系統(tǒng)、監(jiān)測(cè)點(diǎn)水量數(shù)據(jù)管理子系統(tǒng)、監(jiān)測(cè)點(diǎn)水溫?cái)?shù)據(jù)管理子系統(tǒng)、監(jiān)測(cè)點(diǎn)水質(zhì)數(shù)據(jù)管理子系統(tǒng)、野外調(diào)查點(diǎn)水質(zhì)數(shù)據(jù)管理子系統(tǒng)和降雨量數(shù)據(jù)管理子系統(tǒng)。

    系統(tǒng)開發(fā)技術(shù)流程如圖 2所示。

    圖2 基于 ODBC數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)的數(shù)據(jù)管理系統(tǒng)開發(fā)技術(shù)路線圖

    2.2 圖庫(kù)管理系統(tǒng)的開發(fā)

    MAPGIS提供的類庫(kù)有基于 CView類派生的 CGisView類、CGisEditView和 CPrjEditView類。本研究選取采用繼承CGisEditView類和CPrjEditView類的方法,這樣可以同時(shí)使用CGisView、CGisEditView類及 VC++的 CView類所提供的所有功能。

    其中繼承 CGisEditView類開發(fā)了圖形信息庫(kù)管理界面模塊程序 Prjmapsee.exe,繼而開發(fā)了基礎(chǔ)圖形庫(kù)管理系統(tǒng)(jctk.exe)、海水入侵危險(xiǎn)性評(píng)價(jià)系統(tǒng)(hsrq.exe)、海岸線變遷危險(xiǎn)性評(píng)價(jià)系統(tǒng)(axbq.exe)、地下水環(huán)境質(zhì)量評(píng)價(jià)系統(tǒng)(h jzl.exe)、地下水系統(tǒng)脆弱性評(píng)價(jià)系統(tǒng)(dscr.exe)、地下水資源潛力評(píng)價(jià)系統(tǒng)(zyq l.exe)、地下水庫(kù)建設(shè)可行性評(píng)價(jià)系統(tǒng)(sk js.exe)、海岸帶地質(zhì)環(huán)境質(zhì)量綜合評(píng)價(jià)系統(tǒng)(dzhj.exe)和海岸帶建設(shè)功能用地適宜性評(píng)價(jià)系統(tǒng)(hajs.exe)。開發(fā)流程圖如圖 3所示。

    圖3 基于 MAPGIS類庫(kù)開發(fā)的圖庫(kù)管理與編輯系統(tǒng)開發(fā)流程圖

    3 系統(tǒng)功能和應(yīng)用

    根據(jù)系統(tǒng)程序結(jié)構(gòu)的設(shè)計(jì),該系統(tǒng)主要有:顯示工程圖件、數(shù)據(jù)輸入、數(shù)據(jù)查詢、數(shù)據(jù)輸出[4]和數(shù)據(jù)備份功能模塊,從而實(shí)現(xiàn)對(duì)煙臺(tái)市海岸帶環(huán)境地質(zhì)相關(guān)數(shù)據(jù)的有效管理。

    3.1 顯示工程圖件

    在基礎(chǔ)圖庫(kù)的菜單中,選擇任意一個(gè)圖件,將彈出顯示工程圖件的界面,界面的左側(cè)為樹視圖,選中圖件名稱前的方框,界面的右側(cè)將顯示該圖件,還可以對(duì)圖件進(jìn)行放大顯示、縮小顯示和復(fù)位顯示。該界面還具有添加 MAPGIS點(diǎn)文件、區(qū)文件、線文件和工程文件 MPJ的功能,在界面的右下角可以讀取光標(biāo)所在位置的坐標(biāo)。

    3.2 數(shù)據(jù)輸入

    在基礎(chǔ)信息庫(kù)管理系統(tǒng)中,初始化了監(jiān)測(cè)點(diǎn)普查信息、監(jiān)測(cè)點(diǎn)水位數(shù)據(jù)、監(jiān)測(cè)點(diǎn)水溫?cái)?shù)據(jù)、監(jiān)測(cè)點(diǎn)水量數(shù)據(jù)、監(jiān)測(cè)點(diǎn)水質(zhì)數(shù)據(jù)、野外調(diào)查點(diǎn)水質(zhì)數(shù)據(jù)和降雨量數(shù)據(jù),可以在相應(yīng)的界面下輸入需要更新的數(shù)據(jù)。

    3.3 數(shù)據(jù)查詢

    基礎(chǔ)信息庫(kù)管理系統(tǒng)具有分類查詢功能,可以選擇查詢

    類別、查詢條件,可供選擇的有“大于、大于等于、等于、小于等于、等于”。點(diǎn)擊查詢即可從數(shù)據(jù)庫(kù)中查詢得到記錄。

    3.4 數(shù)據(jù)輸出

    點(diǎn)擊“報(bào)表”,系統(tǒng)提供了與Excel接口功能,查詢結(jié)果將以 Excel格式報(bào)表輸出,供用戶使用。報(bào)表將存在安裝目錄下的“YTDZ報(bào)表 ”目錄下。

    3.5 數(shù)據(jù)備份

    在數(shù)據(jù)備份的界面中,選擇我們想要備份的圖件或其它格式的資料,并選擇希望保存的路徑,即可完成重要數(shù)據(jù)備份,非常方便。

    4 系統(tǒng)功能的實(shí)現(xiàn)

    系統(tǒng)采用 MAPGIS67SDK+VC模式編程,使用 MAPGIS67SDK顯示圖件資料和管理相關(guān)信息,使用 VC完成界面設(shè)計(jì)及數(shù)據(jù)庫(kù)顯示。以下是本系統(tǒng)基本功能實(shí)現(xiàn)的介紹。

    4.1 圖件管理的實(shí)現(xiàn)

    調(diào)用_AppendArea(short ai)函數(shù),將要顯示的工作區(qū)添加到 CGisView類的顯示列表中,即可由 CGisView來(lái)自動(dòng)完成圖形的顯示,代碼如下:

    shortCTryAttCtrlView::OpenLinFile()

    {//打開線文件

    m_Ai=_OpenLinArea(m_h Inst);//m_h Inst為打開的工作區(qū)實(shí)例

    _LoadFile(m_Ai);

    _AppendArea(m_Ai);

    return 1;

    }

    放大功能:void_dsEnlargeMapDbs(HWND hWnd,DbsAI dbsAi);

    縮小功能:void_dsDelargeMapDbs(HWND hWnd,DbsAI dbsAi);

    復(fù)位顯示:_RestoreWindow();裝入點(diǎn)文件:LoadPoint();裝入線文件:LoadLine();

    裝入?yún)^(qū)文件:LoadRegion();裝入工程文件:LoadProject()。

    4.2 數(shù)據(jù)管理的實(shí)現(xiàn)

    系統(tǒng)的數(shù)據(jù)庫(kù)通過(guò) access的關(guān)系模型建立起來(lái),VC將其連接并顯示出來(lái),代碼如下:

    CString VSjxxset::GetDefaultConnect()//連接數(shù)據(jù)庫(kù)

    {return_T("ODBC;DSN=y tdz");//ytdz是數(shù)據(jù)庫(kù)的名稱}

    CString VSjxxset::GetDefaultSQL()

    {return_T("[sw水溫]");//sw水溫是數(shù)據(jù)表的名稱}

    數(shù)據(jù)輸入:m_time.GetW indowText(str);m_pset.m_time=str;

    數(shù)據(jù)刪除:

    if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)

    {

    str.Format(_T("確實(shí)要?jiǎng)h除第%d條記錄?"),i+1);

    if(AfxMessageBox(str,MB_YESNO,0)==IDYES)

    {

    m_list.GetItem Text(i,0,ctemp,sizeof(char[20]));

    m_list.DeleteItem(i);

    VSjxxsetm_pset;

    UpdateData(TRUE);

    m_pset.Open(CRecordset::snapshot,NULL,CRecordset::none);

    m_pset.m_strFilter.Format("ID=%d",atoi(ctemp));

    m_pset.Requery();

    m_pset.Delete();

    if(m_pset.IsOpen())

    {

    m_pset.Close();

    }}}

    數(shù)據(jù)查詢:m_pSet->Close();

    m_strfiter="...";//定義查詢條件

    m_pSet->Open();

    m_pSet->Requery();//來(lái)更新記錄集數(shù)據(jù)輸出:CSpreadSheet SS(szCurrentDir[0],"TestSheet");//新建 Excel文件名及路徑,TestSheet為內(nèi)部表名

    samp leArray.RemoveAll();

    samp leArray.Add("ID");//加入標(biāo)題

    samp leArray.Add(m_list.GetItem Text(i,j));//加入數(shù)據(jù)

    5 結(jié)語(yǔ)

    煙臺(tái)市海岸帶環(huán)境地質(zhì)問(wèn)題評(píng)價(jià)系統(tǒng)將煙臺(tái)市主要的環(huán)境地質(zhì)問(wèn)題的相關(guān)資料數(shù)據(jù)整理在一起,形成了規(guī)范的數(shù)據(jù)資料列表,解決了實(shí)際工作中,數(shù)據(jù)資料格式不統(tǒng)一和紙質(zhì)圖不易保存的問(wèn)題,對(duì)當(dāng)?shù)叵嚓P(guān)部門了解海岸帶的具體情況提供了很大的方便。

    [1]中地軟件公司.MAPGIS二次開發(fā)培訓(xùn)教程.2001.10.

    [2]施伯樂(lè),顧寧,劉國(guó)華 譯.數(shù)據(jù)庫(kù)處理——基礎(chǔ)、設(shè)計(jì)與實(shí)現(xiàn)(第七版)[M].北京:電子工業(yè)出版社,2001.3.

    [3]張強(qiáng).巧學(xué)巧用 Access 2003數(shù)據(jù)庫(kù)應(yīng)用開發(fā)實(shí)例[M].北京:電子工業(yè)出版社,2007.1.

    [4]楊志,郭福生,劉林清.基于 MAPGIS的江西省丹霞地貌信息系統(tǒng)設(shè)計(jì)與開發(fā)[J].測(cè)繪與空間地理信息,2006.2.

    猜你喜歡
    類庫(kù)圖件二次開發(fā)
    一種地質(zhì)圖件數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)思路
    遙感解譯成果圖件矢量化方法技術(shù)研究*
    淺談基于Revit平臺(tái)的二次開發(fā)
    甘肅科技(2020年20期)2020-04-13 00:30:02
    用Java編寫客戶機(jī)/服務(wù)器端應(yīng)用程序
    淺談Mastercam后處理器的二次開發(fā)
    模具制造(2019年3期)2019-06-06 02:11:02
    Python在數(shù)據(jù)可視化中的應(yīng)用
    基于MapGIS和ArcGIS的遙感解譯成果圖件數(shù)據(jù)庫(kù)設(shè)計(jì)與實(shí)現(xiàn)
    數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革方案和應(yīng)用效果
    軟件工程(2017年12期)2018-01-29 17:35:55
    數(shù)據(jù)結(jié)構(gòu)可視化類庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)
    西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
    施甸县| 云和县| 新竹县| 吴堡县| 漳平市| 新乐市| 平定县| 鄱阳县| 临漳县| 洛川县| 甘孜县| 厦门市| 沾益县| 江口县| 泗阳县| 永仁县| 建水县| 塔城市| 惠安县| 金昌市| 呼伦贝尔市| 金溪县| 城固县| 勃利县| 怀仁县| 乌拉特前旗| 博爱县| 西林县| 玛纳斯县| 台南县| 寿阳县| 琼结县| 宜城市| 尼玛县| 台前县| 夏河县| 新乡县| 宕昌县| 寻甸| 中牟县| 乌苏市|