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

基于數字地圖的三維圖形控件開發技術

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

孫建波

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

基于數字地圖的三維圖形控件開發技術

孫建波?

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

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

DEM;數字地圖;控件

1 引 言

傳統的GIS系統,系統結構相對封閉、龐大,價格昂貴,不易與其他信息系統相結合。由于組件技術的出現,軟件產業的形式也隨之發生了很大的變化。大量組件生產商涌現出來,并推出各具特色的組件產品;軟件集成商則利用適當的組件,將這些組件集成,快速生產出用戶需要的應用系統。GIS的開發也同其他軟件產品一樣,逐漸步入了利用組件技術進行開發的行列中。開發小巧靈活、功能獨特的GIS控件是目前GIS開發方法之一。本文在開發工作的實例中,給出了如何使用數字地圖數據開發三維圖形控件的方法。

2 MFC構建控件程序框架

2.1 MFC ActiveX ControlWizard構造控件和程序框架

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

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

2.2 控件的測試

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

3 控件下OpenGL程序的實現步驟

3.1 加入庫文件

要實現OpenGL編程,首先要在編程環境中包括兩個函數庫:opengl32.lib和glu32.lib。

3.2 圖形操作描述

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

3.3 像素格式

在創建一個繪圖描述表之前,首先必須設置像素格式。像素格式確定了從OpenGL圖形到顯示窗口所支持的格式。第一步要用描述著色類型的值填充PIXELFORMATDESCRIPTOR結構,該結構和目標窗口的設備描述表一起傳遞給ChoosePixelFormat函數,傳遞給該函數的信息用來確定像素格式,實現所需格式和系統所能夠給予格式的最佳匹配。

4 數字地圖的三維顯示

4.1 DLG數據及顯示

在這里以等高線為例子,說明DLG數據的特點以及顯示。等高線數據包括的等高線的屬性數據和坐標串,其中屬性數據又包括了等高線的類型、高程等內容。坐標串和高程構成的三維空間的線,Open-GL提供了顯示線的功能,顯示的結果如圖1等高線圖所示。

等高線數據只能顯示如圖1所示的圖形,要顯示接近真實地形的圖形,就要將數據進行轉換,本實例采用的方法是用離散點構成Delauney三角網,形成易于由OpenGL顯示的頂點-邊-面結構的數據,如圖2三角網顯示圖所示。

圖1 等高線圖

圖2 三角網顯示圖

4.2 DEM數據格式及轉換

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

4.3 三維地形的顯示

使用顯示列表是加速顯示的方法之一。一個顯示列表編譯了一系列標準的OpenGL調用,可通過使用顯示列表的標識號調用。利用顯示列表顯示離散點構成的三角面片,設置光照等屬性創建繪制場景,可得到三維地形的可視化結果。綜合地形的顯示和控件開發技術編制實現了地形顯示控件示例程序View3D。VC++提供了測試 ActiveX控件的工具 ActiveX Control Test Container,可以測試控件View3D的屬性、方法和事件。使用 ActiveX Control Test Container中測試View3D的顯示效果如圖3控件測試圖所示。

圖3 控件測試圖

5 控件的使用

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

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

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

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

6 結 語

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

參考資料

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

[2]鄒逸江.空間數據立方體的研究[D].武漢大學博士論文,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—),男,工程師,主要從事制圖與地理信息系統的開發。

主站蜘蛛池模板: 国产91特黄特色A级毛片| 99久久亚洲精品影院| 久久五月天国产自| 国产精品无码在线看| 丝袜国产一区| 日韩欧美在线观看| 凹凸国产分类在线观看| 国产欧美视频在线| 扒开粉嫩的小缝隙喷白浆视频| 四虎永久在线| 福利在线不卡一区| 久久中文字幕av不卡一区二区| 国产精品偷伦在线观看| 午夜成人在线视频| 欧美亚洲一区二区三区导航| 国产视频入口| 本亚洲精品网站| 欧美综合成人| 日韩a级毛片| 性欧美在线| 亚洲va精品中文字幕| 色天天综合| 国产视频资源在线观看| 久久精品欧美一区二区| 亚洲色欲色欲www网| 亚洲美女AV免费一区| 日韩AV手机在线观看蜜芽| 超碰91免费人妻| 亚洲国产清纯| 丁香婷婷激情网| 无码一区中文字幕| 亚洲午夜18| h视频在线观看网站| 亚洲乱码精品久久久久..| 九九视频免费在线观看| 麻豆国产原创视频在线播放| 无码AV高清毛片中国一级毛片| 91亚洲免费视频| 波多野结衣亚洲一区| 久久夜色撩人精品国产| 国产微拍精品| 波多野结衣无码中文字幕在线观看一区二区 | 亚洲第一成年人网站| 视频二区中文无码| 国产成人综合日韩精品无码首页| 国产一级无码不卡视频| 在线色国产| 欧洲精品视频在线观看| 毛片网站观看| 欧美在线网| 午夜视频在线观看免费网站| 最新亚洲av女人的天堂| 在线日韩日本国产亚洲| 成人永久免费A∨一级在线播放| 日韩欧美一区在线观看| 青青久视频| 国产福利大秀91| 热久久国产| 国产精品第一区| 99精品免费在线| 激情无码字幕综合| 日韩性网站| 日韩欧美视频第一区在线观看| 精品欧美视频| 国产91视频免费观看| 国产精品蜜芽在线观看| 日韩欧美色综合| 欧美激情二区三区| 一级做a爰片久久毛片毛片| 亚洲综合18p| 日韩精品无码不卡无码| 毛片久久久| 激情综合网激情综合| 老色鬼久久亚洲AV综合| 欧美国产日韩另类| 2020国产精品视频| 色哟哟色院91精品网站| 国产精品久久自在自线观看| 婷婷伊人久久| 国产91av在线| 国产毛片网站| 国产成年无码AⅤ片在线|