通视分析 (3D 分析)
摘要
这个工具使用输入 2D 或 3D 折线要素类以及栅格、不规则三角网 (TIN) 或 terrain 数据集表面来确定观察点和目标点之间的可见性。多面体要素类可有选择性地加入到可见性分析中。
用法
-
确定可见性的起点是观察点。确定可见性的目标点在视线的另一端。
-
只有输入线的端点用于定义观察点和目标点。
如果一个或多个目标点不可见,那么通视分析工具会生成一个可选的输出点要素类。此输出点要素类包含每条线目标点不可见时遇到的第一个障碍位置。
它会生成包含线和目标点可见性信息的输出线要素类。
以下字段将会添加到包含通视线分析的输出要素类:
- 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 表面。 | TIN Layer; Raster Layer; Terrain Layer |
in_line_feature_class |
计算可见性所依据的输入折线 (polyline) 要素类。它可以是 2D 或 3D 要素类。 | 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,即全分辨率。 | Double |
in_features (可选) |
可能会阻碍视线的多面体要素类。默认设置为空。 | Feature Layer |
代码示例
通视分析示例 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")
通视分析示例 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)
环境
相关主题
许可信息
ArcView: 需要 3D Analyst
ArcEditor: 需要 3D Analyst
ArcInfo: 需要 3D Analyst
7/10/2012