999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2010-04-19 10:11:40孫建波
城市勘測(cè) 2010年5期

孫建波

(西安測(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ā)。

主站蜘蛛池模板: 午夜爽爽视频| 欧美亚洲综合免费精品高清在线观看| 国产成人精品一区二区秒拍1o| 无码国产伊人| 亚洲二区视频| 亚洲精品无码AV电影在线播放| 青草视频在线观看国产| 免费人欧美成又黄又爽的视频| 色久综合在线| 特级精品毛片免费观看| 99视频在线免费观看| 婷婷亚洲天堂| 亚洲综合色婷婷| 丁香婷婷久久| 人人妻人人澡人人爽欧美一区| A级毛片高清免费视频就| 亚洲开心婷婷中文字幕| 香蕉综合在线视频91| 91青青草视频| 亚洲自拍另类| 久久人人妻人人爽人人卡片av| 国产91特黄特色A级毛片| 99精品在线视频观看| 97视频免费看| 亚洲高清免费在线观看| 精品色综合| 亚洲精品成人片在线观看| 东京热高清无码精品| 亚洲AⅤ波多系列中文字幕| 一级爆乳无码av| 一级毛片在线直接观看| 亚卅精品无码久久毛片乌克兰| 夜精品a一区二区三区| 国产91九色在线播放| 9久久伊人精品综合| 激情综合网激情综合| 色播五月婷婷| 99精品欧美一区| 久久精品国产精品青草app| 波多野结衣在线se| 免费在线视频a| 97免费在线观看视频| 天天色综合4| 这里只有精品在线| 伊人久久大线影院首页| 免费无码AV片在线观看中文| 小说 亚洲 无码 精品| 丁香五月激情图片| 91年精品国产福利线观看久久| 69国产精品视频免费| 亚洲一区二区日韩欧美gif| 国产亚洲欧美日韩在线一区二区三区| 亚欧美国产综合| 欧美va亚洲va香蕉在线| 久久先锋资源| 成年看免费观看视频拍拍| 国产欧美成人不卡视频| 国产屁屁影院| 国产第八页| 午夜视频www| 国产亚洲精品自在久久不卡 | a级毛片网| 亚洲成A人V欧美综合天堂| 日本不卡视频在线| 欧美a级完整在线观看| 久久伊人操| 国产精品天干天干在线观看| 日韩精品欧美国产在线| 色综合中文综合网| 免费观看亚洲人成网站| 国产午夜精品一区二区三区软件| 毛片免费试看| 亚州AV秘 一区二区三区 | 亚洲精品午夜无码电影网| 国禁国产you女视频网站| 久久9966精品国产免费| 国产男女免费完整版视频| 久热中文字幕在线| 亚洲不卡无码av中文字幕| 四虎精品国产AV二区| 国产青榴视频| 91伊人国产|