• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于VisualC++環(huán)境下MapX的研究與應(yīng)用

      2015-05-15 21:48:19張亞軍王川詹家賓
      電腦知識與技術(shù) 2015年8期
      關(guān)鍵詞:經(jīng)緯度二次開發(fā)對話框

      張亞軍 王川 詹家賓

      摘要:地理信息系統(tǒng)是一項以計算機為基礎(chǔ)的新興技術(shù)。該文首先概述了地理信息系統(tǒng)的基本概念,然后介紹了地理信息系統(tǒng)軟件MapInfo MapX及其開發(fā)技術(shù)。最后,通過一個具體的示例演示了MapX在Visual C++環(huán)境進行開發(fā)的過程。

      關(guān)鍵詞:地理信息系統(tǒng);MapInfo MapX;Visual C++

      中圖分類號: TP311 文獻標識碼 A 文章編號:1009-3044(2015)08-0086-03

      Abstract: Geographic Information System is a new technique based on computer. This paper begins with an overview of GIS; then details the MapInfo MapX and; finally gives an instance of how to develop application using Mapx based on visual C++.

      Key words: GIS; MapInfo MapX; Visual C++

      1 引言

      1.1 地理信息系統(tǒng)GIS簡介

      地理信息系統(tǒng)(Geographic Information System, GIS),system)直譯為地理信息系統(tǒng),是一種處理地理空間數(shù)據(jù)的信息系統(tǒng)[1],是一項以計算機為基礎(chǔ)的新興技術(shù),它是在計算機硬、軟件系統(tǒng)支持下,對整個或部分地球表層(包括大氣層)空間中的有關(guān)地理分布數(shù)據(jù)進行采集、存儲、管理、運算、分析、顯示和描述的技術(shù)系統(tǒng)。地理信息系統(tǒng)處理、管理的對象是多種地理空間實體數(shù)據(jù)及其關(guān)系,包括空間定位數(shù)據(jù)、圖形數(shù)據(jù)、遙感圖像數(shù)據(jù)、屬性數(shù)據(jù)等,用于分析和處理在一定地理區(qū)域分布的各種現(xiàn)象和過程,解決復(fù)雜的規(guī)劃、決策和管理問題[2]。地理信息系統(tǒng)的出現(xiàn),改變了地理信息交換的方式,并為地理學(xué)的研究注入了新活力,正如陳述彭先生所說:“ 如果說地圖是地理學(xué)的第二代語言, 那么地理信息系統(tǒng)就是地理學(xué)的第三代語言?!?[3]

      地理信息系統(tǒng)按內(nèi)容分為兩類:應(yīng)用型GIS與工具型GIS。應(yīng)用型GIS是以某一專業(yè)、領(lǐng)域或工作為主要內(nèi)容,而工具型GIS是支撐軟件,包括空間數(shù)據(jù)輸入、存儲、管理、分析與輸出等基本功能。目前開發(fā)應(yīng)用型GIS是開發(fā)者最關(guān)心的問題。二次開發(fā)有以下三種實現(xiàn)方式:

      獨立開發(fā)。獨立開發(fā)不依賴于任何GIS工具軟件,從空間數(shù)據(jù)的采集、編輯到數(shù)據(jù)的處理分析及結(jié)果輸出,所有的算法都由開發(fā)者獨立設(shè)計,然后選用某種程序設(shè)計語言,在一定的操作系統(tǒng)平臺上編譯實現(xiàn)。獨立開發(fā)的優(yōu)點是:不依賴任何商業(yè)GIS工具軟件,可減少開發(fā)成本。不足之處是:對大多數(shù)開發(fā)者來講,開發(fā)出來的產(chǎn)品很難在功能上與商業(yè)GIS工具軟件相比,且在GIS工具軟件上省下的錢,可能抵不上開發(fā)者在開發(fā)過程中絞盡腦汁所付出的代價。

      單純二次開發(fā)。單純二次開發(fā)完全借助于GIS工具關(guān)鍵提供的開發(fā)語言進行應(yīng)用系統(tǒng)開發(fā)。GIS工具軟件大多提供了可供用戶進行二次開發(fā)的宏語言,如ArcView提供了Avenue語言,MapInfo公司研制的MapInfo Professional提供了MapBasic語言等。用戶可以利用這些宏語言,以原GIS工具軟件為開發(fā)平臺,開發(fā)出針對不同應(yīng)用對象的應(yīng)用程序。這種方式雖省時省心,但進行二次開發(fā)的宏語言作為變成語言智能算是二流語言,功能極弱,用它們來開發(fā)應(yīng)用程序仍然不盡如人意。

      集成二次開發(fā)。集成二次開發(fā)指利用專業(yè)的GIS工具軟件,如ArcView、MapInfo等,實現(xiàn)GIS的基本功能,以通用軟件開發(fā)攻擊尤其是可視化開發(fā)工具,如Delphi、Visual C++、Visua Basic、PowerBuilder等為開發(fā)平臺,進行二者的集成開發(fā)。

      1.2 MapInfo MapX簡介

      MapInfo MapX是美國MapInfo公司開發(fā)的低價高效、強大的ActiveX組件,可以很方便的集成到使用標準可視化編程工具開發(fā)的商業(yè)應(yīng)用中。MapInfo MapX支持將地圖功能添加到任何應(yīng)用中,提供了一種高度可視化的方法,來顯示和分析基于位置的數(shù)據(jù),從而更好的為客戶服務(wù),更好的進行商業(yè)決策,更好的管理資產(chǎn)和運營。

      MapInfo MapX支持開發(fā)商方便快捷的將地圖功能集成到新的或已有的應(yīng)用中??梢允褂脴藴实木幊陶Z言——Visual Basic、Visual C++、Delphi、PowerBuilder和Oracle Express Objects。因為不需要學(xué)習(xí)新的或高難度的編程語言,開發(fā)者可以快速展開工作,方便的適合和實現(xiàn)地圖功能和特性。

      MapInfo MapX提供了大量的方法和事件以及其他向?qū)韼椭喕瘧?yīng)用開發(fā)。

      2 Visual C++中創(chuàng)建MapX地圖

      在Visual C++中使用MapX,項目當中必須包含MapX.cpp和MapX.h兩個文件,可以在MapX的示例當中找到這兩個文件。在Visual C++中創(chuàng)建MapX地圖,可以根據(jù)需要在主視圖或?qū)υ捒蛑袆?chuàng)建。下面分別對這兩種方式進行簡單介紹。

      2.1 在主視圖中創(chuàng)建地圖

      首先,用Visual C++創(chuàng)建一個工程。通過菜單File->New,在Projects窗口選中MFC AppWizard(exe),在右側(cè)填寫項目名稱。在接下來的第一步,選擇Single document,其他步驟選擇默認設(shè)置。

      工程建立完畢以后,為了使用MapX,將MapX.cpp、MapX.h兩個文件復(fù)制到工程的根目錄里面,然后使用菜單Project->Add To Project->Files,選擇MapX.cpp和MapX.h兩個文件,將其加入到成當中。添加到工程以后,Visual C++中的ClassView當中會顯示MapX提供的類,如圖1所示。所有MapX相關(guān)類都以“CMapX”開頭,后面為具體的類名。不要選擇“項目”->“組件和控件”命令。這樣做將會創(chuàng)建一個 .cpp 文件,但該文件將是不完整的[4]。

      1)為在工程中使用MapX,在自己創(chuàng)建的視圖類CMapView的頭文件中,添加如下代碼:

      3 簡單開發(fā)實例

      本節(jié)通過在對話框插入MapX,然后開發(fā)工具測量地圖上任意兩點間的距離,演示采用Visual C++進行MapX開發(fā)的基本方法。

      3.1 為對話框添加快捷菜單

      通過菜單Project->Add To Project->Components and Controls …打開Components and Controls Gallery對話框,選擇“Visual C++ Components”文件夾里面的“Pop-up Menu”,雙擊和點擊“Insert”插入快捷菜單,在彈出的Pop-up Menu對話框中,在“Add pop-up menu to:”里面選擇MapX所對應(yīng)的對話框。

      然后在ResourceView窗口選中新建的快捷菜單進行編輯,保留“開始測距”和“結(jié)束測距”兩個菜單,ID分別為ID_MAP_BDIS和ID_MAP_EDIS。運行程序,右鍵點擊地圖,即可得到快捷菜單。

      3.2 開發(fā)地圖上任意兩點間距離的計算

      在MapX當中,提供了計算兩點間距離的函數(shù)double CMapX::Distance(double X1, double Y1, double X2, double Y2),其中(X1,Y1)、(X2,Y2)分別對應(yīng)了地圖上兩點的經(jīng)緯度。但是,用鼠標獲取的點的坐標都是屏幕坐標,不能直接用該函數(shù)計算距離,必須轉(zhuǎn)化成地圖上的經(jīng)緯度。MapX提供了一個經(jīng)緯度和屏幕坐標間相互轉(zhuǎn)化的函數(shù),void CMapX::ConvertCoord(float* ScreenX, float* ScreenY, double* MapX, double* MapY, short Direction),從參數(shù)名稱可以對其功能一目了然,Direction則是一個標志位,表示轉(zhuǎn)化是由屏幕坐標轉(zhuǎn)換到地圖坐標,還是由地圖坐標轉(zhuǎn)換到屏幕坐標,取值為miMapToScreen=0,或miSceeenToMap=1。

      為了保存鼠標點擊位置,為對話框類CMapdlgDlg增加四個成員變量,double StartX、double StartY、double EndX、double EndY,分別保存鼠標按下和彈起時地圖坐標的經(jīng)緯度。之后再增加成員變量double Distance保存計算得到的兩點間的距離。

      通過View->ClassWizard打開ClassWizard對話框,在Class name選擇對話框類“CMapdlgDlg”,然后在Object IDs選擇MapX對應(yīng)的資源符號“IDC_MAP1”,在Message選擇“MouseDown”和“MouseUp”,點擊“Add Function”。

      4 結(jié)束語

      本文首先概述地理信息系統(tǒng)GIS,然后介紹了在Visual C++下引入MapX的方法,最后通過一個簡單的示例說明了在Visual C++下采用對話框的方式開發(fā)MapX的方法。限于篇幅,該示例非常簡單,但涵蓋了在Visual C++下MapX開發(fā)常用的技術(shù),具有一定的借鑒意義。

      參考文獻:

      [1] 犁夏,劉凱.GIS 與空間分析原理與方法[M].北京:科學(xué)出版社.2006

      [2] 尹旭日,張武軍.Visual C++環(huán)境下MapX的開發(fā)技術(shù)[M].北京:冶金工業(yè)出版社,2009.

      [3] 李連營,李清泉,李漢武,等.基于MapX的GIS應(yīng)用開發(fā)[M].武漢:武漢大學(xué)出版社,2003.

      [4] Troy. MapX開發(fā)人員指南[M].紐約:MapInfo公司,2002.

      猜你喜歡
      經(jīng)緯度二次開發(fā)對話框
      淺談基于Revit平臺的二次開發(fā)
      甘肅科技(2020年20期)2020-04-13 00:30:02
      正?;謴?fù)虛擬機
      淺談Mastercam后處理器的二次開發(fā)
      模具制造(2019年3期)2019-06-06 02:11:02
      Bootlace Worms’Secret etc.
      西門子Easy Screen對倒棱機床界面二次開發(fā)
      自制中學(xué)實驗操作型經(jīng)緯測量儀
      澳洲位移大,需調(diào)經(jīng)緯度
      一種利用太陽影子定位的數(shù)學(xué)模型
      基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
      快速抓取對話框中的完整信息
      電腦迷(2012年22期)2012-04-29 20:30:54
      姜堰市| 台北县| 电白县| 黄大仙区| 郯城县| 洪雅县| 错那县| 中超| 吉水县| 太原市| 贵州省| 扶沟县| 河津市| 灵台县| 贵溪市| 万年县| 绥棱县| 贵定县| 阿坝| 兴义市| 兴城市| 永安市| 博客| 华宁县| 吉木萨尔县| 绥芬河市| 宁国市| 鹤壁市| 库尔勒市| 翁牛特旗| 洛阳市| 阆中市| 汾西县| 尼勒克县| 隆尧县| 靖州| 略阳县| 上蔡县| 喀什市| 揭东县| 鄂州市|