描述
确定穿过由表面和可选多面体数据集组成的障碍物的视线的可见性。
插图
使用
只有输入线的端点用于定义观察点和目标点。视线应该是直线,包括两个折点,分别代表用于确定可见性的观测点和目标位置。
如果观察点位置由点要素定义并且可见目标处于不同的要素类中,则要考虑通过构造视线工具创建视线。
输出线将沿着输入视线的可见与不可见部分进行划分。如果只用表面确定视线可见性,输出线就将采用表面的剖面。如果在计算通视分析时提供了多面体要素,则输出线将会沿着输入视线的轨线。
输出线要素的属性表包含以下字段:
- SourceOID - 用于计算可见性的线要素的唯一 ID。
- VisCode - 沿线的可见性。值为 1 表示可见,值为 2 表示不可见。该字段仅在输出几何是线的情况下存在。
- TarIsVis - 沿线的目标可见性。值为 1 表示可见,值为 0 表示不可见。该字段仅在输出几何是线的情况下存在。
- OBSTR_MPID - 阻碍通视线的多面体唯一 ID。如果没有多面体阻碍通视线,则字段包含的值为 -1 或 -9999。如果目标受表面阻碍,则值为 -1。如果目标可见,则值为 -9999。
语法
LineOfSight(in_surface, in_line_feature_class, out_los_feature_class, {out_obstruction_feature_class}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {in_features})
参数 | 说明 | 数据类型 |
in_surface | 用于确定可见性的 LAS 数据集、栅格、TIN 或 terrain 表面。 | LAS Dataset Layer; Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer |
in_line_feature_class | 线要素,其第一个折点定义为观测点,最后一个折点标识目标位置。观测和目标位置的高度通过 3D 要素的 z 值获得,并且通过 2D 要素的表面插值。 2D 线还将默认偏移量 1 添加到其高程,以使点位于表面之上。如果要素有一个 OffsetA 字段,其值将添加到观测点的高度。如果存在 OffsetB 字段,其值将添加到目标位置的高度。 | Feature Layer |
out_los_feature_class | 确定可见性所依据的输出线要素类。将创建两个属性字段。VisCode 表示沿线的可见性,1 表示可见,2 表示不可见。TarIsVis 表示目标可见性,0 表示不可见,1 表示可见。 | Feature Class |
out_obstruction_feature_class (可选) | 一个可选点要素类,用于标识其目标的观察点视线上的第一个障碍物的位置。 | Feature Class |
use_curvature (可选) | 表示在视线分析时是否考虑地球的曲率。若启用此选项,则表面需要在定义了 Z 单位的投影坐标系中有一个确定的空间参考。
| Boolean |
use_refraction (可选) | 指示在通过作用表面生成一条视线时是否考虑大气折射。如果使用了多面体要素,则此选项不适用。
| Boolean |
refraction_factor (可选) | 提供用于折射系数的值。折射系数默认值为 0.13。 | Double |
pyramid_level_resolution (可选) | 此工具将使用 terrain 金字塔等级的 z 容差或窗口大小分辨率。默认值为 0(z 容差),或全分辨率(窗口大小)。 | Double |
in_features (可选) | 可以定义其他阻碍元素(例如,建筑物)的多面体要素。此输入不支持折射选项。 | Feature Layer |
代码示例
通视分析 (LineOfSight) 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.LineOfSight_3d("tin", "line.shp", "los.shp", "buldings_multipatch.shp",
"obstruction.shp")
通视分析 (LineOfSight) 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''*********************************************************************
Name: Sight Line Visibility of Parade Path
Description: This script demonstrates how to create a sight line feature class
from a pair of observer and target points.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Checking out 3D Analyst Extension:
arcpy.CheckOutExtension('3D')
# Set Local Variables:
env.workspace = 'C:/data'
# Setting up input and output variables:
obs = "observer_pts.shp"
tar = "parade_path.shp"
sightlines = "output_sightlines.shp"
height = "<None>"
join_field = "#"
sampling = 0.5
direction = "OUTPUT_THE_DIRECTION"
surface = 'elevation.tif'
bldgs = 'buildings.shp'
arcpy.AddMessage("Building sightlines...")
arcpy.ddd.ConstructSightLines(obs, tar, sightlines, height, height,
join_field, sampling, direction)
arcpy.ddd.LineOfSight(surface, sightlines, "Parade_LOS.shp",
"Obstructions.shp", in_features=bldgs)
arcpy.GetMessages(0)
arcpy.CheckInExtension("3D")
except arcpy.ExecuteError:
print arcpy.GetMessages()
except:
# Get the traceback object
tb = sys.exc_info()[2]
tbinfo = traceback.format_tb(tb)[0]
# Concatenate error information into message string
pymsg = 'PYTHON ERRORS:\nTraceback info:\n{0}\nError Info:\n{1}'\
.format(tbinfo, str(sys.exc_info()[1]))
msgs = 'ArcPy ERRORS:\n {0}\n'.format(arcpy.GetMessages(2))
# Return python error messages for script tool or Python Window
arcpy.AddError(pymsg)
arcpy.AddError(msgs)
环境
许可信息
- Basic: 需要 3D Analyst
- Standard: 需要 3D Analyst
- Advanced: 需要 3D Analyst