通过通视分析工具可根据在 3D 空间中相对于某表面或多面体要素类提供的障碍的位置,计算各线要素的第一个和最后一个折点之间的通视性。前一个折点定义为观测点,后一个折点为观测目标。沿着这些点之间的视线确定可见性,同时忽略有两个以上折点的线中的任何中间折点。

应用于观察点位置的默认偏移为 1 的表面为 2D 线插入观测点和目标点的高度值,以便其高于表面。而 3D 线要素的观察点和目标高程从要素几何单独获得。通过添加名为 OffsetA 和 OffsetB 的字段可将其他偏移应用到观测点和目标点。OffsetA 中的值将添加到观察点的高程,而 OffsetB 将添加到目标。

如果未提供任何多面体要素,则输出线将叠加到表面上。如果提供多面体要素,其要素将计入沿表面的可见性分析,并且生成的线将直接从观察点延伸到目标位置。

输出 3D 线为完全可见或不可见的每条通视线存储一个要素,为部分可见的每条通视线存储两个要素。SourceOID 字段表示用于定义通视线的输入要素,VisCode 字段中的值表示通视线的可见性,其中 1 表示可见,2 表示不可见。TarIsVis 字段表示是否能从观察点看到目标点,值 1 表示可见、0 表示不可见。另添加一个名为 OBSTR_MPID 的字段,以标识阻碍通视线的多面体。如果目标被表面阻碍,则该字段的值为 -1。如果目标可见,则值为 -9999。

可选择生成一个障碍点要素类,以使阻碍目标点对观察点可见性的通视线的第一个位置可见。如果通视线在接触要素之前被表面的某部分阻碍,则障碍点将落在表面上。如果视线在接触表面上的任意位置之前已接触到要素,则障碍点将位于实际交点处,并且视线的其余部分会被视为不可见。它包含一个 SourceOID 字段,可标识与障碍物相关联的输入线。

曲率和大气折射校正

在执行通视线计算时,曲率选项会根据地球曲率进行调整。只能在输入表面的空间参考位于投影坐标系统中、且 z 坐标单位已定义时使用。

启用折射选项可补偿大气折射(强迫穿过大气的光线弯曲)的影响。此偏差的量受气压和密度、湿度、温度和高程的变化控制。同曲率一样,校正大气折射要求表面的空间参考位于投影坐标系中且其 z 坐标单位已定义。

用来进行校正的公式为:

Z = Z

0

 + D

2

(R - 1) ÷ d

其中:

  • Z - 计入大气折射影响后的校正高程。
  • Z0 - 观察位置的表面高程。
  • D - 观测要素和观测位置之间的平面距离。
  • d - 地球的直径(12740 千米)。
  • R - 光的折射系数。默认值 0.13 适用于白天天空晴朗条件的标准气压下、高程范围为 40 到 100 米的位置 (Yoeli, The Making of Intervisibility Maps with Computer and Plotter, Cartographica 22:88–103, 1985)。可使用不同的折射值模拟各种大气条件和高程对可见性的影响。

将视域和视点用于可见性分析

视域可识别输入栅格中能够从一个或多个观测位置看到的像元。输出栅格中的每个像元都会获得一个用于指示可从每个位置看到的视点数的值。如果只有一个视点,则会将可看到该视点的每个像元的值指定为 1,将所有无法看到该视点的像元值指定为 0。视点要素类可包含点或线。线的结点和折点将用作观测点。

为什么计算视域?

视域分析工具在您想要知道可见对象的情况时很有用,举例来说,如果将水塔放置在特定位置,则从地表上的哪些位置可以看到水塔,或者从道路上将看到什么风景?

在以下示例中,识别了观测塔的视域。高程栅格数据显示土地的高度(较浅的阴影表示较高的高程),并且观测塔被标记为绿色三角形。观测塔的高度可在分析中指定。绿色像元可从观测塔处看到,而红色像元则不可见。

通过图层透明度,可在高程栅格数据下面显示山体阴影栅格数据,然后合并视域分析的输出,从而显示可见性与地形之间的关系。

将视域与山体阴影一起显示

