可见性 (3D Analyst)

摘要

确定对一组观察点要素可见的栅格表面位置,或识别从各栅格表面位置进行观察时可见的观察点。

测地线视域工具可提供增强的功能或性能。

插图

包含频数选项的可见性输出
显示在山体阴影高程表面上、包含频数选项的可见性输出
包含观察点选项的可见性输出
显示在山体阴影高程表面上、包含观察点选项的可见性输出

使用情况

  • 此工具支持两种可见的分析类型(频率和观察点),由分析类型工具参数控制。 针对第一种类型,该工具可确定对一组观察点可见的栅格表面位置。 对于另一种类型,可识别从各栅格表面位置进行观察时可见的观察点。

  • 如果输入栅格含有因采样错误导致的不希望出现的噪点,则在运行此工具之前,可使用低通滤波器(如焦点统计工具的“平均值”选项)对栅格进行平滑处理。

  • 每个像元中心的可见性可通过比较与像元中心所成的高度角和与本地地平线所成的高度角来确定。 计算本地地平线时要考虑观测点和当前像元中心之间的中间地形。 如果该点位于本地地平线之上,则将其视为可见点。

  • 该工具提供一个可选的地平面以上 (AGL) 输出栅格。 AGL 输出栅格上的每一个像元都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度。

    如果输入观察点要素包含多个观察点时,则输出值是所有单个观察点中 AGL 值的最小值。

  • 使用观察点参数以对可见性分析过程进行更多的控制。 例如,可通过观察点偏移参数指定可见性分析中的观察点高程的偏移。

  • 若要对输入栅格进行重采样,需使用双线性技术。 例如,当输出栅格与输入栅格的坐标系统、范围或像元大小不同时,可对输入栅格进行重采样。

参数

标注说明数据类型
输入栅格

输入表面栅格。

Raster Layer
输入观察点或观察折线要素

用于识别观察点位置的要素类。

输入可以是点要素或折线 (polyline) 要素。

Feature Layer
输出栅格

输出栅格。

输出将记录输入表面栅格中每个像元位置对于输入观测位置可见的次数(频数分析类型),或记录栅格表面中每个像元可见的观察点位置(观察点类型选项)。

Raster Dataset
输出地面以上栅格
(可选)

地表以上 (AGL) 输出栅格。

AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。

在输出栅格中已可见像元的值为 0。

Raster Dataset
分析类型
(可选)

可见性分析类型。

  • 频数输出将记录输入表面栅格中每个像元位置对于输入观测位置(如点或观察折线要素的折点)可见的次数。 这是默认设置。
  • 观察点输出将精确识别从各栅格表面位置进行观察时可见的观察点。
String
针对不可见像元使用 NoData
(可选)

分配到不可见像元的值。

  • 未选中 - 将 0 分配到不可见像元。 这是默认设置。
  • 选中 - 将 NoData 分配到不可见像元。
Boolean
Z 因子
(可选)

一个表面 z 单位中地面 x,y 单位的数量。

z 单位与输入表面的 x,y 单位不同时,可使用 z 因子调整 z 单位的测量单位。 计算最终输出表面时,将用 z 因子乘以输入表面的 z 值。

如果 x,y 单位和 z 单位采用相同的测量单位,则 z 因子为 1。 这是默认设置。

如果 x,y 单位和 z 单位采用不同的测量单位,则必须将 z 因子设置为适当的因子,否则会得到错误的结果。 例如,如果 z 单位是英尺而 x,y 单位是米,则应使用 z 因子 0.3048 将 z 单位从英尺转换为米(1 英尺 = 0.3048 米)。

Double
使用地球曲率校正
(可选)

指定是否将应用地球曲率校正。

  • 未选中 - 不应用任何曲率校正。 这是默认设置。
  • 选中 - 应用曲率校正。
Boolean
折射系数
(可选)

空气中可见光的折射系数。

默认值为 0.13。

Double
表面偏移
(可选)

要添加到各像元 z 值的垂直距离,因为分析可见性时需要考虑该距离。 它必须为正整数值或浮点值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 OFFSETB 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
观察点高程
(可选)

观察点或折点的表面高程。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 SPOT 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则可通过双线性插值法使用观察点位置相邻像元的表面高程值对其进行估算。

Double; Field
观察点偏移
(可选)

要添加到观察点高程的垂直距离。 它必须为正整数值或浮点值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 OFFSETA 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 1。

Double; Field
内半径
(可选)

确定可见性的起始距离。 小于此距离的像元在输出中不可见,但仍会妨碍内半径和外半径之间像元的可见性。

它应为正/负整数值或浮点值。 若为正值,则将解释为三维视线距离。 若为负值,则将解释为二维平面距离。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 RADIUS1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
外半径
(可选)

确定可见性的最大距离。 超出此距离的像元将从分析中排除。

它应为正/负整数值或浮点值。 若为正值,则将解释为三维视线距离。 若为负值,则将解释为二维平面距离。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 RADIUS2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为无穷大。

Double; Field
水平起始角
(可选)

