如圖7-20所示,作為地質信息系統三維可視化軟件平臺,Quanty View3D框架由九個相對獨立又相互聯系的模塊組成。
圖7-18 地質空間分析
圖7-19 支持網絡的地質三維可視化平臺
圖7-20 Quanty View3D模塊組成
(1)基本圖形模塊:是三維平臺圖形核心基礎模塊,實現基本圖元以及圖元組織和渲染等基本圖形功能。
(2)科學計算模塊:支持數據處理、空間分析、功能應用等基本的科學計算,主要是一些數學算法。它的數據結構以及開發(fā)盡量考慮跨平臺、獨立性。
(3)數據管理傳輸模塊:利用點源數據庫進行地質數據的存儲、查詢、調度等,C/S及B/S模式的數據傳輸。
(4)文件轉換信息模塊:實現地質3D數據文件的標準化,以及與其他通用的同類軟件之間的數據交換處理。
(5)可視化顯示模塊:為地質建模、交互編輯、空間分析、專題應用提供一個三維可視化的環(huán)境,要求快速、逼真、多形式。
(6)交互編輯模塊:封裝三維可視化平臺的常用編輯功能,要求方便、快捷、人性化。
(7)地質建模模塊:負責地表、地質體、地質工程建筑等的模型構建。
(8)空間分析模塊:封裝地質空間的常規(guī)分析方法。
(9)專題應用模塊:總結地質信息化工作的項目成果,發(fā)展基于平臺的專題應用產品。如礦山、地質調查、城市建設、地下管線、油氣盆地、水文地質、工程地質、災害地質等專題。
可以利用Visual C++2010開發(fā)工具,基于Quanty View提供的二次開發(fā)包(SDK)及其動態(tài)鏈接庫,搭建專題應用軟件,能夠實現各專業(yè)的地學三維可視化系統。
在整體架構上,Quanty View3D采用的是兩線交叉模式,一方面從三維可視化環(huán)境角度分為“World-Project-Looker-Render”模式,另一方面從數據組織上分為“Project-Map-Layer-3d Object”模式。其中,CGV3d World類總管三維可視化環(huán)境;CGV3d Project類負責三維數據對象的組織,它采用的是“Project-Map-Layer-Object”模式,即一個工程(Project)下有多個圖幅(Map),一個圖幅包含有多個圖層(Layer),一個圖層包含有多個圖形對象(3d Object),圖形對象主要是點(CGV3d Point)、線(CGV3d Polyline)、面(CGV3d Polygon與CGV3d Surface)、體(CGV3d Polyhedron)等幾種基本圖元類,如圖7-21所示。
圖7-21 Quanty View3D模塊構架
Quanty View3D的SDK包主要包括build、include、lib、libd四個文件夾,其中build文件夾主要是主框架或其他動態(tài)庫的源碼文件夾,include是Quanty View3D平臺二次開發(fā)用到的頭文件,用戶自定義的動態(tài)庫的頭文件也可統一放到該文件夾,lib文件夾是32位Release版本的平臺庫,libd文件夾是32位Debug版本的平臺庫。
一般的二次開發(fā)主要是程序員根據應用專題開發(fā)動態(tài)庫或者應用程序EXE,源碼一般放在build文件夾中,導出庫或者應用EXE一般放到lib或者libd中。下面以32位的Debug版的專題動態(tài)庫和EXE的創(chuàng)建及配置為例,介紹Quanty View3D的二次開發(fā)基本過程。
1.專題動態(tài)庫創(chuàng)建及配置
以MFC Extension Dll為例,創(chuàng)建一個專題動態(tài)庫,如“GV3d Mine.dll”,其工程名稱為GV3d Mine,放在build下的3DFrame或者ours文件夾下。再設置好動態(tài)庫屬性頁的一些配置參數,以下是一個參數設置示例。①“字符集”設置為“使用多字節(jié)字符集”(圖7-22)。②“輸出路徑”為“..\..\..\libd”(圖7-22)。③“中間文件路徑”設置為“..\..\..\mid\x86d\$(Project Name)\”(圖7-22)。④“附加庫目錄”設置為“$(Out Dir)”(圖7-23)。⑤“附加依賴項”設為“mpr.lib;glut32.lib;GV3d Modeling.lib;GV3d User.lib;GV3d Math.lib;GV3d Base.lib;GV3d Algorithms.lib;GV3d File IO.lib;GV3d Res.lib;GV3d Frame.lib;Geoat-tribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spz-ip.lib;tiff.lib;Math Lib.lib;Thirdly Library.lib;Algorithms Lib.lib;Gdi Plus.lib;geobase. lib;Map Projections.lib;Geo Obj Base.lib;Geo Struct.lib;Geo Geometry.lib;Geo Base UI.lib”(圖7-24)。
在使用時,在頭文件stdafx.h中或者實現文件的開頭加上相應的包含文件即可,如圖7-25所示。
至此,一個專題動態(tài)庫已經創(chuàng)建完成了,下一步的工作就是基于Quanty View3D的SDK開發(fā)包針對地質專題需求開發(fā)所屬的功能接口了。
圖7-22 專題動態(tài)庫屬性配置(1)
圖7-23 專題動態(tài)庫屬性配置(2)
2.專題EXE的創(chuàng)建及界面配置
以MFC應用程序MDI為例,創(chuàng)建一個專題EXE,如“Quanty Soft.exe”,其工程名稱為Quanty Soft,放在build下的3DFrame或者ours文件夾下。再設置好應用程序屬性頁的一些配置參數,以下是一個參數設置示例。①“字符集”設置為“使用多字節(jié)字符集”(圖7-26)。②“輸出路徑”為“..\..\..\libd”(圖7-26)。③“中間文件路徑”設置為“..\..\..\mid\x86d\$(Project Name)\”(圖7-26)。④“附加庫目錄”設置為“$(Out Dir)”(圖7-27)。⑤“附加依賴項”設為“mpr.lib;glut32.lib;GV3d Modeling.lib;GV3d User.lib;GV3d Math.lib;GV3d Base.lib;GV3d Algorithms.lib;GV3d File IO.lib;GV3d Res.lib;GV3d Frame.lib;Geoat-tribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spz-ip.lib;tiff.lib;Math Lib.lib;Thirdly Library.lib;Algorithms Lib.lib;Gdi Plus.lib;geobase.lib;Map-Projections.lib;Geo Obj Base.lib;Geo Struct.lib;Geo Geometry.lib;Geo Base UI.lib”(圖7-28)。
圖7-24 專題動態(tài)庫屬性配置(3)
圖7-25 頭文件的添加
圖7-26 專題應用程序EXE屬性配置(1)
圖7-27 專題應用程序EXE屬性配置(2)
在頭文件stdafx.h中或者實現文件的開頭加上相應的包含文件即可,如圖7-29所示。
至此,一個專題應用程序EXE已經創(chuàng)建完成了,下一步的工作就是基于Quanty View3D的SDK包針對地質專題需求開發(fā)所屬的功能了。
圖7-28 專題應用程序EXE屬性配置(3)
圖7-29 專題應用程序頭文件的添加
思考題
1.如何基于Quanty View SDK自己動手搭建一個專題軟件框架,并能導入數據進行三維可視化展示?
免責聲明:以上內容源自網絡,版權歸原作者所有,如有侵犯您的原創(chuàng)版權請告知,我們將盡快刪除相關內容。