您不仅可以确定哪些像元可从观测塔处看到,而且在您拥有多个观测点的情况下,还可以确定哪些视点可以看到每一个被观测的位置。了解哪个视点能够看到哪些位置,可对决策产生影响。例如,在为垃圾填埋场选址的显示效果研究中,如果确定只能从土路而不是主要和次要道路看到所提议的垃圾填埋场,则它可能被认为是适合的位置。

用于视域和视点分析的工具

有两个工具可用于可见性分析,即视域视点。它们均可用来生成输出视域栅格数据。另外,视点的输出会精确识别可从每个栅格表面位置看到哪些视点。

视域工具

视域工具会创建一个栅格数据,以记录可从输入视点或视点折线要素位置看到每个区域的次数。该值记录在输出栅格表的 VALUE 项中。输入栅格上已指定 NoData 的所有像元位置在输出栅格上被指定为 NoData。

  • 当使用输入折线时,沿每条输入弧的各个结点和折点都会作为单独的观测点进行处理。输出栅格的 VALUE 项中的值给出了对于每个像元可见的结点和折点数。
  • 如果输入视点要素表中不存在 SPOT 属性项,则会使用双线性插值确定每个观测点的高程。如果距某观测点或折点最近的栅格像元具有 NoData 值,该工具将无法确定它的高程。在这种情况下,该观测点将从视域分析中排除。
  • 观测点与其他像元之间介入的 NoData 像元将被计为不可见,因此不会影响可见性。

视域的应用示例

下表介绍了一些可使用视域工具回答的问题类型的示例:

问题

视域选项

从 15 米高的火警瞭望塔可看到哪些区域?

点数据,OFFSETA

从现有高速公路可看到所提议的垃圾堆置场的频率?

线

某系列中的下一个通信中继塔应位于何处?

点数据,OFFSETA、OFFSETB、VERT1、VERT2、AZIMUTH1、AZIMUTH2

视域工具的应用

视域示例

“视域”工具的一个应用示例是识别研究区域中可看到所提议的传输线塔的区域。分析的输入如下:

  • 一个表面高程栅格
  • 一个用于记录冠层高度(即每个位置的地表上植被顶部的高度)的栅格
  • 一个线要素类(其中每条线的折点表示要支撑电缆的塔的位置)

步骤 1:使用加工具将植被高度栅格添加到表面高程栅格。

  • 输入栅格数据或常数值 1:canopy_height

    输入栅格数据或常数值 1:elev_surface

    输出栅格:elev_canopy

步骤 2:在视域工具中执行视域分析。

  • 输入栅格:elev_canopy

    输入视点或视点折线要素:powerline

    输出栅格:elev_viewshed

    Z 因子:{default}

    使用地球曲率校正选项:{default}

    折射系数:{default}

此操作的结果是视域栅格数据。

视点分析工具

视点工具会存储关于哪些观测点能够看到每个栅格像元的二进制编码信息。此信息存储在 VALUE 项中。

要显示只能通过视点 3 看到的所有栅格区域,打开输出栅格属性表,然后选择视点 3 (OBS3) 等于 1 而其他所有视点等于 0 的行。只能通过视点 3 看到的栅格区域将在地图上高亮显示。

  • 要将线状数据与视点结合使用,使用数据管理 > 要素工具集中的要素折点转点工具对线要素类进行转换。点被限制为 16 个。

  • 如果要素属性表中不存在 SPOT 属性项,则会使用双线性插值确定每个观测点的高程。如果距某观测点最近的输入栅格像元具有 NoData 值,该工具将无法确定它的高程。在这种情况下,该观测点将从可见性分析中排除。

  • 观测点与其他像元之间介入的 NoData 像元将被计为不可见,因此不会影响可见性。

视点的详细信息

视点会存储关于哪些观测点可以看到每个栅格像元的二进制编码信息。此信息存储在 VALUE 项中。

要显示只能通过视点 3 看到的所有栅格区域,打开输出栅格属性表,然后选择视点 3 (OBS3) 等于 1 而其他所有视点等于 0 的行。只能通过视点 3 看到的栅格区域将在地图上高亮显示。

