arcgis10-通视分析
- 格式:doc
- 大小:2.43 MB
- 文档页数:13
通视分析
Demo1 输入视线分析通视性
打开地图文档\gis_ex10\ex21\ex21.mxd,激活data frame1,该视图有点状图层“观察点”,线状图层“道路”,TIN 图层“地形”(见图1)。
鼠标双击data frame1,在Data Frame Properties 话框的General 标签中将Map Units 和Display Units 均改为Meters。
在3D Analyst 工具条中,点击产生视线按钮(Create Line of Sight),出现Line Of Sight 对话框:Define height offsets
Observer offset:1 观察点的相对高程,键盘输入
Target offset:1 目标点的相对高程,键盘输入
一旦确定了观察点和目标点的相对高程,就可以连续进行视线分析。
此时,屏幕上出现十字光标,可以在三维表面上指定观察点和目标点。
先用鼠标将十字光标移到观察点处,按下左键不放,再把鼠标十字光标移到目标点处,松开鼠标的左键,系统根据用户观察点和目标点的位置,绘制出一条连接线段。
这条线往往是红绿相间的,绿色表示连线上的可视部分,红色表示连线上的不可视部分(见图2)。
图 1 data frame1 的显示
图 2 两点间的视线输入
需注意,不能仅仅根据连线的颜色判断两点之间是否可视,因为连线的上的不同颜色,仅仅是反映当目标点在连线上的某一点时,是否可视,并不是直接反映观察点(起点)和目标点(终点)之间是否可视。
要判断观察点(起点)和目标点(终点)之间是否可视,要看ArcMap 窗口最下方的状态栏中的文字显示,如显示Target is visible 表明两点间可视;如显示Target is not visible 表明两点间不可视。
利用基本工具条中的Select Element 按钮,可以调整起点、终点的位置,按键盘中的Delete 键,可以删除,再次选用按钮,可以再添加。
Demo2 基于视点的视域分析
2.1 将TIN转换为栅格
本练习将分析观察点的可视地表范围、沿道路的可视地表范围。
主菜单中选用“地理处理-环境…”,进一步设置:
工作空间-当前工作空间:\ex21\temp
工作空间-临时工作空间:\ex21\temp
输出坐标系:与输入相同
处理范围:与图层地形相同
按确定返回,启用ArcToolbox中选用菜单3D Analyst Tools /转换/由TIN转出/TIN转栅格,
输入TIN:地形
输出栅格:\ex21\temp \surf1
输出栅格类型:float
方法:linear
采样距离:cellsize 10
Z因子:1
按确定返回,不规则三角网“地形”转换为栅格数据集surf1。
2.2 产生单个观察点的视域栅格
选择菜单ArcToolbox中选用菜单3D Analyst Tools /可见性/视域,设置对话框:
Input surface:surf1 选择三维表面图层名
Observer points:观察点选择观察点图层名(此处为“观察点”)
Output raster:visible1 输入产生栅格数据的名称,路径按初始设定
Z factor:1 纵向比例不夸张
按OK 键继续,系统产生栅格状视域分析结果图层visibile1,自动分成2 类(见图3),Not Visible:表示站在观察点不可见的范围,默认为红色(地图中较深颜色),Visible:表示站在观察点的可见范围,默认为绿色(地图中较浅颜色)
图3观察点的视域分析结果(不设置观察点的高程)
2.3 改变观察点的高程
基于观察点的视域分析与前面使用过的视线分析不同。
视线分析可以由用户指定观察点和目标点的相对高程。
视域分析中,需预先设定部分参数,其中有观察点的高度。
在前面进行的视域分析中,没有作任何特别的设置,系统默认观察点的高度是比所在位置三维表面高 1 个单位。
例如,上述练习中,观察点所在处的三维表面的高程为78 米,观察点的高程即为79 米。
用户可以在观察点图层的属性表中设置特定的字段,设定观察点的高程。
常用的字段有:
Spot:指定观察点的绝对高程值
OffisetA:三维表面高程不变,设定观察点的高程偏移值
OffsetB:观察点高程不变,设定三维表面的高程偏移值
打开“观察点”专题的属性表“Attribute of 观察点”。
确认该表处于不可编辑状态,选用菜单Options / Add field…,出现add Field 对话框,为属性表“Attributeof 观察点”增加一个新的字段(若原文件已有该字段则不需要增加),键盘输入:
Field Name:Spot
Data Type:Short Integer
Precision:4
按OK 键确认后新字段添加完毕,还要为该字段添加数据,在Editor 工具栏中选择Editor / Start Editing,输入Spot 字段的数值90,选用菜单Editor / Stop Editing,出现提示“Save Editing?”,选“是(Y)”确认,返回地图窗口,ArcToolbox中选用菜单3D Analyst Tools /可见性/视域,出现设置对话框:Input surface:surf1 选择三维表面图层名
Observer points:观察点选择观察点图层名(此处为“观察点”)
Output raster:visible2 输入产生栅格数据的名称,路径按初始设定
Z factor:1 纵向比例不夸张
按OK 键继续,系统产生栅格状视域分析结果图层visibile2,(见图4)。
图 4 观察点绝对高程为90 米时的视域显示
2.4 两次视域分析结果的比较
前一次不作任何设置,观察点高程仅仅是比对应的三维表面高1 米。
后一次则是设定了观察点的绝对高程为90 米,得到的分析结果略有差异。
同样方法也可以在观察点的属性表中增加字段OffsetA 和OffsetB,来调整观察点和地形的相互关系。
读者可以自行试验。
如果几个字段同时出现在属性表中,系统根据三者的之间的相对关系进行计算,再得到对应的观察点高度。
Demo3 基于路径的视域分析
data frame1 中,已经有了TIN 图层“地形”、线状图层“道路”、点状图层“观察点”。
先将线状图层“道路”转化为3D Shapefile,ArcToolbox中选用菜单3D Analyst Tools /功能性表面/插值shape,出现设置对话框,做出如下设置:
输入表面:地形
输入要素类:道路下拉选择路径图层名
输出要素类:3D_road
Z因子:1
方法:linear
按OK 键继续,在data frame1 中就有了一个新的图层3D_road。
关闭道路图层,选择3D_road中南北走向的那条道路,在ArcToolbox中选用菜单3D Analyst Tools /可见性/视域,,出现如下对话框:输入栅格:surf1 下拉选择作为三维表面的图层名
输入观察点或观察折线要素:3D_road 下拉选择观察点的图层名
输出栅格:visible3 产生栅格数据的名称,保存路径为初始设定
Z 因子:1 纵向比例不夸张
图5 基于路径的视域分析结果(南北向道路)
按OK键确定,系统经过一段时间的计算,得到视域分析的结果栅格图层Visibile3(见图6)。
视域分析不仅判断三维表面上是否可见的范围,也可以记录可视的范围内每一栅格单元可以被观察到的次数。
计算得到的结果是栅格图层,其中每个单元的值表示沿着观察路径该单元可以被看到的次数,观察的总次数应该等于观察路径的总长度除以栅格单元的大小,即观察者沿者路径移动的步长由栅格单元的大小决定。
打开属性表Attribute of Visible3,显示如下:
Value(取值即被看到的次数)Count(取该值的栅格共有几个)
0 722
1 111
2 71
3 88
4 88
……
……
209 1
211 1 可以返回data frame1,进入图层符号设置对话框,按观察到的次数多少进行分类显示。
本练习的路径视域分析是对该图层中一条道路计算可视性,在选择集中只有一个3D Shapefile线要素。
如果有多个线要素,计算结果是沿着多条道路观察到的栅格次数的累计相加。
Demo4 根据三维线要素分析通视性
4.1 地形表面上已有视线的通视分析
打开ex21a.sxd,“公园地形”是用TIN表示的某公园内部的地形,观察点位于公园外部山脚,目标点位于公园内某一山丘顶部。
“观察线”是依据已知观察点、目标点的X、Y、Z坐标值输入的一条3D Shapefile 线要素。
主菜单中选用“地理处理-环境…”,进一步设置:
工作空间-当前工作空间:\ex21\temp
工作空间-临时工作空间:\ex21\temp
输出坐标系:与公园地形相同
处理范围:默认
按确定返回,启用ArcToolbox中选用菜单3D Analyst Tools \可见性\通视分析,继续设置:
输入表面:公园地形
输入线要素:视线
输出要素类:los1.shp
输出障碍点要素类:obs1.shp
按确认,计算生成线要素los1、点要素obs1。
打开los1属性表,可以看到字段TarlsVis,如果取值1,表示通视,取值0即不通视。
点要素obs1是空的,遮挡视线的障碍点不存在。
图6 仅考虑公园内山体地形遮挡的通视分析
4.2 多面体要素参与通视分析
公园外部拟建立一组建筑物,建成后是否影响原有的通视性,需要计算判断。
加载buildings.shp,该数据是二维的,进入buildings图层属性\基本高度,设置:在自定义表面上浮动:\ex21\hillbase3,进入“拉伸”选项,勾选“拉伸图层中的要素”,在“拉伸值或表达式”文本框右侧点击计算器按钮,选择左侧字段,输入表达式[height] *1,按确定返回“拉伸”选项对话框。
在“拉伸方式”下拉表中选择“将其添加到各要素的最大高度”,按确定,拟建建筑在地表模型上以三维方式显示,启用ArcToolbox中选用菜单3D Analyst Tools \转换\3D图层转要素类,继续设置:
输入要素图层:buildings
输出要素类:\ex21\temp\bldg3D
按确定,产生多面体要素类bldg3D,移除buildings,启用ArcToolbox中选用菜单3D Analyst Tools \可见性\通视分析,继续设置:
输入表面:公园地形
输入线要素:视线
输入要素:bldg3D
输出要素类:los2.shp
输出障碍点要素类:obs2.shp
图7 多边形转换为多面体
按确认,计算生成线要素los2、点要素obs2。
打开los2属性表,可以看到字段TarlsVis取值都为0,即不通视,改组建筑物建成后,预定的视线将受遮挡。
点要素obs2是从观察点出发,产生遮挡的第一点,在建筑物外墙。
图8 多面要素与三维表面通视分析
Demo5 天际线与建筑限高
5.1 基于天际线的三维障碍面
打开ex21b.sxd,如图9所示。
观察点周边可能出现建筑物,按当地景观规划要求,从观察点看山体,新建建筑物不得遮挡天际线,为此限制建筑物高度。
主菜单中选用“地理处理-环境…”,进一步设置:工作空间-当前工作空间:\ex21\temp
工作空间-临时工作空间:\ex21\temp
输出坐标系:与输入相同
处理范围:默认
按确定返回,启用ArcToolbox中选用菜单3D Analyst Tools /可见性/天际线,继续设置:
输入观察点要素:观察点
输入表面:公园地形
虚拟表面半径:0米
虚拟表面高程:0米
要素细节层次:full_detait
输出要素类:Skyline.shp
图9 观察点和地形
确认,产生3D Shapefile Skyline,这是从观察点环视一圈,看到的三维天际线。
3D Analyst Tools /可见性/天际线障碍,继续设置:
输入观察点要素:观察点
输入要素:Skyline
输出要素类:SkBarr.shp
最小半径:0米
最大半径:0米
闭合:不勾选
基础高程:线性单位0米
投影到平面:不勾选
按确定,产生多面体SkBarr.shp,由天际线和观察点组合而成(图10)。
如果某建筑物高于该多面体,就会对观察点看到的天际线产生遮挡。
图10天际线障碍面
5.2 获取位于障碍面表面的网格点
启用ArcToolbox中选用菜单3D Analyst Tools /转换/由TIN转出/TIN转栅格,
输入TIN:公园地形
输出栅格:\ex21\temp \HllGrd
输出栅格类型:float
方法:linear
采样距离:cellsize 10
Z因子:1
按确定返回,不规则三角网“公园地形”转换为栅格数据集HllGrd。
ArcToolbox/转换工具/由栅格转出/栅格转点,输出点要素:grdpnt.shp。
按确定,产生shapefile grdpnt。
进入grdpnt图层属性/拉伸,拉伸图层中的要素:勾选
拉伸值或表达式:120
拉伸方式:将其添加到各要素的基本高度
按确定,显示结果如图11,选用3D Analyst Tools /转换/3D图层转要素,继续设置:
输入图层:grdpnt
输出要素类:3Dline.shp
图11 格网点拉伸结果
按确定,网格点变为三维线(显示结果和拉伸一致),选用3D Analyst Tools /3D要素/3D线与多面体相交,继续设置:
输入线要素:3Dline
输入多面体要素:SkBarr
连接属性:IDS_ONL Y
输出点:Brr3Dpnt.shp
确定,生成shapefile Brr3Dpnt,这些点均在三维障碍面的表面(如图12).
图12 位于障碍面表面的格网点
5.3 产生限制建筑相对高度的栅格
ArcToolbox/转换工具/转为栅格/点转栅格,继续设置:
输入要素:Brr3Dpnt
值字段:Shape.Z
输出栅格数据集:BrrGrd
像元分配类型:mean
优先级字段:none
像元大小:\temp\hllgrd 与地形栅格相同
确定,障碍面上的三维点转换成栅格BrrGrd。
3D Analyst Tools /栅格计算/减,继续设置:
输入栅格数据或常量值1:BrrGrd
输入栅格数据或常量值2:Hllgrd
输出栅格:temp\BldgHgt
确定,视线障碍栅格和公园地形栅格相减,得到结果BldgHgt,其单元值为相对于地形,对建筑物高度的限制(图13),最低为0(出现负值是计算误差,负值处靠近天际线、观察点,没有坡度的视线方向),最高为18.4m。
图13 计算得到建筑限高栅格
6 小结
视域分析与视线分析不同:
视域分析用于确定从三维表面上的某一点向周围观察,可以看到的范围,也可以沿着某一路径运动,可以看到的范围。
可以依托TIN或Grid。
临时输入是视线,输入的是图形Graph,计算结果也是图形。
视域分析比通视分析复杂,只能依托于栅格表面,有观察点和观察路径两种方法。
如果是观察点,应该是矢量要素,有高程属性。
如果是观察路径,应该是三维线要素,其高程可以沿着路径而变化。
作视域分析前,应在观察点的图层属性表中添加相关的字段,输入高程值。
否则,默认的观察点高程就是比对应的三维表面高程高 1 个坐标单位。
视域分析的结果是栅格图层,每一栅格单元的取值表示该点被观察到的
次数。
如果是观察点,计算结果栅格只有0 和 1 两种取值。
如果是路径,表示在观察路径上每前进一步(移动的距离相当于一个栅格单元),作一次观察点分析,走完全部路径,每个栅格单元的取值累计相加,结果还是一个栅格,观察到的次数累加,因此路径视域分析也是多个单点分析的叠合、累加,因此计算时间较长。