• 
    

    
    

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

      ?

      基于數(shù)字地圖的三維圖形控件開發(fā)技術(shù)

      2010-04-19 10:11:40孫建波
      城市勘測(cè) 2010年5期
      關(guān)鍵詞:數(shù)字地圖開發(fā)技術(shù)等高線

      孫建波

      (西安測(cè)繪總站,陜西西安 710054)

      基于數(shù)字地圖的三維圖形控件開發(fā)技術(shù)

      孫建波?

      (西安測(cè)繪總站,陜西西安 710054)

      討論了開發(fā)GIS控件的意義以及使用MFC和OpenGL開發(fā)基于數(shù)字地圖的三維圖形控件的開發(fā)技術(shù)。介紹了DLG、DEM數(shù)據(jù)的存儲(chǔ)基本形式,使用等高線、DEM顯示三維矢量圖形和立體地形的方法,并給出了開發(fā)三維控件的實(shí)例。

      DEM;數(shù)字地圖;控件

      1 引 言

      傳統(tǒng)的GIS系統(tǒng),系統(tǒng)結(jié)構(gòu)相對(duì)封閉、龐大,價(jià)格昂貴,不易與其他信息系統(tǒng)相結(jié)合。由于組件技術(shù)的出現(xiàn),軟件產(chǎn)業(yè)的形式也隨之發(fā)生了很大的變化。大量組件生產(chǎn)商涌現(xiàn)出來,并推出各具特色的組件產(chǎn)品;軟件集成商則利用適當(dāng)?shù)慕M件,將這些組件集成,快速生產(chǎn)出用戶需要的應(yīng)用系統(tǒng)。GIS的開發(fā)也同其他軟件產(chǎn)品一樣,逐漸步入了利用組件技術(shù)進(jìn)行開發(fā)的行列中。開發(fā)小巧靈活、功能獨(dú)特的GIS控件是目前GIS開發(fā)方法之一。本文在開發(fā)工作的實(shí)例中,給出了如何使用數(shù)字地圖數(shù)據(jù)開發(fā)三維圖形控件的方法。

      2 MFC構(gòu)建控件程序框架

      2.1 MFC ActiveX ControlWizard構(gòu)造控件和程序框架

      ActiveX是Microsoft提出的一組使用COM(Component Object Model,部件對(duì)象模型)使得軟件部件在網(wǎng)絡(luò)環(huán)境中進(jìn)行交互的技術(shù)集,它與具體的編程語言無關(guān)。作為針對(duì)Internet應(yīng)用開發(fā)的技術(shù),ActiveX被廣泛應(yīng)用于WEB服務(wù)器以及客戶端的各個(gè)方面。ActiveX是一個(gè)模塊化的對(duì)象,應(yīng)用程序要增加它的功能,只要靈活地插入具有此項(xiàng)功能的ActiveX控件即可實(shí)現(xiàn)。ActiveX的優(yōu)勢(shì)還在于它的動(dòng)態(tài)可交互性,用戶可以動(dòng)態(tài)地在使用過程中,通過改變它的屬性和參數(shù),在應(yīng)用程序中實(shí)現(xiàn)自己的要求。本文著重介紹以Visual C++6.0為工具,利用系統(tǒng)提供的AppWizard和MFC構(gòu)造使用DEM顯示三維立體地形的ActiveX控件。

      在Microsoft Developer Studio環(huán)境下,按如下的操作步驟可以快速生成一個(gè)標(biāo)準(zhǔn)的ActiveX控件。首先,啟動(dòng)系統(tǒng)的AppWizard,用File菜單下的New菜單項(xiàng)創(chuàng)建新的項(xiàng)目。選擇的是列表框中的MFC ActiveX ControlWizard項(xiàng)。用 MFC ActiveX ControlWizard項(xiàng)則產(chǎn)生以COleControl為基類的控件對(duì)象類,它繼承了所有COleControl類中實(shí)現(xiàn)的OLE控件的特性,包括窗口對(duì)象特性和方法、屬性及事件等。接著,按照系統(tǒng)給出的提示信息逐步完成創(chuàng)建工作。用戶可根據(jù)實(shí)際應(yīng)用的要求定制控件的各項(xiàng)特性。上述步驟創(chuàng)建的項(xiàng)目名為View3D,創(chuàng)建工作完成后,打開Workspace文件View3D.dsw,可以看到系統(tǒng)生成的View3D控件框架。編譯此項(xiàng)目,生成 View3D. ocx。在當(dāng)前的Developer Studio環(huán)境下,這個(gè)控件已經(jīng)被自動(dòng)注冊(cè)了。

      2.2 控件的測(cè)試

      用Microsoft Developer Studio開發(fā)環(huán)境提供的工具ActiveX Control Test Container可以立即進(jìn)行測(cè)試,在已提供的可插入OLE控件列表中,View3D就是我們生成的控件名。如果想在Visual Basic、Visual Foxpro等其他開發(fā)環(huán)境中使用它,則必須先對(duì)View3D. ocx文件進(jìn)行注冊(cè),具體做法是在Windows操作系統(tǒng)的命令行方式下鍵入命令:“regsvr32…\View3D. ocx”。此后,我們就可在任何支持ActiveX控件的環(huán)境中使用它了。注意:.ocx文件應(yīng)該隨時(shí)更新和注冊(cè)。當(dāng)然,這樣生成的控件沒有什么實(shí)質(zhì)性的用處,若在任何一個(gè)包容器中測(cè)試它,則只可見一個(gè)矩形框和一個(gè)內(nèi)切橢圓,除了縮放和位置移動(dòng)功能外不能進(jìn)行任何操作。接下來,我們利用這個(gè)基本框架開發(fā)更復(fù)雜的三維圖形控件了。

      3 控件下OpenGL程序的實(shí)現(xiàn)步驟

      3.1 加入庫(kù)文件

      要實(shí)現(xiàn)OpenGL編程,首先要在編程環(huán)境中包括兩個(gè)函數(shù)庫(kù):opengl32.lib和glu32.lib。

      3.2 圖形操作描述

      用GDI函數(shù)繪制窗口時(shí)使用了CDC成員函數(shù),程序首先必須處理設(shè)備描述表DC(Device Contexts),DC包含了如何在窗口上顯示圖形的諸多信息。除DC外,OpenGL還必須處理專用的繪圖描述表RC(Rendering Contexts)。RC中包含有OpenGL與窗口系統(tǒng)相關(guān)的各種消息。一個(gè)OpenGL應(yīng)用程序必須創(chuàng)建一個(gè)繪圖描述表后再啟動(dòng)它,最后在所定義的窗口內(nèi)按常規(guī)方式調(diào)用OpenGL函數(shù)繪制圖形。繪圖描述表RC是用 OpenGL函數(shù) wglCreateContext建立的。程序在OnCreate方法中創(chuàng)建了一個(gè)繪圖描述表RC,在程序的整個(gè)生存期都在使用它,它是在CView3DCtrl::OnDestroy()函數(shù)中的wglDeleteContext撤銷的。另外在使用OpenGL有一個(gè)限制,它只能用于具有WS_CLIPSIBLINGS和WS_CLIPCHILDREN風(fēng)格的窗口,如果窗口不具有這些風(fēng)格,OpenGL將不會(huì)繪制任何東西。

      3.3 像素格式

      在創(chuàng)建一個(gè)繪圖描述表之前,首先必須設(shè)置像素格式。像素格式確定了從OpenGL圖形到顯示窗口所支持的格式。第一步要用描述著色類型的值填充PIXELFORMATDESCRIPTOR結(jié)構(gòu),該結(jié)構(gòu)和目標(biāo)窗口的設(shè)備描述表一起傳遞給ChoosePixelFormat函數(shù),傳遞給該函數(shù)的信息用來確定像素格式,實(shí)現(xiàn)所需格式和系統(tǒng)所能夠給予格式的最佳匹配。

      4 數(shù)字地圖的三維顯示

      4.1 DLG數(shù)據(jù)及顯示

      在這里以等高線為例子,說明DLG數(shù)據(jù)的特點(diǎn)以及顯示。等高線數(shù)據(jù)包括的等高線的屬性數(shù)據(jù)和坐標(biāo)串,其中屬性數(shù)據(jù)又包括了等高線的類型、高程等內(nèi)容。坐標(biāo)串和高程構(gòu)成的三維空間的線,Open-GL提供了顯示線的功能,顯示的結(jié)果如圖1等高線圖所示。

      等高線數(shù)據(jù)只能顯示如圖1所示的圖形,要顯示接近真實(shí)地形的圖形,就要將數(shù)據(jù)進(jìn)行轉(zhuǎn)換,本實(shí)例采用的方法是用離散點(diǎn)構(gòu)成Delauney三角網(wǎng),形成易于由OpenGL顯示的頂點(diǎn)-邊-面結(jié)構(gòu)的數(shù)據(jù),如圖2三角網(wǎng)顯示圖所示。

      圖1 等高線圖

      圖2 三角網(wǎng)顯示圖

      4.2 DEM數(shù)據(jù)格式及轉(zhuǎn)換

      將高程或海拔分布作為地面特性的描述稱為數(shù)字高程模型(DEM),數(shù)字高程模型是區(qū)域地形的數(shù)字表示,由一系列地面點(diǎn)的X、Y位置坐標(biāo)及其相應(yīng)的高程Z值組成。其中規(guī)則格網(wǎng)地形模型以矩形網(wǎng)格作為構(gòu)成地形模型的基本元素,在地形上按照網(wǎng)格規(guī)則等間隔的采集地形高程值,并把各點(diǎn)的高程值順序地存儲(chǔ)在文件中。國(guó)際上有許多通用的數(shù)字高程模型(DEM)標(biāo)準(zhǔn):SDTS,USGS Standard,DTED,GeoTIFF等,本控件使用的是地面高程數(shù)據(jù)文件(高斯-克呂格坐標(biāo)網(wǎng))。地面高程數(shù)據(jù)文件由一個(gè)首記錄和多個(gè)中間記錄組成,文件首記錄包含地面高程數(shù)據(jù)文件的名字和斷面數(shù),中間記錄包含斷面號(hào)、斷面點(diǎn)數(shù)、最大高程、最小高程以及斷面上的高程值等。根據(jù)地面高程數(shù)據(jù)文件的數(shù)據(jù)格式讀取數(shù)據(jù),將其轉(zhuǎn)換為易于OpenGL顯示的三角形頂點(diǎn)數(shù)據(jù)。轉(zhuǎn)換的一種簡(jiǎn)單方法是將每一個(gè)矩形網(wǎng)格分成兩個(gè)三角形,這樣就將網(wǎng)格數(shù)據(jù)轉(zhuǎn)換為三維的三角形網(wǎng)格。

      4.3 三維地形的顯示

      使用顯示列表是加速顯示的方法之一。一個(gè)顯示列表編譯了一系列標(biāo)準(zhǔn)的OpenGL調(diào)用,可通過使用顯示列表的標(biāo)識(shí)號(hào)調(diào)用。利用顯示列表顯示離散點(diǎn)構(gòu)成的三角面片,設(shè)置光照等屬性創(chuàng)建繪制場(chǎng)景,可得到三維地形的可視化結(jié)果。綜合地形的顯示和控件開發(fā)技術(shù)編制實(shí)現(xiàn)了地形顯示控件示例程序View3D。VC++提供了測(cè)試 ActiveX控件的工具 ActiveX Control Test Container,可以測(cè)試控件View3D的屬性、方法和事件。使用 ActiveX Control Test Container中測(cè)試View3D的顯示效果如圖3控件測(cè)試圖所示。

      圖3 控件測(cè)試圖

      5 控件的使用

      以 Visual Basic為例,簡(jiǎn)要說明使用已開發(fā)的View3D.ocx控件。在Visual Basic應(yīng)用程序中使用的ActiveX控件,以前稱為自定義控件或OLE控件,用法與使用標(biāo)準(zhǔn)控件一樣。Visual Basic的ActiveX控件是32位控件。一些第三方開發(fā)商提供的ActiveX控件是16位控件,這樣的控件不能再在Visual Basic中使用。將ActiveX控件和其他可加入的對(duì)象加到工具框中,即可在工程中使用它們。要在工程的工具框中加入控件,請(qǐng)按照以下步驟執(zhí)行:

      (1)在“工程”菜單中,單擊“部件”以顯示“部件”對(duì)話框。也可以在工具框中單擊鼠標(biāo)右鍵以顯示該對(duì)話框。該對(duì)話框中將列出所有已經(jīng)注冊(cè)的可加入的對(duì)象、設(shè)計(jì)者和ActiveX控件。

      (2)要在工具框中加入ActiveX控件,請(qǐng)選定控件名稱左邊的復(fù)選框。

      (3)單擊“確定”以關(guān)閉“部件”對(duì)話框。所有選定的ActiveX控件將出現(xiàn)在工具框中。完成了以上步驟,在以后的應(yīng)用系統(tǒng)開發(fā)中,就可以使用這個(gè)View3D控件來顯示三維的等高線和地形了。

      6 結(jié) 語

      本文簡(jiǎn)要介紹了三維圖形控件的開發(fā)技術(shù)以及在Visual Basic下的使用,在此圖形控件的基礎(chǔ)上可以增加其他功能,并在其他支持 ActiveX的容器下使用。隨著ActiveX技術(shù)和GIS功能組件的集成開發(fā)技術(shù)的發(fā)展,ActiveX的開發(fā)在GIS開發(fā)中的作用會(huì)越來越重要,是GIS開發(fā)的一個(gè)重要部分和發(fā)展的方向,值得進(jìn)一步深入地研究。

      參考資料

      [1]王家耀,鄒建華.地圖制圖數(shù)據(jù)處理模型方法[M].北京:解放軍出版社,1991

      [2]鄒逸江.空間數(shù)據(jù)立方體的研究[D].武漢大學(xué)博士論文,2002

      The Technology of 3D Graphics ActiveX Control Based on Digital Map

      Sun JianBo
      (Xi′an Survey Department,Xi′an 710054,China)

      This paper dissussed the meaning of GIS ActiveX controls and the methods of using MFC and OpenGL to develop 3D graph ActiveX control based on digital map,also introduced the basic storing structure of DLG、DEM and the methods of showing contour lines、DEM and presented the sample of 3D graph ActiveX control.

      DEM;digital map;control

      1672-8262(2010)05-51-03

      P208

      B

      2009—10—30

      孫建波(1969—),男,工程師,主要從事制圖與地理信息系統(tǒng)的開發(fā)。

      猜你喜歡
      數(shù)字地圖開發(fā)技術(shù)等高線
      地形圖的閱讀
      一種基于Fréchet距離的斷裂等高線內(nèi)插算法
      計(jì)算機(jī)應(yīng)用軟件開發(fā)技術(shù)的幾點(diǎn)探討
      電子制作(2017年14期)2017-12-18 07:08:10
      防散脫緯編無痕彈力面料開發(fā)技術(shù)國(guó)際領(lǐng)先
      “等高線地形圖的判讀”專題測(cè)試
      地理教育(2016年10期)2016-11-09 00:32:53
      一種用于輔助駕駛的傳感器融合數(shù)字地圖系統(tǒng)
      汽車文摘(2015年1期)2015-12-12 10:22:03
      諾基亞數(shù)字地圖服務(wù)Here花落三家
      中國(guó)煤層氣開發(fā)技術(shù)的現(xiàn)狀與未來
      復(fù)雜產(chǎn)品設(shè)計(jì)知識(shí)應(yīng)用開發(fā)技術(shù)研究
      山區(qū)等高線內(nèi)插生成DEM的精度評(píng)價(jià)
      惠州市| 满洲里市| 九龙县| 汾西县| 嘉禾县| 信丰县| 田林县| 慈利县| 石柱| 贵州省| 金华市| 东明县| 名山县| 大兴区| 三门县| 普格县| 苗栗市| 长子县| 涟源市| 浪卡子县| 萍乡市| 城步| 山东省| 祁连县| 高唐县| 石楼县| 咸阳市| 佛教| 博客| 刚察县| 禹城市| 上饶市| 荣成市| 宜丰县| 自治县| 巴彦淖尔市| 温宿县| 西乡县| 永丰县| 惠安县| 通海县|