栅格 OBSn 项

除了栅格属性表中的标准项 VALUE 和 COUNT 外,还会在输入点数据集中创建对应于每个视点的新项。这些项为 OBS1...OBSn,其中 n 是视点数。它们按以下方式进行定义:

ITEM NAME    WIDTH    OUTPUT    TYPE    N.DEC
OBSn 2 2 B -

这些项通过每个“输入视点要素”视点记录每个像元的可见性。例如,可通过视点 8 (featurename# = 8) 看到的每个栅格像元将在名为 OBS8 的项中包含值 1。无法通过观测点看到的像元将被指定值 0。输入栅格上已指定 NoData 的像元位置会在输出栅格上被指定为 NoData。

可使用 OBSn 项识别那些可从特定观测点看到的栅格像元。这与之前的情况稍有不同,之前是根据 VALUE 参数所做的选择。这种情况下,可通过视点 1 和视点 8 看到的像元也可通过其他视点(这种情况下,它们将各自具有不同的值)看到。

例如,要显示可通过观测点 1 和观测点 8 看到的所有区域,打开栅格属性表,然后选择视点 1 (OBS1) 和视点 8 (OBS8) 均等于 1 而其他所有视点均等于 0 的行。

量化显示效果

另外,也可以使用工具输出中的信息来执行显示效果分析。例如,您可通过在输入栅格范围内的每个重要的视觉要素处放置一个观测点,来确定某表面上所有位置的显示效果。此类点可能包括城市垃圾场、汽车修理厂、当地公园和该地区内的各个输电塔等。

运行视点之后,使用输出栅格的表中的 OBSn 项,来选择那些能够看到每个视觉要素的像元位置。使用各种其他工具中的任何一种工具,根据每个视点的显示效果和权重累计正得分或负得分。对所有观测点进行评估之后,那些得分最高的像元位置将呈现出最佳的显示效果。

视点的应用示例

下表介绍了一些可使用视点工具回答的问题类型的示例:

问题

视点选项

如果给定一组火警瞭望塔位置,则看到整个研究区域所需的最少塔数是多少?

点数据,OFFSETA

哪些栅格位置只能看到垃圾堆置场和输电塔 3?

点数据

如何确定哪些表面位置具有最佳视野?我想要根据每个地表要素的显示效果为某个视域内的每个地表要素指定不同的权重。

点数据

视点工具的应用

控制可见性分析

通过在要素属性数据集中指定不同的项,可限制所检查的栅格区域,例如,观测点高程值、垂直偏移、水平和垂直扫描角度,以及扫描距离。共有九项:SPOT、OFFSETA、OFFSETB、AZIMUTH1、AZIMUTH2、VERT1、VERT2、RADIUS1 和 RADIUS2。

下图以图形方式描绘了可见性分析的控制方式。观测点在左侧的山顶上(在图中的 OF1 处)。视域的方向在朝向右侧的圆锥体内。可控制偏移观测点的量(例如,塔的高度)、观察的方向以及可从地平线观察的高低程度。

用于控制视域分析的参数

如果视点要素数据集是点要素类,则每个观测点都可具有属性表中的唯一一组观测约束。如果视点要素数据集是折线要素类,则沿输入折线的每个折点都会使用属性表的折线记录中包含的相同观测约束。

只要这些项为数值形式,其定义就可能不同。如果某项不存在,将使用默认值。

SPOT

SPOT 项用来定义观测点的表面高程。

偏移

偏移指的是要添加到表面上某个位置的 z 值中的垂直距离(以表面单位为单位)。

有两个偏移项,一个用于定义将被添加到观测位置的高程,另一个用于定义将被添加到每个像元以在分析可见性时考虑的内容。

OFFSETA

OFFSETA 项将以表面单位指示要添加到观测点 z 值的垂直距离。

如果 OFFSETA 存在于要素属性表中,则它的值(如果存在)会被添加到 SPOT 高程中;否则,它将被添加到插值的表面 z 值中。OFFSETA 值必须为正。如果不存在 OFFSETA 项,则默认值为 1。

OFFSETB

OFFSETB 项将以表面单位指示要添加到各像元 z 值的垂直距离,因为分析可见性时需要考虑该距离。

如果要素属性表中存在 OFFSETB 项,则在分析此项的值以确定可见性时会将其添加到各个像元位置的表面 z 值。该值必须为正。如果未在要素属性表中找到任何 OFFSETB 项,则将默认为 0。

方位角

方位角项用于定义扫描的水平角限制。扫描将从第一个方位角到第二个方位角按顺时针方向进行。角度值以度为单位,介于 0 至 360 度之间,其中 0 指向北。

AZIMUTH1

AZIMUTH1 项定义扫描范围的起始角度。

如果要素属性表中不存在此项,则值将默认为 0。

AZIMUTH2

AZIMUTH2 项定义扫描范围的结束角度。AZIMUTH2 的值必须大于 AZIMUTH1 的值。

如果要素属性表中不存在此项,则值将默认为 360。如果 AZIMUTH1 和 AZIMUTH2 均未定义,则默认为完整的 360° 扫描。

垂直角

垂直角定义扫描的垂直角限制。角度以介于 90 和 -90 之间的度数表示,其中正值表示水平面之上的角度,而负值则表示水平面以下的角度。水平面(0 度)由观测点的 z 值和 OFFSETA 值共同定义。两个垂直角均可为负。

VERT1

VERT1 项用于定义扫描的水平角上限。

如果要素属性表中不存在此项,则值将默认为 90。

VERT2

VERT2 项用于定义扫描的水平角下限。VERT2 的值必须小于 VERT1 的值。

如果要素属性表中不存在此项,则值将默认为 -90。

半径

在识别可从各观测点看到的区域时,可使用半径项限制搜索距离。超过某一特定距离的像元可从分析中排除。

RADIUS1

RADIUS1 项用于定义确定可见性的起始距离。请注意,RADIUS1 搜索距离之内的像元在输出栅格中不可见,但仍会妨碍 RADIUS1 和 RADIUS2 之间像元的可见性。

默认 RADIUS1 距离为 0。

RADIUS2

超出 RADIUS2 搜索距离的像元将从分析中排除。RADIUS2 的值应大于 RADIUS1 的值。

默认 RADIUS2 距离为无穷大。

平面与三维距离

默认情况下,限制距离 RADIUS1 和 RADIUS2 将被解释为三维视线距离。为确保坡面距离计算正确,地面单位和表面 z 单位必须使用相同的测量单位。要将 RADIUS1 和 RADIUS2 作为二维平面距离处理,可在值的前面插入一个负号 (-)。

例如,如果将 RADIUS1 设置为 -1000,将 RADIUS2 设置为 -9000,视域将分析从视点进行平面测量的 1,000 到 9,000 地面单位之间的表面区域。

默认设置

下表显示了用于控制可见性分析的选项的默认设置:

选项

默认设置

SPOT

使用双线性插值进行估计

OFFSETA

1

OFFSETB

0

AZIMUTH1

0

AZIMUTH2

360

VERT1

90

VERT2

-90

RADIUS1

0

RADIUS2

无穷大

默认视域设置

曲率和折射校正

使用地球曲率校正选项来校正地球的曲率和折射。在存在表面的投影信息时进行校正。此外,地面单位和表面 z 单位必须为英尺、米或单位/米。用来进行校正的公式如下:

                      Dist

2

               Dist

2

 Z

actual

 = Z

surface

 - --------- + R

refr

 * ---------
Diam

earth

           Diam

earth

  • 其中:

    Dist:观测要素与被观测位置之间的平面距离。

    Diam:地球的直径。

    Rrefr:光的折射系数。

地球直径 (Diamearth) 的默认值被定义为 12,740,000 米,折射系数 (Rrefr) 的默认值为 0.13。不同的 Rrefr 值可列为在可见性方面的一种大气条件变化因素。

ArcGIS 通视分析工作原理的更多相关文章

  1. Spring Boot 揭秘与实战 源码分析 - 工作原理剖析

    文章目录 1. EnableAutoConfiguration 帮助我们做了什么 2. 配置参数类 – FreeMarkerProperties 3. 自动配置类 – FreeMarkerAutoCo ...

  2. Struts2 源码分析-----工作原理分析

    请求过程 struts2 架构图如下图所示: 依照上图,我们可以看出一个请求在struts的处理大概有如下步骤: 1.客户端初始化一个指向Servlet容器(例如Tomcat)的请求: 2.这个请求经 ...

  3. 每天用Mybatis,但是Mybatis的工作原理你真的知道吗?

    近来想写一个mybatis的分页插件,但是在写插件之前肯定要了解一下mybatis具体的工作原理吧,于是边参考别人的博客,边看源码就开干了. 核心部件: SqlSession Executor Sta ...

  4. ThreadLocal 工作原理、部分源码分析

    1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...

  5. Mina工作原理分析

    Mina是Apache社区维护的一个开源的高性能IO框架,在业界内久经考验,广为使用.Mina与后来兴起的高性能IO新贵Netty一样,都是韩国人Trustin Lee的大作,二者的设计理念是极为相似 ...

  6. SPI协议及工作原理分析

    说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial ...

  7. zookeeper源码分析(一) 工作原理

    来自:http://www.codedump.info/?p=207 阅读zookeeper代码一段时间(注:是很长一段时间,断断续续得有半年了吧?)之后,我要开始将一些积累下来的东西写下来了,鉴于我 ...

  8. springmvc工作原理以及源码分析(基于spring3.1.0)

    springmvc是一个基于spring的web框架.本篇文章对它的工作原理以及源码进行深入分析. 一.springmvc请求处理流程 二.springmvc的工作机制 三.springmvc核心源码 ...

  9. 结合 category 工作原理分析 OC2.0 中的 runtime

    绝大多数 iOS 开发者在学习 runtime 时都阅读过 runtime.h 文件中的这段代码: struct objc_class { Class isa  OBJC_ISA_AVAILABILI ...

随机推荐

  1. 通过命令行安装Android app

    手动安装安卓app的命令为:adb install -r C:\Users\Lihao\workspace\Appium_Demo\apps\app_F_1.3.0.apk

  2. R提高篇(一): 输入输出

    目录: 文本输出 图形输出 数据输入 数据框输出 文本导入 Excel导入 文本输出 语法: sink(file = NULL, append = FALSE, type = c("outp ...

  3. phonegap_android配置文档

    百度文库 http://wenku.baidu.com/link?url=C9l51orfpSrjMEK69-Yjh9hmmaqQj0DicfnYs5FSRhkdy8S62x1aBBwstFH-tJ9 ...

  4. [转]Linux环境下查看线程数的几种方法

    1.cat /proc/${pid}/status 2.pstree -p ${pid} 3.top -p ${pid} 再按H,或者直接输入 top -bH -d 3 -p  ${pid} top ...

  5. (转)关于List中FindAll用法的一些简单示例

    本文转载自:http://blog.csdn.net/luoxufeng/article/details/6925982 using System; using System.Collections. ...

  6. 51nod1253 Kundu and Tree

    树包含N个点和N-1条边.树的边有2中颜色红色('r')和黑色('b').给出这N-1条边的颜色,求有多少节点的三元组(a,b,c)满足:节点a到节点b.节点b到节点c.节点c到节点a的路径上,每条路 ...

  7. 【linux】之安装mysql常用配置

    下载mysql地址 http://dev.mysql.com/downloads/mysql/ 选择下面这个 查看是否存在mysql安装包 rpm -qa|grep -i mysql 删除mysql安 ...

  8. Oracle-单表合并列

    表基本结构 合并列 select t.student,decode(t.java,'','','java') 科目, t.java from student t union select t.stud ...

  9. 黄聪:wordpress如何扩展TinyMCE编辑器,添加自定义按钮及功能

    在functions.php文件里面添加: add_action( 'admin_init', 'my_tinymce_button' ); function my_tinymce_button() ...

  10. (VS) TFS lost mapping suddenly.

    家里的网络不是很稳定.今天突然发现 TFS 上所有的 mapping都突然没有了. 尝试去remapping,在Source Control Explorer 中右击源文件,然后选择 Advanced ...