ArcGIS Engine地理信息系统开发教程 第11章 三维分析.pptx
- 文档编号:30843040
- 上传时间:2024-01-31
- 格式:PPTX
- 页数:92
- 大小:5.09MB
ArcGIS Engine地理信息系统开发教程 第11章 三维分析.pptx
《ArcGIS Engine地理信息系统开发教程 第11章 三维分析.pptx》由会员分享,可在线阅读,更多相关《ArcGIS Engine地理信息系统开发教程 第11章 三维分析.pptx(92页珍藏版)》请在冰豆网上搜索。
第11章三维分析,目录,1,目录,1,三维数据模型,2,3,TIN数据,多面体,8,SceneControl三维可视化,9,基于GlobeControl的三维数字校园,GlobeControl三维可视化,10,简介,
(1)三维数据(X,Y,Z)的定义中包含一个额外的维度:
Z值
(2)Z值具有测量单位,能存储和显示更多的信息,Z值可表示很多内容,如:
海拔高度、深度、温度、化学物浓度、噪声指数等Z值是二维数据成为三维数据的标志ArcGIS中三维数据有3D要素数据和表面数据两种形式,1.三维数据模型,2,3D要素数据,3D要素数据用来表示离散的对象,每个对象的信息都存储在要素的几何和属性中3D要素数据又分为三维点数据、三维线数据和多面体(MultiPatch)数据(3)多面体数据根据组成方式的不同又分为TriangleStrip、TriangleFan和Ring三种类型,TriangleStrip,TriangleFan,Ring,1.三维数据模型,3,表面数据,表面数据是指具有空间连续特征的地理要素的集合表示地球表面某部分或整体范围内的地理要素或现象。
(3)ArcGIS中常用的表面数据有:
栅格表面-通过栅格数据(行和列的形式)呈现的表面不规则三角网(TIN)-以数字形式表示表面形态Terrain数据集-一种基于TIN的数据集,1.三维数据模型,4,简介,
(1)MultiPatch几何类型又叫多面体数据类型,
(2)多面体数据类型(MultiPatch)是ESRI公司于1997年推出的一种数据模型(3)多面体数据类型主要用来定义3D对象的描述性外壳(4)MultiPatch通过地理数据库和ShapeFile文件来存储3D要素,如建筑物、地质体等,2.多面体,5,MultiPatch创建,在ArcGIS中创建MultiPatch方法有以下3种:
通过某些地理处理(Geoprocessing)工具创建例如ExtrudeBetween、Layer3DtoFeatureClass等通过从已有的模型中导入ArcGIS创建例如SketchUp、COLLADA、3DStudioMax或OpenFlight等通过在ArcGISEngine中编写代码创建,2.多面体,6,MultiPatch创建,在ArcGISEngine中创建MultiPatch几何对象主要用到IGeometryCollection和IConstructMultiPatch两个接口这两个接口创建MultiPatch的方式略有不同:
IGeometryCollection接口:
通过添加各个组件的组成部分来创建MultiPatchIConstructMultiPatch接口:
是通过操作Geometry对象来创建MultiPatch如拉伸Polyline对象(拉伸为墙)和Polygon对象(拉伸为多面体)等这两种方法的创建步骤相似,将要创建的MultiPatch显示出来需要用到IGeometryCollection、IGraphicsContainer3D、IPoint、IPointCollection、IGeometry、IElement等接口,2.多面体,7,MultiPatch创建,实例按钮功能介绍,2.多面体,8,MultiPatch创建,实现思路,2.多面体,9,
(1)生成新的点对象,并将其添加到集合中
(2)将点对象转换为一个Geometry对象实例化一个元素对象,并将该元素对象的Geometry属性设置为上一步骤得到的Geometry对象设置元素对象显示时使用的符号(5)刷新视图,显示元素注:
详细代码可查看程序,MultiPatch创建,效果展示,2.多面体,10,MultiPatch编辑,实现思路,2.多面体,11,MultiPatch的编辑操作主要有移动、旋转和缩放等。
通过ITransform3D接口的Move3D、RotateVector3D和Scale3D等方法能实现MultiPatch的编辑操作。
得到某一图层的某个3D要素的几何形状将该几何对象转换为ITransform3D类型对象,对得到的对象进行相应的编辑开始编辑,将要素的Shape设置为编辑后的几何要素(5)保存、停止编辑,MultiPatch编辑,核心代码,2.多面体,12,MultiPatch编辑,效果展示,图中展示的是将MultiPatch在X、Y、Z方向以1:
1:
3的比例变换后的结果,可以输入相应的参数进行MultiPatch的平移、旋转和缩放操作。
2.多面体,13,MultiPatch分析,实现思路,2.多面体,14,MultiPatch的分析主要有:
获取体积、表面积,判断两个MultiPatch之间是否相连及在某一值范围内是否临近,MultiPatch之间的相交、差异、联合等运算分析获取MultiPatch的体积和表面积需要用到IArea3D接口和IVolume接口
(1)获取某个图层中的一个多面体的几何形状,
(2)获取Area属性和Volume属性(3)显示结果,MultiPatch分析,核心代码,2.多面体,15,获取MultiPatch的体积和表面积,MultiPatch分析,效果展示,获取MultiPatch的体积和表面积,2.多面体,16,MultiPatch分析,判断MultiPatch相连与邻接需要用到IRelationalOperator3D2接口,实现思路,2.多面体,17,
(1)获取一个或多个图层中的两个多面体的几何形状
(2)判断是否相连或者输入一个距离容差判断是否邻接(3)显示结果,MultiPatch分析,判断MultiPatch相连与邻接,核心代码,2.多面体,18,MultiPatch分析,判断MultiPatch相连与邻接,效果展示,2.多面体,19,MultiPatch分析,MultiPatch之间的差异、相交、联合多面体的差异计算是求出两个闭合多面体要素的几何交集,然后从一个要素中剪除两要素类的交集,并将结果保存到新输出的要素类中多面体相交是计算两个或多个多面体要素的几何交集,将重叠的要素输出为新要素多面体联合是计算重叠多面体的几何交集,然后将多面体几何联合在一起,存储到新的多面体要素类中,2.多面体,20,MultiPatch分析,MultiPatch之间的差异、相交、联合需要调用Analyst3DTools类库中的GP(Geoprocessing,地理处理工具)工具实现,只需要设置相应工具的输入参数即可。
实现思路,2.多面体,21,选择GP工具为每个工具设置输入参数和输出参数(3)执行GP工具,显示所有结果,MultiPatch分析,MultiPatch之间的差异、相交、联合,核心代码,2.多面体,22,MultiPatch分析,MultiPatch之间的差异、相交、联合,核心代码,2.多面体,23,MultiPatch分析,MultiPatch之间的差异、相交、联合,效果展示,多面体的差异,2.多面体,24,简介,
(1)TIN是表示三维表面非常有效的工具,3.TIN数据,25,
(2)TIN常表示地球自然表面、各类现象的趋势面等(3)在GIS的三维地形可视化领域中有着广泛的应用因为TIN能较好地表示地理现象的三维可视化,加载TIN数据,实现思路,3.TIN数据,26,加载TIN数据集需要用到ITINWorkspaceFactory接口、ITINWorkspace接口、ITIN接口和ITINLayer接口
(1)获取TIN数据的文件路径,实例化一个TIN的工作空间工厂类对象提取TIN中的数据,并将其转化为一个图层(4)添加图层并进行刷新,以显示TIN,加载TIN数据,核心代码,3.TIN数据,27,加载TIN数据,效果展示,3.TIN数据,28,创建TIN数据,在ArcGIS中,创建TIN的方式有三种,分别是:
由矢量要素创建TIN、由栅格要素创建TIN和由Terrain数据集创建TIN。
由矢量要素创建TIN
(1)由矢量数据创建TIN需要用到ITINEdit接口
(2)使用ITINEdit接口创建TIN有以下两种方法:
一种是加载有限个三维点数据创建TIN一种是加载矢量数据图层创建TIN,3.TIN数据,29,创建TIN数据,由矢量要素创建TIN,核心代码,3.TIN数据,30,创建TIN数据,由矢量要素创建TIN,效果展示,由离散点图层创建TIN的结果,3.TIN数据,31,注:
生成TIN前要先选择点图层和设置TIN的保存路径,创建TIN数据,由栅格数据创建TIN由栅格数据创建TIN,需要用到ITINEdit接口:
AddFromPixelBlock方法-加载栅格单元创建TINSaveAs方法-保存创建的TIN数据栅格转TIN常用于将数字高程模型(DEM)获得的栅格转换为TIN表面注:
详细代码可查看程序,3.TIN数据,32,创建TIN数据,由栅格数据创建TIN,效果展示,3.TIN数据,33,TIN表面分析,基于TIN表面可以做的表面分析有以下5种:
计算TIN的体积、表面积和投影面积获取TIN表面某点的三维坐标、坡度和坡向(3)生成TIN表面某点所在的等高线和最陡路径(4)获取TIN表面坡度、坡向图(5)绘制TIN表面剖面线,3.TIN数据,34,TIN表面分析,实现思路,3.TIN数据,35,计算TIN的体积、表面积和投影面积计算TIN的体积、表面积和投影面积,需要用到ISurface接口,通过ISurface接口的GetVolume方法、GetSurfaceArea方法和GetProjectedArea方法获得相应结果。
(1)获取TIN图层,并得到TIN表面,
(2)设置基本高度和投影方向(3)获取结果显示,TIN表面分析,计算TIN的体积、表面积和投影面积,核心代码,3.TIN数据,36,TIN表面分析,计算TIN的体积、表面积和投影面积,核心代码,3.TIN数据,37,TIN表面分析,计算TIN的体积、表面积和投影面积,效果展示,3.TIN数据,38,TIN表面分析,实现思路,3.TIN数据,39,获取TIN表面某点的三维坐标、坡度和坡向获取TIN表面某点的三维坐标、坡度和坡向信息,需要用到ISurface接口,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法获得相应信息。
(1)获取TIN图层,并得到TIN表面,
(2)点击TIN表面一点,获得该点信息(3)显示该点信息,TIN表面分析,获取TIN表面某点的三维坐标、坡度和坡向,核心代码,3.TIN数据,40,TIN表面分析,获取TIN表面某点的三维坐标、坡度和坡向,效果展示,3.TIN数据,41,TIN表面分析,实现思路,3.TIN数据,42,生成TIN表面某点所在的等高线和最陡路径获得TIN表面某点的高度及该点所在的等高线和最陡线,需要使用ISurface接口,通过ISurface接口的GetElevation方法、GetContour方法和GetSteepestPath方法获取相应信息。
(1)获取TIN图层,并得到TIN表面,
(2)点击TIN表面一点,获得该点的高度信息、等高线和最陡线,TIN表面分析,生成TIN表面某点所在的等高线和最陡路径,核心代码,3.TIN数据,43,TIN表面分析,生成TIN表面某点所在的等高线和最陡路径,效果展示,3.TIN数据,44,TIN表面分析,实现思路,3.TIN数据,45,获取TIN表面坡度、坡向图计算整个TIN表面坡度和坡向需要通过调用Analyst3DTools类库中的GP工具实现,在实现的过程中,只需要设置相应GP工具的参数即可。
(1)添加Analyst3DTool引用,并对SurfaceSlope类和,SurfaceAspect类进行实例化
(2)设定TIN文件的路径和结果保存路径(3)运行GP工具,并显示结果,TIN表面分析,获取TIN表面坡度、坡向图,核心代码,3.TIN数据,46,TIN表面分析,获取TIN表面坡度、坡向图,效果展示,3.TIN数据,47,TIN表面分析,实现思路,3.TIN数据,48,绘制TIN表面剖面线绘制TIN表面剖剖面线反映沿表面上某条线前进时表面高程变化的情况。
剖面线的绘制通常采用该区域的TIN表面,需要用到ISurface接口的GetProfile方法。
(1)在表面绘制一条线,获得沿着该线的剖面线读取剖面线的属性,并将其在坐标系中显示出来注:
详细代码可查看程序,TIN表面分析,绘制TIN表面剖面线,效果展示,3.TIN数据,49,简介,ArcGISEngine提供了两个显示三维的控件:
SceneControl-对应于ArcGIS桌面产品中的ArcSceneGlobeControl-对应于ArcGIS桌面产品中的ArcGlobe使用SceneControl可以实现三维地图的加载、浏览、二维数据以三维显示以及三维动画等,4.SceneControl三维可视化,50,三维数据加载,在ArcGISEngine中加载ArcScence文档即是加载*.sxd格式文件,需要调用ISceneControl接口的LoadSxFile方法。
实现思路,4.SceneControl三维可视化,51,
(1)得到*.sxd文档的具体路径
(2)检查*.sxd文档是否可用(3)如果可用,则将该文档加载到SceneControl控件中,三维数据加载,核心代码,4.SceneControl三维可视化,52,三维数据加载,效果展示,4.SceneControl三维可视化,53,三维地图浏览,
(1)在ArcScene中,三维地图浏览包括导航、放大、缩小、平移、全图、飞行、目标处居中、缩放至目标、设置观察点、选择要素与清除所选要素等
(2)在ArcGISEngine中实现地图浏览操作的方式有两种:
一是不需编写任何代码,直接在ToolbarControl控件中添加相关工具即可二是调用ICommand接口,对已经封装好的相关功能类进行实例化,4.SceneControl三维可视化,54,三维地图浏览,4.SceneControl三维可视化,55,三维浏览功能的类,三维地图浏览,核心代码,4.SceneControl三维可视化,56,三维地图浏览,效果展示,4.SceneControl三维可视化,57,三维地图识别,实现思路,4.SceneControl三维可视化,58,三维地图识别是指获取地图某一点上的所有图层信息,类似于ArcScene和ArcMap中的Identify工具。
在ArcGISEngine的三维分析模块中,不能直接调用Identify工具,需要通过IHit3DSet和ISceneGraph接口编程实现。
(1)在控件中单击某点,返回一个IHit3DSet类型对象,
(2)解析IHit3DSet对象包含的所有图层信息(3)以TreeView的形式显示信息,三维地图识别,核心代码,4.SceneControl三维可视化,59,三维地图识别,核心代码,4.SceneControl三维可视化,60,三维地图识别,效果展示,4.SceneControl三维可视化,61,遥感影像图与三维地形叠加,为了便于观察和分析,很多情况下需要将二维数据在三维表面上显示。
如将遥感影像叠加在三维地形上,以便清楚地辨别各类地貌特征,便于增强对影像模式及其对地形相关性的理解。
实现思路,4.SceneControl三维可视化,62,加载TIN数据和影像数据将影像图层的三维属性添加到I3DProperties类型的对象中将BaseSurface属性设置为TIN表面将三维信息应用到影像数据,并刷新视图,遥感影像图与三维地形叠加,核心代码,4.SceneControl三维可视化,63,遥感影像图与三维地形叠加,效果展示,4.SceneControl三维可视化,64,矢量图层与地形叠加,在实际应用中,很多时候需要将矢量数据叠加到三维地形上,以便直观地观察地理现象和表达地理要素。
矢量数据与地形叠加的原理同影像与地形叠加的原理相似。
核心代码,4.SceneControl三维可视化,65,矢量图层与地形叠加,效果展示,4.SceneControl三维可视化,66,三维动画,ArcGISEngine中,通过使用三维书签和制作关键帧来创建动画,需要用到BookMark3D类、IKeyframe接口、IAnimationTrack接口和IAnimationTracks接口。
实现思路,4.SceneControl三维可视化,67,
(1)将当前场景保存为三维书签,并创建一个关键帧
(2)将所有的关键帧加入IAnimationTrack类型的对象(3)添加IAnimationTrack类型对象,并播放动画,三维动画,核心代码,4.SceneControl三维可视化,68,三维动画,效果展示,4.SceneControl三维可视化,69,简介,
(1)GlobeControl对应于ArcGIS桌面产品中的ArcGlobe
(2)ArcGlobe和ArcScene一样,都是3D可视化应用程序(3)ArcGlobe是基于地球视图,通常用于超大型数据集的显示(4)使用GlobeControl可以实现ArcGlobe数据加载、地图浏览和效果展示等,5.GlobeControl三维可视化,70,三维数据加载,在ArcGISEngine中加载ArcGlobe文档即是加载*.3dd格式文件,需要调用IGlobeControl接口的Load3dFile方法。
实现思路,5.GlobeControl三维可视化,71,
(1)得到*.3dd文档的具体路径
(2)检查*.3dd文档是否可用(3)如果可用,则将该文档加载到GlobeControl控件中,三维数据加载,核心代码,5.GlobeControl三维可视化,72,三维数据加载,效果展示,5.GlobeControl三维可视化,73,三维地图工具,在ArcGlobe中,三维地图工具包括导航、平移、全图、飞行、目标处居中、地球旋转、查找、识别和量测等在ArcGISEngine中实现以上功能的方式有两种:
一是不需编写任何代码,直接在ToolbarControl控件中添加相关工具即可二是调用ICommand接口,对已经封装好的相关功能类进行实例化,5.GlobeControl三维可视化,74,三维地图工具,5.GlobeControl三维可视化,75,三维浏览功能的类,三维地图工具,核心代码,5.GlobeControl三维可视化,76,三维地图工具,效果展示,5.GlobeControl三维可视化,77,三维效果,ArcGlobe中的三维效果工具主要有调整图层透明度、切换光照、面剔除、调节亮度、设置着色模式等指北针和平视显示器是ArcGlobe独有的功能,5.GlobeControl三维可视化,78,三维效果,核心代码,5.GlobeControl三维可视化,79,三维效果,核心代码,5.GlobeControl三维可视化,80,三维效果,效果展示,5.GlobeControl三维可视化,81,简介,
(1)数字校园是数字地球的微观表现形式,是校园的虚拟对照物
(2)三维校园场景可以通过ArcGIS并结合SketchUp构建(3)本实例分为四个模块,分别是地图浏览模块、鹰眼模块、书签管理模块和查询模块,6.基于GlobeControl的三维数字校园,82,地图浏览模块,地图浏览模块有打开地图、导航、漫游、放缩和放大至某一图层等功能。
核心代码,6.基于GlobeControl的三维数字校园,83,鹰眼模块,鹰眼模块是在二维地图中显示三维地图的对应位置当三维地图显示区域变化时,二维地图上显示的位置会相应改变(3)可以在二维地图上划矩形来控制三维地图的显示区域,6.基于GlobeControl的三维数字校园,84,鹰眼模块,核心代码,6.基于GlobeControl的三维数字校园,85,鹰眼模块,核心代码,6.基于GlobeControl的三维数字校园,86,书签管理模块,书签管理模块包含将当前视图添加书签、缩放至书签、删除某一书签和清空所有书签等功能。
核心代码,6.基于GlobeControl的三维数字校园,87,书签管理模块,核心代码,6.基于GlobeControl的三维数字校园,88,查询模块,查询模块功能包括:
输入内容查询建筑物、得到查询结果、放大至查询结果等。
核心代码,6.基于GlobeControl的三维数字校园,89,查询模块,核心代码,6.基于GlobeControl的三维数字校园,90,三维数字校园,效果展示,6.基于GlobeControl的三维数字校园,91,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGIS Engine地理信息系统开发教程 第11章 三维分析 Engine 地理信息系统 开发 教程 11 三维 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)