亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        張亞軍 王川 詹家賓

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

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

        中圖分類號(hào): TP311 文獻(xiàn)標(biāo)識(shí)碼 A 文章編號(hào):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簡(jiǎn)介

        地理信息系統(tǒng)(Geographic Information System, GIS),system)直譯為地理信息系統(tǒng),是一種處理地理空間數(shù)據(jù)的信息系統(tǒng)[1],是一項(xiàng)以計(jì)算機(jī)為基礎(chǔ)的新興技術(shù),它是在計(jì)算機(jī)硬、軟件系統(tǒng)支持下,對(duì)整個(gè)或部分地球表層(包括大氣層)空間中的有關(guān)地理分布數(shù)據(jù)進(jìn)行采集、存儲(chǔ)、管理、運(yùn)算、分析、顯示和描述的技術(shù)系統(tǒng)。地理信息系統(tǒng)處理、管理的對(duì)象是多種地理空間實(shí)體數(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ù)輸入、存儲(chǔ)、管理、分析與輸出等基本功能。目前開發(fā)應(yīng)用型GIS是開發(fā)者最關(guān)心的問題。二次開發(fā)有以下三種實(shí)現(xiàn)方式:

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

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

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

        1.2 MapInfo MapX簡(jiǎn)介

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

        MapInfo MapX支持開發(fā)商方便快捷的將地圖功能集成到新的或已有的應(yīng)用中??梢允褂脴?biāo)準(zhǔn)的編程語言——Visual Basic、Visual C++、Delphi、PowerBuilder和Oracle Express Objects。因?yàn)椴恍枰獙W(xué)習(xí)新的或高難度的編程語言,開發(fā)者可以快速展開工作,方便的適合和實(shí)現(xiàn)地圖功能和特性。

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

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

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

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

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

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

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

        3 簡(jiǎn)單開發(fā)實(shí)例

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

        3.1 為對(duì)話框添加快捷菜單

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

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

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

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

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

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

        4 結(jié)束語

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

        參考文獻(xiàn):

        [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ā)對(duì)話框
        淺談基于Revit平臺(tái)的二次開發(fā)
        甘肅科技(2020年20期)2020-04-13 00:30:02
        正常恢復(fù)虛擬機(jī)
        淺談Mastercam后處理器的二次開發(fā)
        模具制造(2019年3期)2019-06-06 02:11:02
        Bootlace Worms’Secret etc.
        西門子Easy Screen對(duì)倒棱機(jī)床界面二次開發(fā)
        自制中學(xué)實(shí)驗(yàn)操作型經(jīng)緯測(cè)量?jī)x
        澳洲位移大,需調(diào)經(jīng)緯度
        一種利用太陽影子定位的數(shù)學(xué)模型
        基于Pro/E二次開發(fā)的推土鏟參數(shù)化模塊開發(fā)
        快速抓取對(duì)話框中的完整信息
        電腦迷(2012年22期)2012-04-29 20:30:54
        国产亚洲精品综合一区| 午夜无码无遮挡在线视频| 亚洲国产成人av第一二三区 | 一区二区三区乱码在线 | 欧洲| 国内大量揄拍人妻在线视频| 日本丰满少妇高潮呻吟| 91九色视频在线国产| 亚洲中文字幕无码天然素人在线| 99精品视频在线观看免费| 亚洲国产高清美女在线观看| 人妻少妇偷人精品一区二区三区| 亚洲色欲久久久综合网东京热| 男人边吻奶边挵进去视频| 国产精品国产自线拍免费| 男女动态91白浆视频| 国产片精品av在线观看夜色| 无码人妻一区二区三区免费| 特级毛片a级毛片在线播放www| 亚洲一区二区三区精品视频| 亚洲成av人的天堂在线观看| 93精91精品国产综合久久香蕉| 亚洲av偷拍一区二区三区| 五月天中文字幕日韩在线| 亚洲欧洲精品无码av| 国产无套视频在线观看香蕉| 亚洲无av码一区二区三区| 激情内射亚洲一区二区三区| 国产在线观看免费观看| 久久亚洲精彩无码天堂| 91精品国自产拍老熟女露脸| 熟妇激情内射com| 女高中生自慰污免费网站| 国产又湿又爽又猛的视频 | 中国女人做爰视频| 麻豆国产巨作AV剧情老师| 在线免费观看毛视频亚洲精品 | 女人色熟女乱| 国产精品黄网站免费观看| 亚洲黄片av在线免费观看| 国内永久福利在线视频图片| 亚洲色大网站www永久网站|