水平扫描范围的起始角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 0。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 AZIMUTH1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
水平终止角
(可选)

水平扫描范围的终止角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 360。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 AZIMUTH2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 360。

Double; Field
垂直上角
(可选)

扫描的(相对于水平面的)垂直角上限。 提供的值介于 -90 至 90 度之间,包括 90。 值可以是整型或浮点型。 默认值为 90(垂直向上)。

此参数值必须大于垂直下角参数值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 VERT1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 90。

Double; Field
垂直下角
(可选)

扫描的(位于水平面下的)垂直角上限。 提供的值介于 -90 至 90 度之间,不包括 90。 值可以是整型或浮点型。 默认值为 -90(垂直向下)。

此参数值必须小于垂直上角参数值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 VERT2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 -90。

Double; Field

返回值

标注说明数据类型
输出栅格

输出栅格。

输出将记录输入表面栅格中每个像元位置对于输入观测位置可见的次数(频数分析类型),或记录栅格表面中每个像元可见的观察点位置(观察点类型)。

Raster

arcpy.ddd.Visibility(in_raster, in_observer_features, out_raster, {out_agl_raster}, {analysis_type}, {nonvisible_cell_value}, {z_factor}, {curvature_correction}, {refractivity_coefficient}, {surface_offset}, {observer_elevation}, {observer_offset}, {inner_radius}, {outer_radius}, {horizontal_start_angle}, {horizontal_end_angle}, {vertical_upper_angle}, {vertical_lower_angle})
名称说明数据类型
in_raster

输入表面栅格。

Raster Layer
in_observer_features

用于识别观察点位置的要素类。

输入可以是点要素或折线 (polyline) 要素。

Feature Layer
out_raster

输出栅格。

输出将记录输入表面栅格中每个像元位置对于输入观测位置可见的次数(频数分析类型),或记录栅格表面中每个像元可见的观察点位置(观察点类型选项)。

Raster Dataset
out_agl_raster
(可选)

地表以上 (AGL) 输出栅格。

AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。

在输出栅格中已可见像元的值为 0。

Raster Dataset
analysis_type
(可选)

可见性分析类型。

  • FREQUENCY输出将记录输入表面栅格中每个像元位置对于输入观测位置(如点或观察折线要素的折点)可见的次数。 这是默认设置。
  • OBSERVERS输出将精确识别从各栅格表面位置进行观察时可见的观察点。
String
nonvisible_cell_value
(可选)

分配到不可见像元的值。

  • ZERO将 0 分配到不可见像元。 这是默认设置。
  • NODATA将 NoData 分配到不可见像元。
Boolean
z_factor
(可选)

一个表面 z 单位中地面 x,y 单位的数量。

z 单位与输入表面的 x,y 单位不同时,可使用 z 因子调整 z 单位的测量单位。 计算最终输出表面时,将用 z 因子乘以输入表面的 z 值。

如果 x,y 单位和 z 单位采用相同的测量单位,则 z 因子为 1。 这是默认设置。

如果 x,y 单位和 z 单位采用不同的测量单位,则必须将 z 因子设置为适当的因子,否则会得到错误的结果。 例如,如果 z 单位是英尺而 x,y 单位是米,则应使用 z 因子 0.3048 将 z 单位从英尺转换为米(1 英尺 = 0.3048 米)。

Double
curvature_correction
(可选)

指定是否将应用地球曲率校正。

  • FLAT_EARTH不应用任何曲率校正。 这是默认设置。
  • CURVED_EARTH应用曲率校正。
Boolean
refractivity_coefficient
(可选)

空气中可见光的折射系数。

默认值为 0.13。

Double
surface_offset
(可选)

要添加到各像元 z 值的垂直距离,因为分析可见性时需要考虑该距离。 它必须为正整数值或浮点值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 OFFSETB 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
observer_elevation
(可选)

观察点或折点的表面高程。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 SPOT 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则可通过双线性插值法使用观察点位置相邻像元的表面高程值对其进行估算。

Double; Field
observer_offset
(可选)

要添加到观察点高程的垂直距离。 它必须为正整数值或浮点值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 OFFSETA 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 1。

Double; Field
inner_radius
(可选)

确定可见性的起始距离。 小于此距离的像元在输出中不可见,但仍会妨碍内半径和外半径之间像元的可见性。

它应为正/负整数值或浮点值。 若为正值,则将解释为三维视线距离。 若为负值,则将解释为二维平面距离。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 RADIUS1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
outer_radius
(可选)

确定可见性的最大距离。 超出此距离的像元将从分析中排除。

它应为正/负整数值或浮点值。 若为正值,则将解释为三维视线距离。 若为负值,则将解释为二维平面距离。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 RADIUS2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为无穷大。

Double; Field
horizontal_start_angle
(可选)

水平扫描范围的起始角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 0。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 AZIMUTH1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则默认值为 0。

Double; Field
horizontal_end_angle
(可选)

水平扫描范围的终止角度。 提供的值介于 0 至 360 度之间,其中 0 指向北。 值可以是整型或浮点型。 默认值为 360。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 AZIMUTH2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 360。

