• 
    

    
    

      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ā)
      曲麻莱县| 永平县| 汉阴县| 宾阳县| 磐安县| 伽师县| 全南县| 长宁县| 克东县| 北安市| 肥西县| 潍坊市| 安义县| 龙口市| 威海市| 祁东县| 栾川县| 都昌县| 浦城县| 昌图县| 潍坊市| 宁陕县| 抚远县| 澳门| 察雅县| 仁寿县| 平安县| 萨迦县| 宁夏| 贵溪市| 噶尔县| 巴青县| 惠水县| 林周县| 浠水县| 大竹县| 云梦县| 夏河县| 吴川市| 江华| 资源县|