版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、牟乃夏牟乃夏 ArcGIS Engine 地理信息系统开发教地理信息系统开发教程程配套配套PPT-第11章 三维分析目录 1. 三维数据模型 2. MultiPatch 3. TIN数据 4. SceneControl三维可视化 5. GlobeControl三维可视化 6. 实例:基于GlobeControl的三维数字校园1. 三维数据模型 三维数据(X,Y,Z)的定义中包含一个额外的维度:Z值。Z值具有测量单位,同传统的二维数据(X,Y)相比,它能存储和显示更多的信息。Z值可表示很多内容,如:海拔高度、深度、温度、化学物浓度、噪声指数等。Z值是二维数据成为三维数据的标志。 ArcGIS中三
2、维数据有3D要素数据和表面数据两种形式。 3D要素数据 3D要素数据用来表示离散的对象,每个对象的信息都存储在要素的几何和属性中。 3D要素数据又分为三维点数据、三维线数据和多面体(MultiPatch)数据。 多面体数据根据组成方式的不同又分为Triangle Strip、Triangle Fan和Ring三种类型。 1. 三维数据模型 表面数据 表面数据是指具有空间连续特征的地理要素的集合,表示地球表面某部分或整体范围内的地理要素或现象。在ArcGIS中,常用的表面数据有 栅格表面 不规则三角网(TIN) Terrain数据集等。2. MultiPatch MultiPatch几何类型又叫
3、多面体数据类型,是ESRI公司于1997年推出的一种数据模型,主要用来定义3D对象的描述性外壳。MultiPatch通过地理数据库和ShapeFile文件来存储3D要素,如建筑物、地质体等。 MultiPatch创建 在ArcGIS中,不能通过ArcGIS Desktop产品来创建MultiPatch,只能通过以下几种方法创建: 1)通过某些地理处理(Geoprocessing)工具创建,例如Extrude Between、Layer 3D to Feature Class等。 2)通过从已有的模型中导入ArcGIS创建,例如SketchUp、COLLADA、3D Studio Max或Ope
4、nFlight等。 3)通过在ArcGIS Engine中编写代码创建。2. MultiPatchArcGIS Engine提供了创建MultiPatch几何对象的类和接口,主要用到两个接口,分别是IGeometryCollection和IConstructMultiPatch。这两个接口创建MultiPatch的方式略有不同:IGeometryCollection接口是通过添加各个组件的组成部分来创建MultiPatch;IConstructMultiPatch接口是通过操作Geometry对象,如拉伸Polyline对象(拉伸为墙)和Polygon对象(拉伸为多面体)等来创建MultiPa
5、tch。这两种方法的创建步骤相似,将要创建的MultiPatch显示出来需要用到IGeometryCollection、IGraphicsContainer3D、IPoint、IPointCollection、IGeometry、IElement 等接口。实现思路如下:(1)使用IPoint接口生成新的点对象,用IPointCollection接口的AddPoint方法将点对象添加进集合,并用IGeometryCollection接口的AddGeometry方法或IconstructMultiPatch接口的ConstructExtrudeFromTo方法将PointCollection对象转
6、换为一个Geometry对象;(2)使用IElement接口实例化一个元素对象,并将该元素对象的Geometry属性设置为步骤1得到的Geometry对象,并设置元素对象显示时使用的Symbol(符号);(3)使用IGraphicsContainer3D的AddElement方法把步骤2产生的元素添加到视图中去,刷新视图,让元素显示出来。2. MultiPatch按钮名称按钮功能创建axes创建一个带有箭头的三维坐标轴创建TriangleStrip创建一个TriangleStrip样式的阶梯创建TriangleFan创建一个TriangleFan样式的棱锥创建Triangles创建Triang
7、les样式的多个三角片创建Ring创建一个Ring样式的迷宫创建RingGroup创建四个Ring样式的正方形环Extrusion拉伸一个正方形为棱柱Composite创建一个综合的房子样式实例按钮功能介绍详细代码见程序2. MultiPatch MultiPatch编辑 MultiPatch有多种编辑操作,常用的主要有移动、旋转和缩放等。MultiPatch的编辑需要用到ITransform3D接口,通过该接口的Move3D、RotateVector3D和Scale3D等方法实现。实现思路如下: (1)得到某一图层的某个3D要素,并通过要素的Shape属性得到要素的几何形状; (2)将该几何
8、对象转换为ITransform3D类型对象; (3)运用ITransform3D中的方法对得到的对象进行相应的编辑; (4)开始编辑,将要素的Shape设置为编辑后的几何要素; (5)保存、停止编辑。2. MultiPatch 左图中展示的是将MultiPatch在X、Y、Z方向以1:1:3的比例变换后的结果,可以输入相应的参数进行MultiPatch的平移、旋转和缩放操作。2. MultiPatchMultiPatch分析MultiPatch的分析主要有:获取体积、表面积,判断两个MultiPatch之间是否相连及在某一值范围内是否临近,MultiPatch之间的相交、差异、联合等运算分析。
9、获取MultiPatch的体积和表面积获取MultiPatch的表面积和体积需要用到IArea3D接口和IVolume接口,实现思路如下: (1)从某一个图层中获得一个具有多面体结构的要素(Feature),通过要素的Shape属性获得该多面体几何形状; (2)通过QI(Query Interface)得到IArea3D接口的Area属性和IVolume接口的Volume属性; (3)将得到的结果显示。2. MultiPatch 判断MultiPatch相连与邻接 判断两个MultiPatch是否相连及在某个值范围是否邻接需用到IRelationalOperator3D2接口,实现思路如下:
10、(1)从某一图层或多个图层中获得两个多面体要素(Feature),通过要素的Shape属性获得两个多面体的几何形状; (2)通过IRelationalOperator3D2接口的Disjiont3D方法判断其是否相连,或者通过输入一个距离容差判断是否邻接; (3)显示结果。2. MultiPatch MultiPatch之间的差异、相交、联合 多面体的差异计算是求出两个闭合多面体要素的几何交集,然后从一个要素中剪除两要素类的交集,并将结果保存到新输出的要素类中。 多面体相交是计算两个或多个多面体要素的几何交集,将重叠的要素输出为新要素。 多面体联合是计算重叠多面体的几何交集,然后将多面体几何联
11、合在一起,存储到新的多面体要素类中。 在ArcGIS Engine中,进行多面体之间的差异、相交、联合等三维要素分析需要通过调用Analyst3DTools类库中的GP(Geoprocessing,地理处理工具)工具实现,只需要设置相应工具的输入参数即可。实现思路如下:(1)根据需要,选择GP工具,这里调用Analyst3DTools类库中的Difference3D、Intersect3D和Union3D三个工具;(2)为每个工具设置输入参数和输出参数;(3)执行GP工具,显示所有结果。2. MultiPatch 左图显示的是两个多面体要素差异后的结果,在进行多面体差异、相交和联合之前,要设置
12、输出结果的保存路径。3. TIN数据 TIN是表示三维表面非常有效的工具,常用于表示地球自然表面、各类现象的趋势面等。由于TIN能较好地表示地理现象的三维可视化,所以在GIS的三维地形可视化领域中有着广泛的应用。 加载TIN数据 TIN数据集的加载需要用到ITINWorkspaceFactory接口、ITINWorkspace接口、ITIN接口和ITINLayer接口。实现思路如下: (1)获取TIN数据的文件路径; (2)使用IWorkspaceFactory的Creat方法实例化一个TinWorkspaceFactoryClass对象、使用ITinWorkspace、ITin、ITINLa
13、yer等接口将TIN中的数据提取,并转化为一个图层(Layer); (3)将图层(Layer)添加进SceneControl,刷新SceneControl以显示该TIN。3. TIN数据 加载TIN数据3. TIN数据 TIN数据创建 在ArcGIS中,创建TIN的方式有三种,分别是:由矢量要素创建TIN、由栅格数据创建TIN和由Terrain数据集创建TIN。 矢量数据创建TIN 由矢量数据创建TIN需要用到ITINEdit接口,在该接口中有两种方法来创建TIN。一种是通过AddPointZ方法加载有限个三维点数据创建TIN,另一种是通过AddFromFeatureClass方法加载矢量数据
14、图层创建TIN,最后都调用ITINEdit接口的SaveAs方法将创建的TIN数据保存。3. TIN数据左图显示的是由离散点图层创建TIN的结果,生成TIN前要先选择点图层和设置TIN的保存路径;点数据创建TIN则是在代码中新建三维点创建TIN。3. TIN数据 由栅格数据创建TIN 由栅格数据创建TIN,需要用到ITINEdit接口,通过该接口的AddFromPixelBlock方法加载栅格单元创建TIN,然后调用该接口的SaveAs方法将创建的TIN数据保存。3. TIN数据TIN表面分析基于TIN表面可以做各种表面分析,如计算TIN的体积、表面积和投影面积,获取TIN表面某点的三维坐标、
15、坡度、坡向、等高线和最陡路径,也可以生成TIN图层表面坡度和坡向图层,绘制TIN表面的剖面线。计算TIN的体积、表面积和投影面积计算TIN的体积、表面积和投影面积,需要用到ISurface接口,通过ISurface接口的GetVolume方法、GetSurfaceArea方法和GetProjectedAre方法获得相应结果。实现思路如下: (1)获得SceneControl中的某个TIN图层,并通过ISurface接口得到表面; (2)设置基本高度和投影方向; (3)获取结果显示。 TIN的体积、表面积和投影面积3. TIN数据3. TIN数据 获取TIN表面某点三维坐标、坡度和坡向 获得TI
16、N表面某点的三维坐标信息、坡度信息和坡向信息,需要调用ISurface接口,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法获取相应信息。实现思路如下: (1)获取某个TIN图层,并通过ISurface接口得到表面; (2)点击TIN表面一点,通过ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法获得该点信息; (3)显示该点信息。3. TIN数据上图显示的是TIN表面某点的属性信息,鼠标左键单击TIN表面一点将弹出该点的属性信息。获取TIN
17、表面某点三维坐标、坡度和坡向3. TIN数据 生成TIN表面某点等高线和最陡路径 获得TIN表面某点的高度及该点所在的等高线和最陡线,需要使用ISurface接口,通过ISurface接口的GetElevation方法、GetContour方法和GetSteepestPath方法获取相应信息。实现思路如下: (1)获得一个TIN图层,并通过ISurface接口得到TIN表面; (2)点击TIN表面一点,通过ISurface接口的GetElevation方法得到该点高度信息,然后通过GetSlopeDegrees方法和GetAspectDegrees方法获得该点的等高线和最陡线。3. TIN数据
18、上图显示的是点击TIN表面一点显示该点的等高线和最陡线,其中鼠标左键显示等高线,右键显示最陡线。生成TIN表面某点等高线和最陡路径3. TIN数据 获取TIN表面坡度、坡向图 在ArcGIS Engine中,计算整个TIN表面坡度和坡向需要通过调用Analyst3DTools类库中的GP工具实现,在实现的过程中,只需要设置相应GP工具的参数即可。实现思路如下: (1)添加Analyst3DTool引用,选择Analyst3DTool中的SurfaceSlope类和SurfaceAspect类,并将其实例化; (2)设定SurfaceSlope对象和SurfaceAspect对象的in_surf
19、ace属性(TIN文件的路径)和out_feature_class属性(结果保存路径); (3)调用Geoprocess的Execute方法运行GP工具,并将结果显示。3. TIN数据获取TIN表面坡度、坡向图3. TIN数据 绘制TIN表面剖剖面线反映沿表面上某条线前进时表面高程变化的情况,如在工程上,常常需要提取地形断面,即剖面线。 剖面线的绘制通常采用该区域的TIN表面,需要用到ISurface接口的GetProfile方法,实现思路如下: (1)在表面绘制一条线; (2)通过ISurface接口的GetProfile方法获得沿着该线的剖面线; (3)读取剖面线的属性,并将其在坐标系中显
20、示出来。3. TIN数据绘制剖面图左图显示的是TIN表面某一线段的剖面线,首先在TIN表面单击选取两个点,然后点击绘制剖面图按钮,显示剖面线。详细代码见程序4. SceneControl三维可视化 ArcGIS Engine提供了两个显示三维的控件,分别是SceneControl和GlobeControl,它们分别对应于ArcGIS桌面产品中的ArcScene和ArcGlobe。本节主要介绍使用SceneControl实现三维地图的加载、浏览、二维数据以三维显示以及三维动画等。4. SceneControl三维可视化 三维数据加载 在三维控件中加载三维数据是三维可视化的第一步,在ArcGIS
21、Engine中加载ArcScence文档即是加载*.sxd格式文件,需要调用ISceneControl接口的LoadSxFile方法,实现思路如下: (1)得到*.sxd文档的具体路径; (2)调用ISceneControl接口的CheckSxFile方法检查*.sxd文档是否可用; (3)如果*.sxd文档可用,则调用ISceneControl接口的LoadSxFile方法将*.sxd文档加载进SceneControl控件。4. SceneControl三维可视化 三维数据加载4. SceneControl三维可视化 三维地图浏览 在ArcScene中,三维地图浏览包括导航、放大、缩小、平移
22、、全图、飞行、目标处居中、缩放至目标、设置观察点、选择要素与清除所选要素等。在ArcGIS Engine中实现这些操作有两种方式:一是不需编写任何代码,直接在ToolbarControl控件中添加相关工具即可;二是调用ICommand接口,对已经封装好的相关功能类进行实例化。类名功能ControlsSceneFlyToolClass飞行ControlsSceneFullExtentCommandClass全图ControlsSceneNavigateToolClass导航ControlsSceneOpenDocCommandClass 打开*.sxd文档ControlsScenePanTool
23、Class 漫游ControlsSceneSelectFeaturesToolClass单选要素ControlsSceneSelectGraphicsToolClass单选图形ControlsSceneSetObserverToolClass设置观察点ControlsSceneTargetZoomToolClass放大至目标ControlsSceneZoomInOutToolClass放缩场景ControlsSceneZoomInToolClass放大ControlsSceneZoomOutToolClass缩小 三维浏览功能的类4. SceneControl三维可视化 三维地图识别 三维地图
24、识别是指获取地图某一点上的所有图层信息,类似于ArcScene和ArcMap中的Identify工具。在ArcGIS Engine的三维分析模块中,不能直接调用Identify工具,需要通过IHit3DSet和ISceneGraph接口编程实现。实现思路如下: (1)在SceneControl控件中单击某点,通过ISceneGraph接口的LocateMultiple方法返回一个IHit3DSet类型对象,并解析IHit3DSet对象包含的所有图层信息; (2)将信息以TreeView的形式显示。4. SceneControl三维可视化 三维地图识别左图显示的是鼠标单击场景中的一点,弹出该点的
25、属性信息。4. SceneControl三维可视化 遥感影像图与三维地形叠加 为了便于观察和分析,很多情况下需要将二维数据在三维表面上显示。如将遥感影像叠加在三维地形上,以便清楚地辨别各类地貌特征,便于增强对影像模式及其对地形相关性的理解,实现思路如下: (1)加载TIN数据和影像数据; (2)将影像图层的三维属性添加到I3DProperties类型的对象中; (3)将I3DProperties类型对象的BaseSurface属性设置为TIN表面,调用I3DProperties对象的Apply3DProperties方法将三维信息应用到影像数据,刷新视图。4. SceneControl三维可视
26、化上图显示的是将遥感影像叠加在TIN表面的显示效果。4. SceneControl三维可视化 矢量图层与地形叠加 除了遥感影像和三维地形叠加以外,在实际应用中,很多时候需要将矢量数据叠加到三维地形上,以便直观地观察地理现象和表达地理要素。矢量数据与地形叠加的原理同影像与地形叠加的原理相似。4. SceneControl三维可视化 三维动画 ArcGIS Engine中,通过使用三维书签和制作关键帧来创建动画,需要用到BookMark3D类、IKeyframe接口、IAnimationTrack接口和IAnimationTracks接口,实现思路如下: (1)将当前场景保存为三维书签,并调用IKeyframe接口的CaptureProperties方法创建一个关键帧; (2)调用IAnimationTrack接口的InsertKeyframe方法将所有的关键帧加入IAnimationTrack类型的对象; (3)调用IAnimationTracks接口的AddTrack方法将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公共交通从业人员培训考核制度
- 会议信息发布与宣传推广制度
- 2026年济宁市检察机关招聘聘用制书记员的备考题库(31人)及完整答案详解1套
- 2026年重庆市永安工程建设监理有限公司贵州分公司备考题库及一套完整答案详解
- 四川省大英中学2025年临聘教师招聘备考题库及答案详解一套
- 中学学生社团活动经费报销制度
- 2026年通海县卫生健康系统公开招聘紧缺岗位医生18人备考题库及答案详解1套
- 养老院入住老人生活照料培训制度
- 2026年滨州医学院附属医院公开招聘呼吸与危重症医学科主任助理备考题库及一套答案详解
- 企业员工培训与技能提升制度
- (正式版)SHT 3046-2024 石油化工立式圆筒形钢制焊接储罐设计规范
- JJF 1033-2023 计量标准考核规范
- 《胆石通利胶囊新》课件
- 院感科对导尿管相关尿路感染核心防控措施执行率低原因分析品管圈鱼骨图柏拉图
- JGJ114-2014 钢筋焊接网混凝土结构技术规程
- (完整版)溢洪道工程施工方案
- 增资先决条件确认函
- 磷酸工艺知识
- GB/T 3906-20203.6 kV~40.5 kV交流金属封闭开关设备和控制设备
- 2023年电大当代中国政治制度机考拼音排版绝对好用按字母排序
- GB 39669-2020牙刷及口腔器具安全通用技术要求
评论
0/150
提交评论