通视分析 (3D Analyst)
用法
-
只有输入线的端点用于定义观察点和目标点。理想的视线应是简单的直线,包括两个折点,分别代表用于确定可见性的观测点和目标位置。
如果观测位置通过点要素和位于不同要素类中的目标位置标识,请使用构造视线为此工具生成输入。
考虑指定可选的障碍点要素,以确定阻挡每个线的目标可见性的第一个障碍物的位置。
输出线要素的属性表包含以下字段:
- SourceOID - 用于计算可见性的线要素的唯一 ID。
- VisCode - 沿线的可见性。值为 1 表示可见,值为 2 表示不可见。该字段仅在输出几何是线的情况下存在。
- TarIsVis - 沿线的目标可见性。值为 1 表示可见,值为 0 表示不可见。该字段仅在输出几何是线的情况下存在。
- OBSTR_MPID - 阻碍通视线的多面体的唯一 OID。如果不存在阻碍通视线的多面体,则该字段含有一个为 -1 或 -9999 的值。如果目标被表面所阻碍,则该值为 -1。如果目标可见,则值为 -9999。
语法
LineOfSight_3d (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 |
定义用于确定可见性的表面的栅格、TIN、terrain 或 LAS 数据集。 | 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 数据集金字塔等级的分辨率。默认值为 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
Description: This script demonstrates how to calculate visibility
for sight lines against the obstructions presented by
terrain elevation & building models in a multipatch.
*********************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
arcpy.CheckOutExtension('3D')
# Set Local Variables
env.workspace = 'C:/data'
obs_pts = "Observers.shp"
target = "Observation_Targets.shp"
sight_lines = "in_memory/sightlines"
surface = "sample.gdb/elevation/terrain"
buildings = "city_buildings.shp"
outLOS = arcpy.CreateUniqueName("Line_of_Sight.shp")
obstruction_pts = arcpy.CreateUniqueName("Obstruction_Points.shp")
arcpy.AddMessage("Constructing sight lines...")
arcpy.ddd.ConstructSightLines(obs_pts, target, sight_lines)
arcpy.AddMessage("Calculating line of sight...")
arcpy.ddd.LineOfSight(surface, sight_lines, outLOS, obstruction_pts,
"CURVATURE", "REFRACTION", 0.35, 0, buildings)
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)
环境
相关主题
许可信息
ArcGIS for Desktop Basic:需要 3D Analyst
ArcGIS for Desktop Standard:需要 3D Analyst
ArcGIS for Desktop Advanced:需要 3D Analyst
9/15/2013