可见性 (Spatial Analyst)
摘要
确定对一组观察点要素可见的栅格表面位置,或识别从各栅格表面位置进行观察时可见的观察点。
用法
-
此工具支持两种可见的分析类型(FREQUENCY 和 OBSERVERS),由分析类型工具参数控制。针对 FREQUENCY 分析类型,工具可确定对一组观察点可见的栅格表面位置。对于 OBSERVERS,可识别从各栅格表面位置进行观察时可见的观察点。
如果输入栅格含有因采样错误导致的不希望出现的噪点,则在运行此工具之前,可使用低通滤波器(如焦点统计的“平均值”选项)对栅格进行平滑处理。
每个像元中心的可见性可通过比较与像元中心所成的高度角和与本地地平线所成的高度角来确定。计算本地地平线时要考虑观测点和当前像元中心之间的中间地形。如果该点位于本地地平线之上,则视其为可见。
该工具提供一个可选的地平面以上 (AGL) 输出栅格。AGL 输出栅格上的每一个像元都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度。
如果输入观察点要素包含多个观察点时,则输出值是所有单个观察点中 AGL 值的最小值。
使用观察点参数以对可见性分析过程进行更多的控制。例如,可通过观察点偏移参数指定可见性分析中的观察点高程的偏移。
若要对输入栅格进行重采样,需使用双线性技术。例如,当输出栅格与输入栅格的坐标系统、范围或像元大小不同时,可对输入栅格进行重采样。
语法
参数 | 说明 | 数据类型 |
in_raster |
输入表面栅格。 | Raster Layer |
in_observer_features |
用于识别观察点位置的要素类。 输入可以是点要素或折线 (polyline) 要素。 | Feature Layer |
out_agl_raster (可选) |
地平面以上 (AGL) 的输出栅格。 AGL 结果是一个栅格,其中每个像元值都记录了为保证像元至少对一个观察点可见而需要向该像元添加的最小高度(若不添加此高度,像元不可见)。 输出栅格中已可见的像元的值为 0。 | Raster |
analysis_type (可选) |
可见性分析类型。
| String |
nonvisible_cell_value (可选) | 分配到不可见像元的值。
| 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 (可选) |
允许对地球的曲率进行校正。
| Boolean |
refractivity_coefficient (可选) |
空气中可见光的折射系数。 默认值为 0.13。 | Double |
surface_offset (可选) |
该值将以表面单位指示要添加到各像元 z 值的垂直距离,因为分析可见性时需要考虑该距离。它应为正整数值或浮点值。 它可为输入观察点要素数据集中的字段或一个数值。默认情况下,若输入观察点要素属性表中存在 OFFSETB 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 0。 | Field | Constant |
observer_elevation (可选) |
此值用于定义观察点或折点的表面高程。 它可为输入观察点要素数据集中的字段或一个数值。默认情况下,若输入观察点要素属性表中存在 SPOT 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则可通过双线性插值法使用观察点位置相邻像元的表面高程值对其进行估算。 | Field | Constant |
observer_offset (可选) |
该值将以表面单位指示要添加到观察点高程的垂直距离。它应为正整数值或浮点值。 它可为输入观察点要素数据集中的字段或一个数值。默认情况下,若输入观察点要素属性表中存在 OFFSETA 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 1。 | Field | Constant |
inner_radius (可选) |
此值用于定义确定可见性的起始距离。小于此距离的像元在输出中不可见,但仍会妨碍内半径和外半径之间像元的可见性。它应为正/负整数值或浮点值。若为正值,则将解释为三维视线距离。若为负值,则将解释为二维平面距离。 它可为输入观察点要素数据集中的字段或数值。默认情况下,若输入观察点要素属性表中存在 RADIUS1 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 0。 | Field | Constant |
outer_radius (可选) |
此值用于定义确定可见性的最大距离。超出此距离的像元将从分析中排除。它应为正/负整数值或浮点值。若为正值,则将解释为三维视线距离。若为负值,则将解释为二维平面距离。 它可为输入观察点要素数据集中的字段或数值。默认情况下,若输入观察点要素属性表中存在 RADIUS2 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为无穷大。 | Field | Constant |
horizontal_start_angle (可选) |
该值定义水平扫描范围的起始角度。此值以度为单位,介于 0 至 360 度之间,其中 0 指向北。默认值为 0。 它可为输入观察点要素数据集中的字段或数值。默认情况下,若输入观察点要素属性表中存在 AZIMUTH1 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 0。 | Field | Constant |
horizontal_end_angle (可选) |
该值定义水平扫描范围的终止角度。此值以度为单位,介于 0 至 360 度之间,其中 0 指向北。默认值为 360。 它可为输入观察点要素数据集中的字段或数值。默认情况下,若输入观察点要素属性表中存在 AZIMUTH2 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 360。 | Field | Constant |
vertical_upper_angle (可选) |
该值定义扫描的(位于水平面上)垂直角上限。该值应以度为单位,介于 0 到 90 之间,可为整数或浮点数。 它可为输入观察点要素数据集中的字段或一个数值。默认情况下,若输入观察点要素属性表中存在 VERT1 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 90。 | Field | Constant |
vertical_lower_angle (可选) |
该值定义扫描的(位于水平面下)垂直角下限。该值应以度为单位,介于 -90 到 0 之间,可为整数或浮点。 它可为输入观察点要素数据集中的字段或数值。默认情况下,若输入观察点要素属性表中存在 VERT2 数值字段,将使用该字段。可通过指定其他数值字段或常量将其覆盖。 若未指定此参数且输入观察点要素属性表中不存在默认字段,则其默认为 -90。 | Field | Constant |
返回值
名称 | 说明 | 数据类型 |
out_raster |
输出栅格。 输出将记录输入表面栅格中每个像元位置对于输入观测位置可见的次数(FREQUENCY 选项),或记录栅格表面中每个像元可见的观察点位置(OBSERVERS 选项)。 | Raster |
代码实例
本例确定了对在 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")
本例确定了在每个表面位置可见的观察点。
# 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
# Check out the ArcGIS Spatial Analyst extension license
arcpy.checkOutExtension("Spatial")
# 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")