GIS三维场景教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机练习6
目标::利用ArcGIS的三维空间分析和ArcScene组件,在ArcGIS中建立场景的三维模型。
目标
数据:
高程点(点状,heightP.shp),用于生成三维地形环境。
建筑(面状,Building.shp),用于建立三维建筑模型。
水域(面状,Water.shp),用于建立三维环境中的场景要素——河湖水面。
道路(线状,Roadline.shp),用于建立三维环境中的场景要素——道路。
树(点状,Trees.shp),用于建立三维环境中的场景要素——树。
路灯(点状,StreetLamp.shp),用于建立三维环境中的场景要素——路灯。
建筑模型(B_EW.3D、B_SN.3DS、B_Pub.3DS),作为典型建筑模型的三维符号。
一、创建三维地形环境
1.运行ArcMap,创建空地图,加载3D Analyst工具条。
使用标准工具条中的按钮添加存放在文件夹F:\Spatial Analysis\Exercises\ex06中的heightP、Building和Water三个数据层。
2.为地图设置距离单位和显示单位。
在“Data Frame Properties”对话框中,把地图的距离单位和显示单位设置为Meters。
保存当前的地图文档为ex06_1。
3.点击3D Analyst工具条的下拉箭头,打开Options对话框,在General选项卡中设置默认工作路径为:“F:\Spatial Analysis\Exercises\ex06\”。
4.从高程点建立场地初始的不规则三角网(TIN)。
点击3D Analyst工具条最左侧的有下拉箭头的按钮,选择Create/Modify TIN—> Create TIN From Features…,打开Create TIN From Features对话框。
勾选“heightP”数据层,设置高程源字段(Height Source)为HGT,保持Triangulate as的缺省选择mass points,最后指定输出TIN文件的路径和文件名,如F:\Spatial Analysis\Exercises\ex06\tin(如图1)。
输出的TIN格式的文件自动加载到当前的数据组中。
5.把二维的建筑和水域层转换为三维地物层。
选择3D Analyst工具条的Convert—>Features to 3D…(二维要素转换为三维)命令。
在Convert Features to 3D对话框中,将输入要素选择为“Building”,高程源使用第一种:栅格或TIN表明模型(Raster or TIN surface),并选择上一步生成的tin。
指定输出三维要素文件的路径和名称,如F:\Spatial Analysis\Exercises\ex06\ Building_3D。
点击OK,执行转换。
同样地,将输入要素选择为“Water”,产生三维要素文件Water_3D。
输出的两个文件也都自动加载到图层目录中。
6.利用三维地物层“整平”初始的三维场地模型tin。
选择3D Analyst工具条的Create/Modify TIN—> Add Features to TIN…。
在打开的对话框中,选择tin作为输入TIN。
勾选“Building_3D”数据层,保持高程源字段为缺省值<Feature Z Values>,选择Triangulate as的方式为hard replace。
再勾选“Water_3D”数据层,Triangulate as也选为hard replace。
最后选择Save changes into the input TIN specified above之前的单选钮,这样将保持模型的文件名称不变,但模型中将被更新。
(如果需要,替代地,可以选择Save changes into a new output TIN之前的单选钮,指定输出TIN文件的路径和文件名,从而产生一个新的TIN,输入TIN将保持不变。
)点击OK,执行命令。
参数设置如图2所示。
图1 图2
7.在查看tin地形模型变化之前,从当前文档中移除tin数据层。
再使用按钮添加tin。
比较前后模型的变化细节,理解hard replace方式对模型的影响效果。
从图3可以发现,被建筑和水域覆盖的区域变为了平面,其周边区域的不规则三角形也有所不同。
图3
二、在ArcScene中实现三维场景的简单显示
1.点击标准工具条中的ArcScene 按钮,从ArcMap中启动ArcScene。
若事先ArcMap并未打开,也可以选择“开始”—> “程序”—> ArcGIS —>ArcScene,打开ArcScene应用程序。
2.ArcScene窗口的布局类似于ArcMap的窗口,主菜单和一些基本的工具条的使用方法也相同。
最初在ArcScene中有一空地图,使用标准工具条中的按钮添加存放在文件夹F:\Spatial Analysis\Exercises\ex06中的tin、Building、Water、Roadline四个数据层,并保存当前的场景文
档为Scene_ex06_1(注意ArcScene场景文档的后缀是sxd)。
3.熟悉ArcScene中对场景的控制工具。
这些工具属于Tools工具条,如果把鼠标停放在按钮图
标上,在ArcScene 窗口的状态条中会出现工具条功能的说明。
中的工具按钮,从左到右,功能依次为:
导航(Navigate),点击鼠标左键不动可随意旋转场景(上下、左右),按住中间键向前/后滚动可缩小/放大场景的显示。
飞行(Fly Through),可根据鼠标的移动,控制飞行方向与速度,像鸟儿四处飞移。
再次单击鼠标,则可从当前视点沿鼠标所指方向向下方向飞行,途中,点击左键加快飞行速度,右键减速。
但是使用该工具不易控制场景。
如果飞离场景,可按键盘的Esc键取消该命令的执行状态,再使用其它工具恢复到场景中。
动态放大/缩小(Zoom In/Out),按住鼠标左键向前/后移动鼠标,可缩小/放大场景的显示。
把选定的目标放在地图窗口的中心(Center on Target),对准某一地物单击鼠标,场景自动被移动使目标位于窗口中心。
自动放大场景以对准目标(Zoom to Target),对准某一地物单击鼠标,场景自动被放大和移动,直到单击的目标位置居于窗口中心为止。
把观察点设置为鼠标的定位点(Set Observer),对准某一点单击鼠标,场景自动被放大和移动,直到单击点的位置成为观察点,即从单击鼠标的位置观察场景,如山头。
4.改变三维地形模型的显示符号,以展示地形的变化效果。
选中tin数据层,单击右键选择Properties…,选择Layer Properties对话框中的Symbology选项卡。
单击左侧的Add…按钮,弹出Add Renderers对话框,选择其中的Face elevation with graduated color ramp,并点击Add,增加在三维地形模型中对高程的分级显示。
返回前面的对话框后,单击取消Edge types和Faces 前面复选框中的对勾“√”。
接着将Color Ramp改为从红赫色到深蓝色的渐变系列(其名称为Precipitation)。
选择确定,结束符号设定。
参数设定如图4。
5.对整个场景进行垂直拉伸,以提高表面垂直变化的细微程度,有利于观察分析。
选中图层目录中的场景组Scene layers(类似于ArcMap中的Layers),用右键选择Scene Properties,打开Scene Properties对话框。
选择General选项卡,在垂直拉伸(Vertical Exaggeration)一栏中设定拉伸系数。
可手工输入数值,或从下拉框中选择已经预设的值,还可以点击Calculate From Extent按钮让系统自动根据场景范围和高程变化范围计算垂直拉伸系数。
此处选择2作为系数。
选择确定,结束设置。
显示结果如图5所示。
图4 图5
6.通过与地形模型叠加,使道路、水域都获得基准高程。
选中Roadline 数据层,右键选择图层属性,打开Layer Properties 对话框。
选择基准高程选项卡(Base Heights ),可以看到三种基准高程的取得方式(使用常量或表达式;从表面模型获得高程值;使用要素的Z 值作为高程值)。
这里,我们选择第二种,从tin 地形模型中得到道路要素的基准高程。
接下来,改变道路数据层的高程转换系数(Z Unit Conversion ),把它设置为1.05。
该值的设置可对单个图层做垂直拉伸(如图6)。
点击确定,结束设定。
同样地,选中Water 数据层,把tin 模型作为获得基准高程的表面,保持高程转换系数为1,不另外设定。
7.为二维建筑设定基准高程,并利用高度信息进行突出显示。
选中Building 数据层,右键选择图层属性,打开Layer Properties 对话框。
选择基准高程(Base Heights )选项卡,使用tin 地形模型得到建筑物的基准高程。
再选择突出显示(Extrusion )选项卡,在Extrude features in layer…项的复选框已默认被勾选。
在文本框中填写,或者点击以计算器为图标的按钮建立计算表达式。
此处,我们利用建筑本身的Thickness 字段的值作为建筑向上拉伸的高度,表达式为:[Thickness] *1。
保持Apply extrusion by 下拉框的默认选项:adding it to each feature’s minimum height 。
单击确定,完成图层属性的设置。
8.适当调整各个数据层的符号颜色和线宽,以获得清晰、美观的三维场景显示效果(如图8)。
图6 图
7
图8
三、在ArcScene中建立复杂
逼真的三维场景
三维场景
建立复杂、、逼真的
ArcScene并不能提供建立真三维模型的能力,要获得较逼真的模型效果,只能通过把点状要素的符号设置为以真三维模型表示的3D符号。
另外,场景中除了地形、建筑物、道路和水域等要素外,还需要添加树和路灯等“街道家具”来丰富场景内容。
1.把多边形的建筑要素转化为点状要素表示。
在ArcMap中的ArcToolbox,选择Data Management Tools—>Features—>Feature to Point工具。
在Feature to Point对话框中,把Building 选作输入要素,指定输出要素类的路径和名称,如F:\Spatial Analysis\Exercises\ex06\ BuildingPoint.shp(见图9)。
点击OK,执行转换。
2.从BuildingPoint.shp中选择三维外观一样的建筑对应的点,分别输出成单独的文件。
因为时间所限,本练习不可能对场景中的所有建筑一一建立不同的模型,而只是选择沿东西向布置、沿南北向布置的建筑和典型的公共建筑,代表性地实践如何产生较逼真的三维建筑。
A.使用按属性选择的方法,根据建筑点属性表中的Direction来一一筛选出三类造型不同的建筑点。
首先选择Selection菜单的Select By Attributes…,把BuildingPoint作为要素选择的数据层,建立表达式:"Direction" = 'EW'。
单击OK,执行选择。
B.选中BuildingPoint数据层,点击右键在快捷菜单中选择Data—>Export Data。
在打开的对话框中,设置输出文件的路径和名称,如F:\Spatial Analysis\Exercises\ex06\ BldPoint_EW.shp,点击OK,产生东西向建筑点的数据层。
C.重复前面两步,对另两类建筑点进行选择,但设定的表达式不同和指定不同的输出文件名。
"Direction" = 'SN'对应BldPoint_SN.shp,"Direction" = 'SN1'对应BldPoint_Pub.shp。
3.启动ArcScene,新建一空地图,使用标准工具条中的按钮添加存放在文件夹F:\Spatial Analysis\Exercises\ex06中的tin、BldPoint_EW、BldPoint_SN、BldPoint_Pub、Water、Roadline、Trees、StreetLamp等多个数据层。
4.按照前一节中的步骤4~6,对tin地形模型设置合适的显示符号,指定整个场景的垂直拉伸系数,使用tin表面,对除了tin以外的要素层设置基准高程(注意,因为这里的建筑都是点状要素,所以不必设定Extrusion值)。
5.为建筑点设置对应的3D符号。
先双击BldPoint_EW数据层的符号图例,弹出Symbol Selector 对话框,单击右下角的按钮Properties…,出现Symbol Property Editor对话框。
从Type的下拉框中选择3D Marker Symbol,自动弹出“打开”对话框(如果没有对话框打开,则单击Import按钮,导入模型),选择B_EW.3ds模型,单击打开后返回到前面的对话框。
这时,东西向建筑的三维模型自动加载在3D View中(如图10)。
再点击Set Actual Size按钮,使符号按模型的实际大小显示。
如果需要,还可以调整模型符号的其它参数,如设定各方向的旋转角、符号的大小等。
选择OK,返回Symbol Selector对话框。
可以使用Save按钮,保存新建的符号,以便重复使用。
同样地,为BldPoint_SN数据层设置B_SN.3ds模型作为符号,为BldPoint_Pub数据层设置B_Pub.3ds模型作为符号。
图9 图10
6.为StreetLamp数据层设置3D符号。
先双击StreetLamp层的符号图例,弹出Symbol Selector对话框,单击右下角带向下箭头的按钮More Symbols…,出现一系列预设的符号分类名称,从中选择3D Street Furniture一项,随后该类别中的所有定制符号的微缩图标都出现在左侧的白色列表内(如图11)。
从符号列表中选择合适的三维路灯符号,并将大小设定为30,把颜色设置为亮黄色。
7.为Trees数据层设置3D符号。
类似上一步,双击Trees层的符号图例,在Symbol Selector对话框中添加名为3D Trees的符号类别,再从中选择合适的三维树形符号,并将大小设定为30,把颜色设置为浅绿色。
8.最后,还可以对显示效果不佳的图层调整符号设定,直到满意为止。
至此,复杂、较逼真的三维场景建模基本完成(如图12)。
图11 图12
模拟飞行,,制作建模地区的飞行动画
四、在ArcScene中模拟飞行
动画是由一条或多条轨迹组成,轨迹控制着对象属性的动态改变,例如,场景背景颜色的变化,图层视觉的变化或者观察点的位置的变化。
轨迹是由一系列帧组成,而每一帧是某一特定时间的对象属性的快照,是动画中最基本的元素。
ArcScene 提供了专门的Animation工具条来辅助制作多种动画,包括制作数据动画、视角动画和场景动画。
在ArcScene中可以通过多种方法生成三维动画,这里简单介绍其中的三种。
1.添加Animation工具条。
在工具栏空白区域点击右键,选择快捷菜单中的Animation项即可加载,动画工具条如右图所示。
2.通过创建一系列关键帧(Key Frames)组成轨迹来形成动画。
动画工具条提供了创建帧的工具。
可以通过改变场景的属性(例如场景的背景颜色、光照角度等)、图层的属性(图层的透明度、比例尺等)以及观察点的位置来创建不同的帧。
然后用创建的一组帧组成轨迹演示动画。
动画功能会自动平滑两帧之间的过程。
如,可以改变场景的背景颜色由白变黑,同时改变场景中光照的角度来制作一个场景由白天到黑夜的动画。
A.点击Animation工具条的下拉箭头,选择Create Keyframe命令。
在Create Animation Keyframe对话框中,从帧类型(Type)下拉框中选择为Scene,即动画的帧由不同场景构成。
B.点击New按钮,创建一个动画,此时Destination track的下拉框中自动添加了一项,名为Scene track 1,表示动画名称,且该帧的名称默认为Scene keyframe 1。
C.点击Create,动画第一帧的场景属性设置完毕,这时当前窗口中的场景被记录为动画的第一帧(如图13)。
D.在不关闭对话框的同时,改变场景的位置、视角,或对场景进行缩放。
返回对话框,改变场景属性,保持Destination track 仍为Scene track 1,帧的名称默认为Scene keyframe 2。
随后点击Create取第二帧。
E.根据需要抓取全部所需的帧,抓取完全部的帧之后,点击Close关闭对话框。
F.点击Open animation controls按钮(在Animation工具条的最右侧的按钮),弹出动画控制工具条(Animation Controls)。
点击该工具条最左边的Play按钮,预览动画。
图13
3.通过录制导航动作或飞行创建动画。
点击动画控制工具条的录制按钮开始录制,在场景中通过导航工具进行导航操作,或通过飞行工具进行飞行,操作结束后点击录制按钮停止录制。
场景中的导航操作或飞行动作的过程将被该工具录制下来,从而形成动画。
4.通过捕捉不同视角,并自动平滑视角间的过程以创建动画。
通过导航或其它工具将场景调整到某一合适的视角,用Animation工具条的捕捉视角按钮(位于工具条中间的按钮),然后将场景调整到另一个合适的视角,再次使用捕捉视角命令,依次捕捉多个视角。
动画功能会自动平滑两视角间的过程,形成一个完整的动画过程。
5.使用Animation Manager命令编辑和管理动画属性。
点击Animation工具条的下拉箭头,选择Animation Manager命令,弹出动画管理器(如图14)。
在管理器中可编辑关键帧和轨迹,也可改变帧的时间属性,并能预览动画播放效果。
图14
6.保存动画。
点击Animation工具条的下拉箭头,选择Save Animation File命令,可以将制作的动画存储为独立的ArcScene动画文件(*.asa),与其它场景文档共享。
也可选择Animation 工具条的Export to Video项,导出为标准的动画文件即AVI文件,为第三方软件所调用。