牟乃夏ArcEngine教程三维分析PPT课件_第1页
牟乃夏ArcEngine教程三维分析PPT课件_第2页
牟乃夏ArcEngine教程三维分析PPT课件_第3页
牟乃夏ArcEngine教程三维分析PPT课件_第4页
牟乃夏ArcEngine教程三维分析PPT课件_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

牟乃夏ArcGISEngine地理信息系统开发教程配套PPT-第11章三维分析,1,精品课件,目录,1.三维数据模型2.MultiPatch3.TIN数据4.SceneControl三维可视化5.GlobeControl三维可视化6.实例:基于GlobeControl的三维数字校园,2,精品课件,1.三维数据模型,三维数据(X,Y,Z)的定义中包含一个额外的维度:Z值。Z值具有测量单位,同传统的二维数据(X,Y)相比,它能存储和显示更多的信息。Z值可表示很多内容,如:海拔高度、深度、温度、化学物浓度、噪声指数等。Z值是二维数据成为三维数据的标志。ArcGIS中三维数据有3D要素数据和表面数据两种形式。3D要素数据3D要素数据用来表示离散的对象,每个对象的信息都存储在要素的几何和属性中。3D要素数据又分为三维点数据、三维线数据和多面体(MultiPatch)数据。多面体数据根据组成方式的不同又分为TriangleStrip、TriangleFan和Ring三种类型。,3,精品课件,1.三维数据模型,表面数据表面数据是指具有空间连续特征的地理要素的集合,表示地球表面某部分或整体范围内的地理要素或现象。在ArcGIS中,常用的表面数据有栅格表面不规则三角网(TIN)Terrain数据集等。,4,精品课件,2.MultiPatch,MultiPatch几何类型又叫多面体数据类型,是ESRI公司于1997年推出的一种数据模型,主要用来定义3D对象的描述性外壳。MultiPatch通过地理数据库和ShapeFile文件来存储3D要素,如建筑物、地质体等。MultiPatch创建在ArcGIS中,不能通过ArcGISDesktop产品来创建MultiPatch,只能通过以下几种方法创建:1)通过某些地理处理(Geoprocessing)工具创建,例如ExtrudeBetween、Layer3DtoFeatureClass等。2)通过从已有的模型中导入ArcGIS创建,例如SketchUp、COLLADA、3DStudioMax或OpenFlight等。3)通过在ArcGISEngine中编写代码创建。,5,精品课件,2.MultiPatch,ArcGISEngine提供了创建MultiPatch几何对象的类和接口,主要用到两个接口,分别是IGeometryCollection和IConstructMultiPatch。这两个接口创建MultiPatch的方式略有不同:IGeometryCollection接口是通过添加各个组件的组成部分来创建MultiPatch;IConstructMultiPatch接口是通过操作Geometry对象,如拉伸Polyline对象(拉伸为墙)和Polygon对象(拉伸为多面体)等来创建MultiPatch。这两种方法的创建步骤相似,将要创建的MultiPatch显示出来需要用到IGeometryCollection、IGraphicsContainer3D、IPoint、IPointCollection、IGeometry、IElement等接口。,实现思路如下:(1)使用IPoint接口生成新的点对象,用IPointCollection接口的AddPoint方法将点对象添加进集合,并用IGeometryCollection接口的AddGeometry方法或IconstructMultiPatch接口的ConstructExtrudeFromTo方法将PointCollection对象转换为一个Geometry对象;(2)使用IElement接口实例化一个元素对象,并将该元素对象的Geometry属性设置为步骤1得到的Geometry对象,并设置元素对象显示时使用的Symbol(符号);(3)使用IGraphicsContainer3D的AddElement方法把步骤2产生的元素添加到视图中去,刷新视图,让元素显示出来。,6,精品课件,2.MultiPatch,实例按钮功能介绍,详细代码见程序,7,精品课件,2.MultiPatch,MultiPatch编辑MultiPatch有多种编辑操作,常用的主要有移动、旋转和缩放等。MultiPatch的编辑需要用到ITransform3D接口,通过该接口的Move3D、RotateVector3D和Scale3D等方法实现。实现思路如下:(1)得到某一图层的某个3D要素,并通过要素的Shape属性得到要素的几何形状;(2)将该几何对象转换为ITransform3D类型对象;(3)运用ITransform3D中的方法对得到的对象进行相应的编辑;(4)开始编辑,将要素的Shape设置为编辑后的几何要素;(5)保存、停止编辑。,8,精品课件,2.MultiPatch,左图中展示的是将MultiPatch在X、Y、Z方向以1:1:3的比例变换后的结果,可以输入相应的参数进行MultiPatch的平移、旋转和缩放操作。,9,精品课件,2.MultiPatch,MultiPatch分析MultiPatch的分析主要有:获取体积、表面积,判断两个MultiPatch之间是否相连及在某一值范围内是否临近,MultiPatch之间的相交、差异、联合等运算分析。获取MultiPatch的体积和表面积获取MultiPatch的表面积和体积需要用到IArea3D接口和IVolume接口,实现思路如下:(1)从某一个图层中获得一个具有多面体结构的要素(Feature),通过要素的Shape属性获得该多面体几何形状;(2)通过QI(QueryInterface)得到IArea3D接口的Area属性和IVolume接口的Volume属性;(3)将得到的结果显示。,10,精品课件,2.MultiPatch,判断MultiPatch相连与邻接判断两个MultiPatch是否相连及在某个值范围是否邻接需用到IRelationalOperator3D2接口,实现思路如下:(1)从某一图层或多个图层中获得两个多面体要素(Feature),通过要素的Shape属性获得两个多面体的几何形状;(2)通过IRelationalOperator3D2接口的Disjiont3D方法判断其是否相连,或者通过输入一个距离容差判断是否邻接;(3)显示结果。,11,精品课件,2.MultiPatch,MultiPatch之间的差异、相交、联合多面体的差异计算是求出两个闭合多面体要素的几何交集,然后从一个要素中剪除两要素类的交集,并将结果保存到新输出的要素类中。多面体相交是计算两个或多个多面体要素的几何交集,将重叠的要素输出为新要素。多面体联合是计算重叠多面体的几何交集,然后将多面体几何联合在一起,存储到新的多面体要素类中。在ArcGISEngine中,进行多面体之间的差异、相交、联合等三维要素分析需要通过调用Analyst3DTools类库中的GP(Geoprocessing,地理处理工具)工具实现,只需要设置相应工具的输入参数即可。,实现思路如下:(1)根据需要,选择GP工具,这里调用Analyst3DTools类库中的Difference3D、Intersect3D和Union3D三个工具;(2)为每个工具设置输入参数和输出参数;(3)执行GP工具,显示所有结果。,12,精品课件,2.MultiPatch,左图显示的是两个多面体要素差异后的结果,在进行多面体差异、相交和联合之前,要设置输出结果的保存路径。,13,精品课件,3.TIN数据,TIN是表示三维表面非常有效的工具,常用于表示地球自然表面、各类现象的趋势面等。由于TIN能较好地表示地理现象的三维可视化,所以在GIS的三维地形可视化领域中有着广泛的应用。加载TIN数据TIN数据集的加载需要用到ITINWorkspaceFactory接口、ITINWorkspace接口、ITIN接口和ITINLayer接口。实现思路如下:(1)获取TIN数据的文件路径;(2)使用IWorkspaceFactory的Creat方法实例化一个TinWorkspaceFactoryClass对象、使用ITinWorkspace、ITin、ITINLayer等接口将TIN中的数据提取,并转化为一个图层(Layer);(3)将图层(Layer)添加进SceneControl,刷新SceneControl以显示该TIN。,14,精品课件,3.TIN数据,加载TIN数据,15,精品课件,3.TIN数据,TIN数据创建在ArcGIS中,创建TIN的方式有三种,分别是:由矢量要素创建TIN、由栅格数据创建TIN和由Terrain数据集创建TIN。矢量数据创建TIN由矢量数据创建TIN需要用到ITINEdit接口,在该接口中有两种方法来创建TIN。一种是通过AddPointZ方法加载有限个三维点数据创建TIN,另一种是通过AddFromFeatureClass方法加载矢量数据图层创建TIN,最后都调用ITINEdit接口的SaveAs方法将创建的TIN数据保存。,16,精品课件,3.TIN数据,左图显示的是由离散点图层创建TIN的结果,生成TIN前要先选择点图层和设置TIN的保存路径;点数据创建TIN则是在代码中新建三维点创建TIN。,17,精品课件,3.TIN数据,由栅格数据创建TIN由栅格数据创建TIN,需要用到ITINEdit接口,通过该接口的AddFromPixelBlock方法加载栅格单元创建TIN,然后调用该接口的SaveAs方法将创建的TIN数据保存。,18,精品课件,3.TIN数据,TIN表面分析基于TIN表面可以做各种表面分析,如计算TIN的体积、表面积和投影面积,获取TIN表面某点的三维坐标、坡度、坡向、等高线和最陡路径,也可以生成TIN图层表面坡度和坡向图层,绘制TIN表面的剖面线。计算TIN的体积、表面积和投影面积计算TIN的体积、表面积和投影面积,需要用到ISurface接口,通过ISurface接口的GetVolume方法、GetSurfaceArea方法和GetProjectedAre方法获得相应结果。实现思路如下:(1)获得SceneControl中的某个TIN图层,并通过ISurface接口得到表面;(2)设置基本高度和投影方向;(3)获取结果显示。,19,精品课件,3.TIN数据,20,精品课件,3.TIN数据,获取TIN表面某点三维坐标、坡度和坡向获得TIN表面某点的三维坐标信息、坡度信息和坡向信息,需要调用ISurface接口,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法获取相应信息。实现思路如下:(1)获取某个TIN图层,并通过ISurface接口得到表面;(2)点击TIN表面一点,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法获得该点信息;(3)显示该点信息。,21,精品课件,3.TIN数据,上图显示的是TIN表面某点的属性信息,鼠标左键单击TIN表面一点将弹出该点的属性信息。,获取TIN表面某点三维坐标、坡度和坡向,22,精品课件,3.TIN数据,生成TIN表面某点等高线和最陡路径获得TIN表面某点的高度及该点所在的等高线和最陡线,需要使用ISurface接口,通过ISurface接口的GetElevation方法、GetContour方法和GetSteepestPath方法获取相应信息。实现思路如下:(1)获得一个TIN图层,并通过ISurface接口得到TIN表面;(2)点击TIN表面一点,通过ISurface接口的GetElevation方法得到该点高度信息,然后通过GetSlopeDegrees方法和GetAspectDegrees方法获得该点的等高线和最陡线。,23,精品课件,3.TIN数据,上图显示的是点击TIN表面一点显示该点的等高线和最陡线,其中鼠标左键显示等高线,右键显示最陡线。,生成TIN表面某点等高线和最陡路径,24,精品课件,3.TIN数据,获取TIN表面坡度、坡向图在ArcGISEngine中,计算整个TIN表面坡度和坡向需要通过调用Analyst3DTools类库中的GP工具实现,在实现的过程中,只需要设置相应GP工具的参数即可。实现思路如下:(1)添加Analyst3DTool引用,选择Analyst3DTool中的SurfaceSlope类和SurfaceAspect类,并将其实例化;(2)设定SurfaceSlope对象和SurfaceAspect对象的in_surface属性(TIN文件的路径)和out_feature_class属性(结果保存路径);(3)调用Geoprocess的Execute方法运行GP工具,并将结果显示。,25,精品课件,3.TIN数据,获取TIN表面坡度、坡向图,26,精品课件,3.TIN数据,绘制TIN表面剖剖面线反映沿表面上某条线前进时表面高程变化的情况,如在工程上,常常需要提取地形断面,即剖面线。剖面线的绘制通常采用该区域的TIN表面,需要用到ISurface接口的GetProfile方法,实现思路如下:(1)在表面绘制一条线;(2)通过ISurface接口的GetProfile方法获得沿着该线的剖面线;(3)读取剖面线的属性,并将其在坐标系中显示出来。,27,精品课件,3.TIN数据,绘制剖面图,左图显示的是TIN表面某一线段的剖面线,首先在TIN表面单击选取两个点,然后点击绘制剖面图按钮,显示剖面线。,详细代码见程序,28,精品课件,4.SceneControl三维可视化,ArcGISEngine提供了两个显示三维的控件,分别是SceneControl和GlobeControl,它们分别对应于ArcGIS桌面产品中的ArcScene和ArcGlobe。本节主要介绍使用SceneControl实现三维地图的加载、浏览、二维数据以三维显示以及三维动画等。,29,精品课件,4.SceneControl三维可视化,三维数据加载在三维控件中加载三维数据是三维可视化的第一步,在ArcGISEngine中加载ArcScence文档即是加载*.sxd格式文件,需要调用ISceneControl接口的LoadSxFile方法,实现思路如下:(1)得到*.sxd文档的具体路径;(2)调用ISceneControl接口的CheckSxFile方法检查*.sxd文档是否可用;(3)如果*.sxd文档可用,则调用ISceneControl接口的LoadSxFile方法将*.sxd文档加载进SceneControl控件。,30,精品课件,4.SceneControl三维可视化,三维数据加载,31,精品课件,4.SceneControl三维可视化,三维地图浏览在ArcScene中,三维地图浏览包括导航、放大、缩小、平移、全图、飞行、目标处居中、缩放至目标、设置观察点、选择要素与清除所选要素等。在ArcGISEngine中实现这些操作有两种方式:一是不需编写任何代码,直接在ToolbarControl控件中添加相关工具即可;二是调用ICommand接口,对已经封装好的相关功能类进行实例化。,三维浏览功能的类,32,精品课件,4.SceneControl三维可视化,三维地图识别三维地图识别是指获取地图某一点上的所有图层信息,类似于ArcScene和ArcMap中的Identify工具。在ArcGISEngine的三维分析模块中,不能直接调用Identify工具,需要通过IHit3DSet和ISceneGraph接口编程实现。实现思路如下:(1)在SceneControl控件中单击某点,通过ISceneGraph接口的LocateMultiple方法返回一个IHit3DSet类型对象,并解析IHit3DSet对象包含的所有图层信息;(2)将信息以TreeView的形式显示。,33,精品课件,4.SceneControl三维可视化,三维地图识别,左图显示的是鼠标单击场景中的一点,弹出该点的属性信息。,34,精品课件,4.SceneControl三维可视化,遥感影像图与三维地形叠加为了便于观察和分析,很多情况下需要将二维数据在三维表面上显示。如将遥感影像叠加在三维地形上,以便清楚地辨别各类地貌特征,便于增强对影像模式及其对地形相关性的理解,实现思路如下:(1)加载TIN数据和影像数据;(2)将影像图层的三维属性添加到I3DProperties类型的对象中;(3)将I3DProperties类型对象的BaseSurface属性设置为TIN表面,调用I3DProperties对象的Apply3DProperties方法将三维信息应用到影像数据,刷新视图。,35,精品课件,4.SceneControl三维可视化,上图显示的是将遥感影像叠加在TIN表面的显示效果。,36,精品课件,4.SceneControl三维可视化,矢量图层与地形叠加除了遥感影像和三维地形叠加以外,在实际应用中,很多时候需要将矢量数据叠加到三维地形上,以便直观地观察地理现象和表达地理要素。矢量数据与地形叠加的原理同影像与地形叠加的原理相似。,37,精品课件,4.SceneControl三维可视化,三维动画ArcGISEngine中,通过使用三维书签和制作关键帧来创建动画,需要用到BookMark3D类、IKeyframe接口、IAnimationTrack接口和IAnimationTracks接口,实现思路如下:(1)将当前场景保存为三维书签,并调用IKeyframe接口的CaptureProperties方法创建一个关键帧;(2)调用IAnimationTrack接口的InsertKeyframe方法将所有的关键帧加入IAnimationTrack类型的对象;(3)调用IAnimationTracks接口的AddTrack方法将IAnimationTrack类型对象添加,并调用IAnimationTracks接口的ApplyTracks方法播放动画。,38,精品课件,4.SceneControl三维可视化,39,精品课件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论