Double; Field
vertical_upper_angle
(可选)

扫描的(相对于水平面的)垂直角上限。 提供的值介于 -90 至 90 度之间,包括 90。 值可以是整型或浮点型。 默认值为 90(垂直向上)。

此参数值必须大于垂直下角参数值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 VERT1 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 90。

Double; Field
vertical_lower_angle
(可选)

扫描的(位于水平面下的)垂直角上限。 提供的值介于 -90 至 90 度之间,不包括 90。 值可以是整型或浮点型。 默认值为 -90(垂直向下)。

此参数值必须小于垂直上角参数值。

可以选择输入观察点数据集中的字段,也可以指定数值。

默认情况下,若输入观察点要素属性表中存在 VERT2 数值字段,将使用该字段。 可通过指定其他数值字段或值将其覆盖。

若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 -90。

Double; Field

返回值

名称说明数据类型
out_raster

输出栅格。

输出将记录输入表面栅格中每个像元位置对于输入观测位置可见的次数(频数分析类型),或记录栅格表面中每个像元可见的观察点位置(观察点类型)。

Raster

代码示例

可见性示例 1(Python 窗口)

此示例确定了对在 shapefile 中定义的一组观察点可见的表面位置。

import arcpy
from arcpy import env
from arcpy.sa import *

env.workspace = "c:/sapyexamples/data"

outvis = arcpy.sa.Visibility("elevation", "observers.shp", "c:/sapyexamples/output/aglout1",
                            "FREQUENCY", "NODATA", "1", "CURVED_EARTH", "0.13",
                            "OFFSETB", "SPOT", "OFFSETA", "RADIUS1", "RADIUS2",
                            "AZIMUTH1", "AZIMUTH2", "VERT1", "VERT2")

outvis.save("c:/sapyexamples/output/visiout1")
可见性示例 2(独立脚本)

此示例确定了在每个表面位置可见的观察点。

# Name: Visibility_Ex_02.py
# Description: Determines the raster surface locations visible to a set of
#                     observer features.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "c:/sapyexamples/data"

# set local variables
inRaster = "elevation"
inObserverFeatures = "observers.shp"
aglOutput = "c:/sapyexamples/output/aglout1"
analysisType = "OBSERVERS"
nonVisibleValue = "ZERO"
zFactor = 1
useEarthCurvature = "CURVED_EARTH"
refractivityCoefficient = 0.13
surfaceOffset = 500
observerElevation = 2000
observerOffset = 500
innerRadius = 20000
outerRadius = 100000
horizStartAngle = 45
horizEndAngle = 215
vertUpperAngle = 5
vertLowerAngle = -5

# Execute Visibility
outvis = arcpy.sa.Visibility(inRaster, inObserverFeatures, algOutput, analysisType,
                            nonVisibleValue, zFactor, useEarthCurvature,
                            refractivityCoefficient, surfaceOffset, observerElevation,
                            observerOffset, innerRadius, outerRadius, horizStartAngle,
                            horizEndAngle, vertUpperAngle, vertLowerAngle)

# Save the output
outvis.save("c:/sapyexamples/output/visiout1")
可见性示例 1(Python 窗口)

此示例确定了对在 shapefile 中定义的一组观察点可见的表面位置。

import arcpy
from arcpy import env
env.workspace = "c:/data"

arcpy.Visibility_3d("elevation", "observers.shp", "c:/output/visiout1", 
                    "c:/output/aglout1", "FREQUENCY", "NODATA", "1", 
                    "CURVED_EARTH", "0.13", "OFFSETB", "SPOT", "OFFSETA", 
                    "RADIUS1", "RADIUS2", "AZIMUTH1", "AZIMUTH2", 
                    "VERT1", "VERT2")
可见性示例 2(独立脚本)

此示例确定了在每个表面位置可见的观察点。

# Name: Viewshed_3d_Ex_02.py
# Description: Determines the raster surface locations visible 
#              to a set of observer features.
# Requirements: 3D Analyst Extension

# Import system modules
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "c:/data"

# set local variables
inRaster = "elevation"
inObserverFeatures = "observers.shp"
outRaster = "c:/output/visiout1"
aglOutput = "c:/output/aglout1"
analysisType = "OBSERVERS"
nonVisibleValue = "ZERO"
zFactor = 1
useEarthCurvature = "CURVED_EARTH"
refractivityCoefficient = 0.13
surfaceOffset = 500
observerElevation = 2000
observerOffset = 500
innerRadius = 20000
outerRadius = 100000
horizStartAngle = 45
horizEndAngle = 215
vertUpperAngle = 5
vertLowerAngle = -5

# Execute Visibility
arcpy.ddd.Visibility(inRaster, inObserverFeatures, outRaster, algOutput,
                     analysisType, nonVisibleValue, zFactor, useEarthCurvature,
                     refractivityCoefficient, surfaceOffset, observerElevation,
                     observerOffset, innerRadius, outerRadius, horizStartAngle,
                     horizEndAngle, vertUpperAngle, vertLowerAngle)

相关主题