版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指导老师:杨现所管理的地质地理数据的可视化。OsgEarth提供了一个良好的三维虚拟地球框架,它OSG的二次开发,它提供的树状数据管理结构对三维虚拟地球的数据添加osgearthQT编程框架实现:三维虚拟地球,空间数据,可视化绪 课题背景及目 国内外研究状 课题研究方法及研究内 组织结 相关背景技术介 OSG和OSGEARTH技 OSG相关介 QT技 地理空间数据基 基础开发环境的搭 系统框 osgEarth体系结 Osgearth配置及相关第插件介 三维地质数据的可视 osgEarth数据组织和数据管 主要的数据类型和格 地质数据可视化的关键技 地质数据可视化的两种方法结 交互功能的实 用户界面设 视口窗 数据信息 ............................................................................................................事件处理机 透明机制的实现原 标注信息添加功 事件处理器 标注节点信息添加窗 拾取位置信息显 事件处理handler的实 消息的传递与handler的开 输出功能实 结 致 参考文 绪自从总统于1998提出数字地球的概念以后,世界各国都对数字地球的建设投入了巨大的热情。中国也将“数字地球”列为中国21世纪的目标之一。数字地球运行的是与位置相关的各种地理信息,其中相对静止的空间信息包括地质、我国于1998实施了新一轮的资源大,在此过程中地质信息化建设取得了阶段性重大进展与成果[2]。国家基础地质数据库基本形成,其中海量的数据资源为地、地质勘测提供了巨大的便利,也形成我国的数字地球目标的巨大基础然而,单有海量数据资源的数据库体系并不足于提高相关地质研究与的水平和地质数据。而目前,各类地质研究中主要运用了二维GIS。在二维GIS中,地质数据表示成二地图对象,无法表示三地质对象之间的关系。而所谓的2.5维GIS只冲断层、断裂层等边界几何元素在一对坐标上拥有几个高程值就显的为力[3]。同时由此可见,三维GIS的发展具有相当大的意义。三维GIS的是地质地理数据的GIS在国内外的发展已经相当成熟了。最为人们所熟知三维虚拟地球模同。其中Earth作为三维虚拟地球的成功产品具有三个突出特点,一是可以显示将本机上或从网上下来的地图叠加到Earth上,并且可以调整加载不足之处在于缺乏GIS主流数据格式和相关标准的支持。这种模式采XML或扩展作1.1NASAWorldWind这类的开放的科学研究工具,它们提供了源代码,允许用灵活的构架和自由的发挥空间。这使得在地质数据的可视化方面具备了相当大的便利。ESEIArcGISExplorerSkylineSoftSkyline这类出自于平台软件供应商,倾化和数据分析交互方面取得成果来看,专业的地质处理软件还是比较成。比较著名的有Intergragh公司研制的MGA软件中的MGEVoxel yst三维分心模块,它具有基于真三维的分析功能;DynamicGraphic公司推出的可视化软件一地质学可视化软件地球可视模拟系统(EarthVisionModelingSystem)所生成的三维结构面的发育和分布规律;以及澳大利亚MAPTEK公司开发的VULCAN软件、英国MICL公司的DataMine&Guide等[5-6]。受诸多原因的影响,国内地质功能主要还是从二维图件上对地进行分析研究,视化软件包括适普软件公司利用IDL开发出来的IMAGIS三维可视地理信息系统,地实现,关键在于对的地质数据的可视化和交互功能的实现,并且能够接受不同格式OSGosgEarth、QT编第三章:介绍了基础开发环境的搭建,描述了系统框架、osgEarth的体系结构和阐相关背景技术介OSGOSGEARTH技本毕业设计将使用OpenSceneGraph(简称OSG)图形开发和在OSG基础开发的项目osgEarth做为可视化显示的基本框架。OpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游OSG完全由标C++程序OpenGL开发,充STL和设计模式,发挥开源开发集中在用户的需求上。当我们使用osg创建一个全特性的场景图,如图2.1为OSG实现地铁模型 1、优越的性能:OSG场景支持视图投影剔除(viewfrustumcullingcullingculling(LODsortingobjcts,OpenGLlists为可能,OpenSceneGraph也支持绘制进程(drawingprocess)的定制,比如场景图的连2、可移植性OSG完全由标C++程序OpenGL开发,这使得它的场景图内扩展性,使它不仅仅可运行在便携式设备,甚至高端的多核、多GPU的系统和集群要包括OpenSceneGraph、GDAL、CURL、GEOS、、LibZIP。同时osgEarth支XMLEarhFile的文件。EarthFile不仅能快速创建数据,我们还可以通过它来了解数据是如何加载进OSG中。EarthFile的作用是指明创建的地图类型、可格式使得我们加载数据到三维虚拟地球时不仅可以通过OSG添加数据节点实现,还可以通过修改EarthFile来实现数据的加载与删除。2、支持大量的数据格式:osgEarthGDALOGC的基础上可以加载众多来源的户接口,我们可以直接使用的地质数据。当需要加载XML文件来显示内容时,还需在客户端将数据写进XML文件中用于显示。若使用其它虚拟地球工具,则客户端需4、快速的数据部署机制:osgEarth可以用于快速的部署不同精度的数据模型。它不集中即时生成地形模型。同时无需编程即可处理全球地形模型。在数据显示层次,osgEarth支持层叠高分辨影像于低分辨率的底图上,并且它的图层覆盖是按照数据加载5、优异的渲染功能:osgEarth不仅能够渲染地表环境,还可以将矢量数据投影至地的模型检测功能。QTQT是一个跨平台的C++图形用户界面库,由挪威TrollTech公司。QT不但支持所有的Unix系统,而且支持Linux,也支持Window平台。际化,即支持根据上下文进行字符串翻译。QT作为一种优秀的GUI开发工具,具有与一般的工具包所不同的特征,这些特征分别是:面向对象:QT具有模块设计和与外界通信、交流。而且,所有QT的组件都可通过继承;组件间的相互通信:QT提供signal和slot概念,这是一种安全可靠的方法,它允许回调,并支持对象之间在彼此不知道对方信息的情况下,进行合作,这使QT非常合适于真正的组件编程;用户自定生成的自定义组件对用户来说,也是一个黑匣子。比如,在Motif手册中就讨论了用户自定义的组件的问题。而在QT中,能够创建组件,具有优越性,生成自定义组件非常简单,并且容易修改组件;丰富的API函数:为了适合用户的需求,QT的API提供了250个C++类,该类大多数用于专门的GUI。QT还提供了基于模板的初始化、文件和通用的I/O设备、 类,建立或生成不同的功能,用它们来实现QT的通用化。除此之外,也可以利用STL标准模块库或其他工具包;GUI竞争:大多数GUI工具包是基于分层的方法。比如,工具包为本地窗口系统组件提供了很多C++类,这种结构使组件的继承性和通用性变得很差。在层次化的工具包中,GUI功能常成为所有使用的窗口系统所必须的最普遍的基础。QT仿效本地窗口系统的组件,这是一种非常复杂的技术。QT还提供一些更有用的函数,类似文本的旋转,适用于多种平台;可用户化的外观:QT支持,所以基于QT的应用软件能在Mac外观、Windows等外观之间互换,甚至改变运行时间。这些应用程序不管是在XWindow下,还是在Windows下都可以独立操作、运行;优越的绘画功能:QT的绘画工具QPainter类,在任意一个绘图设备上都可以润形。绘图设备包括组件、像素映射、图形文件和,相同的代码可以用在4种不同类型的设备上。QPainter类支持复杂的同等系统的转换,很容易在所有平台上画旋转文本和像素映射;完整的一套组件:QT编程的基本模块(构件)称为组件,一个组件是一个用户界面的组成部分,比如按钮、滚动条。QT包含用来创建专业外观的用户界空间数据是GIS的,因为GIS的操作对象是空间数据,因此设计一个GIS系GIS的最有效的数据源之一。(DEM线、面三种不同的图形,并可以使用三坐标,或地理及高程坐标,或者用能用于多种目的,正在研制一种的数据结构,该数据结构具有矢量和栅格两种结矢量数据结构是通过记录坐标的方式来表示点、线、面等地理实体空间分布的一种的手扶跟(rtrridl)或象元结构(pixl)元最多只有两个相邻单元上;面或区域用记有区域属性的相邻栅格单元的集合表示,每个栅格单元可有多于两个的相邻单元同属一个区域。任何以面状分布的对象(土地利用、土壤类型、地势起伏、环境污染等),都可以用栅格数据近。遥感影像就属2.3.2投影坐标系统是定义在一个二维平面的坐标系统,与地理坐标系统不同的是,投影x,y坐标来定位,每个位置用两个值确定(。的大地坐标用大地经度L、大地纬度B和大地高度H表示。如图2.2所示,地面上的点P地的大地子午NPS与起始大地子午面所构成的二面L,叫P地的大地经度,由起始子午面起算,向东为正,向西为负。点P地对于椭球的法线P地Kp与赤道面的夹角B,叫做P地的大地纬度,由赤道面起算,向北为正,向南为负。点P地沿法线到椭球面的距离H叫做大地高,从椭球面起算,向外为正,向内为负。2.21980国家大地坐标系(GDZ80)就在我国中部,具体地点为陕西省泾阳县永乐镇;采用国际大地测量和地球物理公式的各种参数;1980国家大地坐标系的椭球短轴平行于由地球质心指向地级JYD1968.0方向,大地起始子午线应平行于平均天文台的子午面;椭球定位参准面和重力大地水准面高差建立地心坐标系;(3)应用天文大地和天文重力资料建立地心坐标系;(4)应用测量资料建立地心坐标系。本设计的地球模型默认使用1984世界大地(WGS84并且非地心格式数据也将参考WGS84坐标系显WGS84坐标系是一个协议地球坐标系,它的原点是地球的质心,Z1984年定义的协议地球极点方向,X1984年定义的零度子午面和协议地球极赤道的交点,Y轴和Z轴、X轴构成右手坐标系。度变形较大。一般来讲地方独立坐标系只是一种平面坐标系。建立地方坐标系统主要确定一下因素:坐标系中的基础开发环境的搭3.1界面窗口管理包含可视化窗口、节点信息窗口、窗口以及各个窗口的之间的EarthFileosgEarth使用的一种基于XML的文件格式。它是用来说明数据是怎么加载到OSG中,EarthFile的作用是指明:创建的地图类型、可使用的数据和数据缓冲,以及一些地图属性设置[11]。它的结构图如图3.2所示。3.2EarthFilemaposgEarthmap节点,它包括options则是对地图属性的设置,包括了地图类型,数据缓存方式等。我Earth文件的元素信息及其参数设置可以了解osgEarth的系统框架。其中最数据组织方式:osgEarthOSG一样在场景图形中采用了一种自顶向下的,3.2中,map是场景结地球参数:地球参数设置单独作为map的子节点,它表明了map的根节点的特osgEarth作为三维虚拟地球的重要特征,osgEarth支持Osgearth配置及相关第插件介osgEarthosgEarth环境进行配置,它的配置主要包括两部分,它们分别为OSG的配置和第插件的配置,这些配置所需要的资源均可以在官网上。当配置完OSG和相关第插件后只需要osgEarth工程进行编译即可得到我们需要osgEarth开发环境。OSGOSG运行的平台需要具OpenGL的支持能C++的编译环(本课程设计使用的是Visualstudio2010。同时由于OSG的并没有提供窗口系统的功能。因此用户可以所需的图形开发接口(本设计使用的是QT。第插件介绍及其配OsgEarth需要众多的第插件支持才能实现,因此第插件的配置尤其重要,特别需要注意的时,对应不同的osgEarth的版本需要选择其队形的第插件版 组织开发的。它支持很多协议:FTP,FTPS,HTTP,HTTPS,GOPHER,NET,FILE以及LDAP。curl同样支持HTTPS认证,HTTPPOST方法,HTTPPUT方法,FTP上传,kerberos认证,HTTP上传,服务器,s,用户名/认证,文件断点续传,上载文件断点续传,http服务器管道(proxytunneling),甚至它还支持IPv6,socks5服务器,通过http服务器上传文件到FTP服务器等等,功能十分强大[12]。2、GDAL:GDAL(GeospatialData ionLibrary)是一个在X/MIT协议下的开3、GEOS:GEOS(几何引擎——开源)Java拓扑套件(JTS)C++移植。因C++JTSOpenGISSQL4、Expat:expatCXML文档的开发库,它最初是开源的、Mozilla项目下的一个XML解析器。Expat是一个面向流的解析器。您的解置,它会调用该部分相应的处理程序(如果您已经的一个。该文件被输送到解析expat可以解析那些巨大的文件。5、:是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix三维地质数据的可视的信息进行查询。同时也可osgearthmap节点作为一个子节点(而不是根节点)加入到场景的根节点,这样的作用是使得数据的管理具有的选择。osgEarthosgEarth:QtGui:DataManager(Node)来管理渲新的dataManager,它首先定义多个向量组分别读入的map的节点以及子节点的信dataManageronMapChanged用来实时更新场景使得用户能在Qt框很好显示场景节点信息,并且在QT框的完成的数据管理操作就相当于在在dataManager里完成的,具有良好的可控性。图层数据的格式主要支持tif和dt格式,高程图像数据主要支持tif和ecw格式的数函数加以实现,通过用户界面传来的信号要求调用函数addImageLayer()或函数addElevationLayer()。其实现流程图见图4.1和图4.2.驱动入同理高程图像加载的过程如下加入X(NH)cosBcosL NHcosBsinL Z[N(1e2)H]sin 式中,B代表维度;L代表经度;H代表高度;e代表偏心率 1e2sin2 Larctan(
Z(HN B (X2Y2)[N(1e2)]HH
N
因为计算大地维度B需要用到大地高H,而计算大地高时又要用到大地维度B。因此不能大地纬度B的初值[15]:B X2Y再利用所求出的大地高H和N初值带入公式(4-4)求出BB带入公式求H和N,如此反复,直至求出的B,H,N收敛为止。XXB
Ze2b
X2Y2e2asin3 X2X2YH 式中,
cosZ
),e2
,eXY图4.3所示:2、可视化映射:可视化映射是可视化技术的,它将原始数据映射成可绘制出图像化映射方式,同时可视化映射方式与可视化工具的映射机制关。模型数据添加功能是本系统的之一。由于模型数据的格式十分繁复,而不同格将modellayer其代码如下osgEarth::Drivers::FeatureGeomModelOptionstheFeatureModel;osgEarth::Drivers::OGRFeatureOptionsfeatureOpt;featureOpt.url()=osgEarth::URI(filePath.toStdString());theFeatureModel.featureOptions()=featureOpt;osgEarth::ModelLayerOptionsmlo(fileName,theFeatureModel);ModelLayer*modelLayer=newosgEarth::ModelLayer(mlo);_manager->map()->addModelLayer(modelLayer光照、LOD层次显示效果等。
SpatialReference::get("wgs84")定义一个大地坐标系参数geoSRS,接着使用osgDB:设置加载的数据节点坐标和坐标系参数。最终只需要将该数据节点加入根节点root中,交互功能的实了解介osgosgearth最重要与交互相关的类事件处理机制GUIEventHandler。进而分QT进行设计,主窗口的页面布局包含视口窗口、数据信息框和。用户界面效果图如图5.2所示。5.1if(url.length()>_earthNode=osgDB::readNodeFile(url//Loadablankglobeifneededif(!_earthNode.valid())_earthNode=newosgEarth::MapNode(new使用函数osgEarth::MapNode()一个空白的地球作为系统原始地球节点。天空节点我们直接调用osgEarth封装的天空节点,其实现的机制如下:_map=_mapNode->constosgEarth::Config&externals=_mapNode->externalConfig();if(_map->isGeocentric()){ SkyosgEarth::ConfigskyConf=externals.child("sky");doublehours=skyConf.value("hours",12.0);_sky=newosgEarth::Util::SkyNode_sky->setAutoAmbience(true_sky->setDateTime(2011,3,6,_sky->attach_root->addChild}skyCoof,并把将星空就可以了。当用户旋转视角时,就会象是在一个真正的星空之下,大大增加视同时相机设置也是视口窗口的关键部分,首先要设置相机的近地参数,将setNearFarRatio(x)0.00002。这保证了当相机足够接近地面时,保证视osgEarth::UtilEarthManipulator()进行视图的漫游控制。标注信息和视角节点。这些节点信息都可以从.earth文件找到对应的属性。具体的.earth文件结构可以参照第三章图3.2earth文件结构图。例。系统使用QDockWiget定义一个新的QT框_vpDock,如以下代码所示:_vpDock=new_vpDock->setAllowedAreas(Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea);addDockWidget(Qt::LeftDockWidgetArea, _vpDock);为此系统创建一个管理器dataManager,这个是管理器是由osgEarth::Gui::DataManager(node)DataManager(node)将提取node节点中的子节点dataManager管理。有个管理器,视图就可以在每次更新后,osgEarth::QtGui::MapCatalogWidget*vpCatalog=newosgEarth::QtGui::MapCatalogWidget(_manager,osgEarth::QtGui::MapCatalogWidget::VIEWPOINTS);vpCatalog->setActiveViews(_views);_vpDock->setWidget(vpCatalog)vpCatalogosgEarthQtGui::MapCatalogWidget::VIEWPOINTS节点。再将vpCatalog在_vpDock框中显示就可以了1、图层图像加载:这一部分可以细分为三个部分。第一部分是高程图像的加载,顾名思义这能主要加载高程的图像数据,这种数据格式主要.tif和.dt;第二部分为23、文件导出:这能使得用户可以将当前三维虚拟地球的数据信息保存在一个4、设置:这能主要是为了观测模型而设置,当它开启时,即地球viewerViewerviewer,那么也就是可以从键盘的响应中场景。Viewer中有一个方法addEventHandler就用来做这完成这件事。当需要定义一个新的事件处理器,只要从类osgGA:GUIEventHandler中派生一个类即可。下面我们参照图5.2来理解一个事件处理类A的过程:可以其他事件,也就是说仅当事件A处理完了才轮到BCD处理。另外在事件处理函handleconstosgGA:GUIEventAdapter,该参数时用来识别各种时间类型的参数,值得注意的不能缺少const个参数时osgGA:GUIActionAdapter,它是控制显示的参数,尤为重要的Viewer的祖类,由它可以得到viewer,从而在viewer中进行相关操作。地球表面纹理的设置对于实现三维虚拟地球的可视化至关重要。由于地质数osgEarth提供给我们了地表图层的调整,但仅有图层的调整是不够。从EarthFileoptionsEarth文件中调整地形参数,使osgearth半透明叠加的功能实现地表的透明化。并且还需要将blending参数设为true,这一参数将命令三维地球模型支持数据的可视化。但仅有这些还是不够,从图5.3中我们可以看到,这个数据节点在地表和都5.3从OpenGL渲染机制可以知道,设置还需要开启深度测试才可以真正实现透osgStatesetstateset来管理地球节点的深度测试的开关。并且设置了参数alpha来表示开关的状态,当按钮传来信号,alpha将取反,同时通过改变osgStateAttribute的状态来改变深度测试的开关状态。开启深度测试的效果如图5.4所示。5.4也可以自由的删除不需要的标注节点。其具体实现如下所示:structMyAnnoEventHandler:public{_manager(manager)voidonClick(AnnotationNode*node,constEventArgs&details{{if(details.modkeys&{if(_manager-}{}}}osg::ref_ptr<osgEarth::QtGui::DataManager>5.5的数据信息。如下图5.6所示:5.6handler的实现,其二为消息的传递与Viewer:addEventHandler将其关联到视口。一个视口可以有多个事件处理器,ViewerViewerGUI事handle函数,直到其中一个的handle函数返回true为止。在PickHandler方法中检查GUIEventAdapter参数传递的事件类型,并针对需要的事件类型执行相应的。方法返回true时将其他事件处理器继续接受事件消息;在渲染之前,创建事件处理器的实例,并使用addEventHandler方法添加到视口中。Osg将会把视口作为GUIActionAdapter参数传递给Pickhandler方法。PickHandler)当鼠标事件为osgGA::GUIEventAdapter::KEYDOWN时,将拾取点平均值传递给函数pick;voidpick(osgViewerview*view,osgGAGUIEventAdapter&ea),该函数利用函数osgUtil::LineSegmentIntersector,该函数可以获得当前坐标与在屏幕向里方向与模型相交的点。我们通过设置变量Picker来这些坐标点;三是拾取点信息的显示节点,该节点为一osgTe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 15724-2024实验室玻璃仪器烧杯
- 2024年度研发合作合同:某科技公司与某高校共同研发新技术
- 2024年度股权投资合同标的与投资服务详细规定
- 2024年度商务用车租赁与管理合同
- 2024年度船舶建造与修理合同
- 2024年度版权许可使用合同涉及美术作品
- 2024年度租赁合同:设备租赁及维护合同
- 2024年度二手车交易市场车位租赁协议
- 2024年度租赁脚手架合同
- 《富尊宣传》课件
- 2020年1月上海春招英语听力(含试题、MP3、答案及录音)
- 发行企业债法律尽职调查之访谈问题清单
- 拍卖合作协议
- 白改黑施工组织设计
- 合集螺纹连接练习题及答案
- 2022-2023学年高中政治统编版选择性必修二5-1家和万事兴 第1课时 学案
- 广州数控GSK980TDb操作步骤(刀补对刀)
- (完整)小学语文考试专用作文方格纸
- 唐诗三百首大全306首
- 忻保高速公路路基工程某合同段某隧道安全专项方案
- 概论:马克思主义与社会科学方法论
评论
0/150
提交评论