《地学三维可视化与过程模拟》实验指导书最终整合版.docx
- 文档编号:4262324
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:48
- 大小:3.80MB
《地学三维可视化与过程模拟》实验指导书最终整合版.docx
《《地学三维可视化与过程模拟》实验指导书最终整合版.docx》由会员分享,可在线阅读,更多相关《《地学三维可视化与过程模拟》实验指导书最终整合版.docx(48页珍藏版)》请在冰豆网上搜索。
《地学三维可视化与过程模拟》实验指导书最终整合版
《地学三维可视化与过程模拟》实验指导
实验一地质灾害三维可视化建模实验
实验目的:
1、掌握一款地学方面三维可视化软件,了解三维可视化概念及其原理。
2、使用地学相关数据,使用三维可视化软件,建立地质三维模型。
实验原理:
根据采集得来的地理信息数据以及地下地质数据,利用三维可视化建模软件,使用手动创建图元,自动创建图元等人机交互功能,搭建起三维地质模型,能如实的反应出地上地形情况以及地下岩层分布情况,通过三维可视化分析,能清楚的反应出该区域的相关地质信息,提供与专家或相关技术人员做进一步的分析。
实验过程:
1、软件安装
双击QuantyHazard3D1.0.msi文件,安装QuantyHazard3D1.0三维可视化软件。
2、数据整理(该部分一个完成的三维可视化建模中的一部分,由于实验课时间有限,在实验课上的数据是整理好的半成品数据,并且删除部分复杂的数据源)
3、三维建模(该部分是由学生在上级实验课上独立完成的内容。
为了减少难度和适应课上演练,以下实验数据是经过简化后的某地区岩溶塌陷地质灾害勘探数据)
(1)用QuantyHazard3D软件打开实验数据.gvp文件,里面有整理好的三维数据,打开之后效果如下图。
(2)使用菜单中‘编辑’—‘条件选取’功能,选择如下图配置。
再次使用菜单中‘编辑’—‘条件选取’功能,选择如下图配置。
就创自动画出了杂填土底层的上下控制节点,如下图:
关闭其他图层,只打开‘杂填土上节点’图层,如下图:
按住Ctrl+A,全部选中这些控制数据点,使用菜单功能‘三维建模’—‘创建TIN面’,就可以创建出杂填土层的上表面。
如下图:
同理创建出杂填土下表面,如下图:
选中杂填土的上表面和下表面,使用菜单功能‘编辑’—‘多面体编辑’—‘自动生成体’,生成一个封闭的地层体。
如下图:
对照岩芯模型里面的颜色和属性,对应修改地层体的颜色和属性。
如下图:
以此类推创建出其他地层,把建立的地质体模型放在‘地质体模型’图层中,没有‘地质体模型’图层的自己新建一个。
最终结果如下图:
(3)建立‘地层面模型’图层,建立一套地质体模型的面模型,简称地层面模型,主要用于计算面积和纹理的功能需要。
把所有的多边面图形数据全部转移到‘地层面模型’图层中如下图:
从上至下一次建立多边形性面的侧面,下面以一个地层的上下面为例子。
首选把其他图形隐藏,只留下一个地层的上下面,为每一个面创建一条边界线。
选中一个面,单击右键,在右键菜单中点击‘边界成线’,就能够创建一条边界线。
如下图:
同理创建下表面的边界线,隐藏面图形,如下图:
然后选中两条边界线,使用菜‘图形工具’中‘自动造多边形’,即可生成地层侧面。
如下图:
同理依次创建其他地层的面模型,并且又该显色和属性,最终的面模型如下图:
(4)加载地表影像图,选中地层面最上层的表面,单击右键,点击右键菜单中的‘属性’菜单,即可弹出属性页对话框,使用‘纹理贴图’功能,找到已经准备好的地表影像图,进行纹理。
如下图:
(5)对‘地层面模型’图层中其他地层侧面和底面进行纹理。
选中一个地层的侧面,点击右键,点击右键菜单中的‘属性’菜单,即可弹出属性页对话框,使用‘纹理贴图’功能,找到已经准备好的纹理图片,进行纹理。
如下图:
然后使用该属性页中的编辑功能,根据实际情况选择合理的坐标映射模式,进行纹理。
如下图。
然后同理依次纹理侧面,如下图:
实验结论:
在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。
课后练习:
使用给定实验数据或者自己模拟创建的数据,在QuantyHazard3三维可视化软件中建立一个完成的三维地质模型。
实验二三维可视化分析
实验目的:
1、加深对三维建模软件的使用,掌握软件三维可视化分析操作和原理。
2、了解三维可视化分析各个功能的编程原理和基本算法。
实验原理:
利用QuantyHazard3D开发完成的“地质灾害体三维可视化分析”软件,对三维地质灾害体进行三维建模,生成三维数字灾害体,然后对三维地质灾害体进行剖面图切割、地质块体切取、方量计算、真三维检索查询等可视化分析,以支持地质灾害综合分析与预测预报。
实验过程:
1、计算
长度计算
先选中一根线条,使用菜单‘模型分析’—‘数量计算’—‘长度计算’就能得出该先跳到长度,用于测量距离、路程和周长来用。
如下图:
面积计算
选中一个面,使用菜单‘模型分析’—‘数量计算’—‘面积计算’,即可计算出该区域面积。
如下图:
体积计算
选中一个体,使用菜单‘模型分析’—‘数量计算’—‘体积计算’,即可计算出该区域体积。
如下图:
2、图例显示
打开地质体模型图层,关闭其他图层,选中全部图形,然后点击菜单‘显示’—‘显示颜色图例’—‘显示图例’,
然后弹出图例编辑对话框,如果有不满意的地方可以做一下调整,点击确定。
如下图:
3、剪切剖面
先点击菜单‘模型分析’—‘剖面分析’—‘剪切剖面线’,然后任意画一条直线,即生成一组剖面线。
如下图:
4、剪切分析
先点击菜单‘模型分析’—‘快速剪切地质体’,然后任意画一条直线,即生成一组剪切后的地质体。
如下图:
5、开挖分析
先点击菜单‘模型分析’—‘快速工程开挖’,然后任意画一条折线,即生成一组开挖后的地质体。
如下图:
6、截面分析
先点击菜单‘模型分析’—‘快速截面分析’,然后任意画一条折线,即生成一组截面。
如下图:
实验结论:
在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。
课后练习:
1、根据软件的操作手册指导,自己尝试完成其他分析功能,例如图例分析,布尔运算分析等。
2、实习基本结束,全面了解并且掌握软件的使用,并且了解其中的原理。
实验三基于QuantyView的二次开发
实验目的:
1、了解地学三维可视化软件,掌握地学三维可视化的基本原理。
2、熟悉基于QuantyView的二次开发,掌握地学三维可视化软件基本框架的搭建。
3、通过QuantView平台软件的二次开发,了解地学三维可视化技术的应用方法。
实验原理:
QuantyView是由中国地质大学(武汉)地质信息科技研究所研发的具有完全自主版权的国产三维可视化地质信息系统平台。
它是建立于基层单位(数据采集点)或主管部门、可以对各种地质数据进行收集、存贮、管理、处理和使用的基础性和综合性技术系统。
该系统采用行业或部门统一的数据模型、标准的代码体系,可以实现从野外数据采集到室内数据综合整理、平剖面图件编绘、真三维可视化分析,再到国土资源和工程地质条件综合预测评价、科学管理与决策、地下工程(包括地下管线)和资源开发设计,乃至成果的保存、管理使用和出版印刷等等的全程计算机辅助化。
QuantyView的架构设计与开发应该具有高起点,前瞻性,可扩充性,遵循软件工程原理与方法,设计开发成一个具有明显核心技术优势的可配置、可搭建式的平台系统(如下图所示)。
该系统的设计以地质矿产点源信息系统理论框架为指导,由QuantyView2D和QuantyView3D两部分组成。
其中,QuantyView3D是用VisualC++和OpenGL开发的具有完全自主版权的三维地质可视化软件平台。
该平台具有强劲的真三维图形数据和属性数据编辑模块;提供各种专业的可视化分析工具;可以分别利用钻孔、平硐、槽探、竖井、勘探剖面图和构造平面图等来生成三维数字地质体;所生成的三维地质体可以进行空间数据和属性数据的双重可视化查询和分析。
以QuantyView3D为基础平台设计的软件系列有广泛的用途,能实时、快速、动态地获取、管理和处理各种矿山开采、油气资源勘探、水利、水电、高速公路、铁路、隧道、桥梁、地铁、防空设施等地质勘查和设计施工信息,可用于资源评价、城乡建设、环境监测、地震区划、灾害防治和规划决策等领域。
对于信息源所在处或基层勘查单位而言,它们是功能强劲的微型工作站;而对于国家的国土资源信息系统而言,它们是信息齐备的网络结点。
QuantyView层叠式复合结构
作为地质信息系统三维可视化软件平台,QuantyView3D框架由9个相对独立又相互联系的模块组成:
(1)基本图形模块:
是三维平台图形核心基础模块,实现基本图元以及图元组织和渲染等基本图形功能;
(2)科学计算模块:
支持数据处理、空间分析、功能应用等基本的科学计算,主要是一些数学算法。
它的数据结构以及开发尽量考虑跨平台、独立性;(3)数据管理传输模块:
利用点源数据库进行地质数据的存储、查询、调度等,C/S及B/S模式的数据传输;(4)文件转换信息模块:
实现地质3D数据文件的标准化,以及与其他通用的同类软件之间的数据交换处理;(5)可视化显示模块:
为地质建模、交互编辑、空间分析、专题应用提供一个三维可视化的环境,要求快速、逼真、多形式;(6)交互编辑模块:
封装三维可视化平台的常用编辑功能,要求方便快捷人性化;(7)地质建模模块:
负责地表、地质体、地质工程建筑等的模型构建;(8)空间分析模块:
封装地质空间的常规分析方法;(9)专题应用模块:
总结地质信息化工作的项目成果,发展基于平台的专题应用产品。
如矿山、地质调查、城市建设、地下管线、油气盆地、水文地质、工程地质、灾害地质等专题。
QuantyView3D模块组成
本次实验利用VisualC++2010开发工具,基于QuantyView提供的二次开发包(SDK),通过SDK包的一系列动态链接库,搭建专题应用软件架构,能够实现一般的地学三维可视化功能。
以数字矿山产品为例,QuantyView3D的SDK开发包主要包括数学库GV3dMath、实用库GV3dUser、图形库GV3dBase、算法库GV3dAlgorithms、输入输出库GV3dFileIO、资源库GV3dRes、框架库GV3dFrame以及三维系统原型QuantyView3D。
基于此二次开发包,开发人员可以开发地质专题如数字矿山的专题动态库GV3dMine,更进一步可以基于QuantyView3D系统原型快速开发专题产品,如“紫金山矿区三维可视化系统”。
基于QuantyView3D的专题动态库及产品二次开发架构
其中,GV3dMath库包含有常用的数学计算函数;GV3dUser库主要是简单的GUI类;GV3dBase库是SDK包的核心,包含有图形对象类;GV3dAlgotithms库主要是各类分析函数;GV3dFileIO库包含有对一些常用三维格式的数据文件的输入输出函数;GV3dRes库是对话框等界面资源;GV3dFrame库集成了Document及View的基本框架,避免了开发人员重复三维可视化环境框架的搭建开发。
在整体架构上,QuantyView3D采用的是两线交叉模式,一方面从三维可视化环境角度分为“World-Project-Looker-Render”模式,另一方面从数据组织上分为“Project-Map-Layer-3dObject”模式。
其中,CGV3dWorld类总管三维可视化环境;CGV3dProject类负责三维数据对象的组织,它采用的是“Project-Map-Layer-Object”模式,即一个工程(Porject)下有多个图幅(Map),一个图幅包含有多个图层(Layer),一个图层包含有多个图形对象(3dObject),图形对象主要是点(CGV3dPoint)、线(CGV3dPolyline)、面(CGV3dPolygon与CGV3dSurface)、体(CGV3dPolyhedron)等几种基本图元类。
QuantyView3D基本框架
实验步骤:
QuantyView3D的SDK包主要包括build、include、lib、libd等四个文件夹,其中build文件夹主要是主框架或其他动态库的源码文件夹,include是QuantyView3D平台二次开发用到的头文件,用户自定义的动态库的头文件也可统一放到该文件夹,lib文件夹是32位Release版本的平台库,libd文件夹是32位Debug版本的平台库。
一般的二次开发主要是程序员根据应用专题开发动态库或者应用程序EXE,源码一般放在build文件夹中,导出库或者应用EXE一般放到lib或者libd中。
下面以32位的Debug版的专题动态库和EXE的创建及配置为例,介绍了QuantyView3D的二次开发基本过程。
1)专题动态库创建及配置
以MFCExtensionDll为例,创建一个专题动态库,如“GV3dMine.dll”,其工程名称为GV3dMine,放在build下的3DFrame或者ours文件夹下。
再设置好动态库属性页的一些配置参数,如下图是一个参数设置示例:
⏹“字符集”设置为“使用多字节字符集”;(如图1)
⏹“输出路径”为“..\..\..\libd”;(如图1)
⏹“中间文件路径”设置为“..\..\..\mid\x86d\$(ProjectName)\”;(如图1)
⏹“附加库目录”设置为“$(OutDir)”;(如图2)
⏹“附加依赖项”设为
“mpr.lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3dAlgorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;AlgorithmsLib.lib;GdiPlus.lib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.lib;GeoBaseUI.lib”。
(如图3)
专题动态库属性配置
(1)
专题动态库属性配置
(2)
专题动态库属性配置(3)
在使用时,在头文件stdafx.h中或者实现文件的开头加上相应的包含文件即可,例如:
至此,一个专题动态库已经创建完成了,下一步的工作就是基于QuantyView3D的SDK包针对地质专题需求开发所属的功能接口了。
2)专题EXE的创建及界面配置
以MFC应用程序MDI为例,创建一个专题EXE,如“QuantySoft.exe”,其工程名称为QuantySoft,放在build下的3DFrame或者ours文件夹下。
再设置好应用程序属性页的一些配置参数,如下图是一个参数设置示例:
⏹“字符集”设置为“使用多字节字符集”;(如图4)
⏹“输出路径”为“..\..\..\libd”;(如图4)
⏹“中间文件路径”设置为“..\..\..\mid\x86d\$(ProjectName)\”;(如图4)
⏹“附加库目录”设置为“$(OutDir)”;(如图5)
⏹“附加依赖项”设为
“mpr.lib;glut32.lib;GV3dModeling.lib;GV3dUser.lib;GV3dMath.lib;GV3dBase.lib;GV3dAlgorithms.lib;GV3dFileIO.lib;GV3dRes.lib;GV3dFrame.lib;Geoattribute.lib;geoado.lib;Image.lib;jpeg.lib;zlib.lib;j2k.lib;png.lib;jasper.lib;jbig.lib;spzip.lib;tiff.lib;MathLib.lib;ThirdlyLibrary.lib;AlgorithmsLib.lib;GdiPlus.lib;geobase.lib;MapProjections.lib;GeoObjBase.lib;GeoStruct.lib;GeoGeometry.lib;GeoBaseUI.lib”。
(如图6)
专题应用程序EXE属性配置(4)
专题应用程序EXE属性配置(5)
专题应用程序EXE属性配置(6)
在头文件stdafx.h中或者实现文件的开头加上相应的包含文件即可,例如:
至此,一个专题应用程序EXE已经创建完成了,下一步的工作就是基于QuantyView3D的SDK包针对地质专题需求开发所属的功能了。
下图是基于QuantyView3D框架开发的一些地质专题软件产品:
地质专题软件产品系列实例
实验结论:
在实验结束以后,根据自己做实验的情况,以实习论文形式提交个人实验心得和实验结论。
课后练习:
基于QuantyViewSDK自己动手搭建一个专题软件框架,并能导入数据进行三维可视化展示。
实验四基于QuantyView的功能开发
实验目的:
1、熟悉地学三维可视化的基本概念和技术原理,了解QuantyView的二次开发过程。
2、了解QuantView基本三维对象的数据结构及其创建。
3、熟悉基于QuantyView的路线飞行漫游、键盘漫游、分层设色等功能的编程实现。
实验原理:
1)基本三维对象的数据结构
QuantyView3D基本三维图形对象主要是点(CGV3dPoint)、线(CGV3dPolyline)、面(CGV3dPolygon与CGV3dSurface)、体(CGV3dPolyhedron)等几种图元类,均由图层CGV3dLayer进行管理(见GV3dBase下的GV3d.h)。
如下图,分别表示了线对象、多边形对象、曲面对象、标注对象的主要数据组织。
每个空间基本对象包含一个区别于其它对象的唯一标识即对象ID,除此外,线对象包括颜色值、线型、长度、宽度等属性;多边形对象包括面积、填充方案属性;曲面对象包括面积属性。
多边形对象和曲面对象都是面结构,它们的区别在于空间坐标点的组织不同。
严格上说,标注对象只是系统的辅助对象,它仅有一个空间坐标位置,不具有几何形态,在系统中起标注说明的作用。
QuantyView3D的体对象CGV3dPolyhedron是用封闭的面表达的,所采用的数据结构与CGV3dPolygon类似。
另外,还有从基本图元类派生出的其它对象类型,比如块对象,是线、多边形、曲面等对象的组合。
在QuantyView3D中可通过对象属性对话框设置他们的属性,如下图。
以CGV3dPolygon为例,主要的数据成员包括坐标点列、拓扑结构、颜色、纹理等信息。
坐标点列实际是一个POINT3d类型的数组,拓扑结构是UINT数组,颜色信息可以是所有坐标节点用一个颜色,也可以每个节点使用不同的颜色,是CByteArray类型。
多边形曲面对象的数据一般如下:
XYZ_NUMS,STRUCT_SIZE,ALPHA
坐标数组
[结构数组]
点色数组
其中:
XYZ_NUMS:
坐标节点的总数,int型
STRUCT_SIZE:
结构数组元素的总数,int型
ALPHA:
透明度,BYTE型,从0到255
坐标数组:
存放多边形曲面对象节点的XYZ坐标列,格式如下(x,y,z都是double型):
X1,Y1,Z1
X2,Y2,Z2
……
Xn,Yn,Zn
结构数组:
存放多边形对象的组织结构,UINT型数据。
如果STRUCT_SIZE=0则不存放结构数组,多边形对象使用缺省结构,否则需要读取结构数组,结构数组的说明如下:
nGn,nG1_Ps,nG1_p1,nG1_p2,……,nG1_ps,nG2_Pq,nG2_p1,nG2_p2,……,nG2_pq,……,nGn_Pm,nGn_p1,nGn_p2,……,nGn_pm
nGn表示该多边形曲面由多少个简单多边形构成,随后是每个简单多边形的结构,都是按照(点数,每个结点k在坐标列中的序号)组织,结点在坐标列中的序号从0开始。
缺省的结构数组是表达的简单多边形的数据组织,如多边形g由一系列点0,1,2,3,4组成,则结构数组为1,5,0,1,2,3,4。
点色数组:
存放每个节点的颜色,与坐标数组一一对应,每个颜色分量为BYTE型,从0到255。
一般情况下,不会进行点色设置,此时所有的结点用同一个颜色。
如果处于点色状态,则点色数组组织如下:
R1,G1,B1
R2,G2,B2
……
Rn,Gn,Bn
如处于非点色状态,及所有点用同一颜色,则点色数组组织为:
R,G,B
针对多边形对象的常用方法包括(详见《QuantyView3D二次开发手册》):
获取对象名称:
CStringCGV3dObject:
:
GetName();
设置对象名称:
voidCGV3dObject:
:
SetName(constCStringszName);
获取坐标点列:
voidCGV3dAtom:
:
GetAll(CArray
设置坐标点列:
voidCGV3dAtom:
:
SetAll(CArray
获取对象颜色:
COLORREFCGV3dObject:
:
GetColor();
设置对象颜色:
voidCGV3dObject:
:
SetColor(constCOLORREFcr);
是否打开了点色开关:
BOOLCGV3dAtom:
:
IsApplyColors();
打开/关闭点色开关:
voidCGV3dAtom:
:
ApplyColors(BOOLbApply=TRUE);
设置点色:
voidCGV3dAtom:
:
SetDotColors(BYTE*byRs,BYTE*byGs,BYTE*byBs,intn);
获取点色:
voidCGV3dAtom:
:
GetDotColors(CByteArray*pArray);
获取多边形拓扑结构:
voidCGV3dPolygon:
:
GetPolygons(GV3dWARRAY&ps);
设置多边形拓扑结构:
voidCGV3dPolygon:
:
SetPolygons(GV3dWARRAY&ps);
获取对象类型:
UINTCGV3dObject:
:
GetClass();其返回值见CLASS_GV3D_TYPE定义(GV3dBase下的gv3dCommon.h)
与图元对象相关的图层的常用方法包括:
获取图层中图元对象的总数:
intCGV3dLayer:
:
GetCount();
获取指定序号的图元对象:
CGV3dObject*CGV3dLayer:
:
GetObjectAt(intnIndex);
向图层中增加图元对象:
intCGV3dLayer:
:
AddObject(CGV3dObject*p3dObj,BOOLbHaveDeleted=FALSE);
2)多视图显示原理
对于三维可视化视图而言,重要的三要素为:
观察者(或称为相机)位置Position、视点位置CenterPosition、观察者向上方向UpDirection。
根据观察者的位置、观察点、观察者向上矢量能够确定观察三维世界的角度,从而显示三维实体在不同角度下的各种形态。
视线方向是从观察者到视点的矢量方向,QuantyView3D提供全三维空间任意角度观察显示的功能,特别的是观察者沿着+x轴、逆着+x轴、沿着+y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 地学三维可视化与过程模拟 地学 三维 可视化 过程 模拟 实验 指导书 最终 整合