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

本主题中涵盖的概念适用于视域视点分析工具。 可见性分析工具测地线视域与这些工具类似,但在工具行为方面存在一些差异。 测地线视域工具将所有数值字段视为观测点属性,而视域视点分析工具仅将来自输入观察点要素属性表的固定字段名称(如 OFFSETAOFFSETB 等)视为观测点属性。

视域用于标识可以从一个或多个观测点位置看到的输入栅格中的像元。 输出栅格中的每个像元都接收一个值,该值指示可以从每个位置看到的观察点数量。 如果您仅具有一个观测点,则每个可以看到该观测点的像元会被赋予值 1。 所有无法看到该观测点的像元会被赋予值 0。 观测点要素类可包含点或线。 线的结点和折点将用作观测点。

为什么计算视域?

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

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

视域示例

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

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

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

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

有多种工具可用于可见性分析。 本主题主要讨论视域视点分析。 两者皆可用于生成输出视域栅格。 另外,视点的输出会精确识别可从每个栅格表面位置看到哪些视点。

视域工具

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

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

视域的应用示例

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

问题视域选项

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

点数据,OFFSETA

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

线

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

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

视域工具的应用

视域示例

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

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

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

  • 输入栅格或常量值 1canopy_height

    输入栅格或常量值 1elev_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、OBS2...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?

点数据

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

点数据

视点分析工具的应用

控制可见性分析

通过在要素属性数据集中指定各种项目(例如观测点高程值、垂直偏移、水平和垂直扫描角度以及扫描距离),可以限制检查的栅格区域。 共有 9 项: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 单位必须以英尺、米或单位/米为单位。 用来进行校正的公式如下:

Dist2 Dist2 Zactual = Zsurface - --------- + Rrefr * --------- Diamearth Diamearth

  • 其中:

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

    Diam:地球的直径。

    Rrefr:光的折射系数。

将地球直径的默认值 (Diamearth) 定义为 12,740,000 米。 折射系数的默认值 (Rrefr) 为 0.13,此值基于高斯折射系数 (Brunner, F. K., 1984)。 不同的 Rrefr 值可列为在可见性方面的一种大气条件变化因素。

参考资料

Brunner, F. K. (1984), Geodetic Refraction: Effects of Electromagnetic Wave Propagation Through the Atmosphere. Springer, Berlin