需要 3D Analyst 许可。
摘要
计算天空的可见性,并选择性地生成表和极线图。
所生成的表和图用于表示从观察点到天际线上每个折点的水平角和垂直角。
插图
用法
- 要求将观察点和天际线(3D 线)作为输入。
- 计算从观察点到每个折点的方位角和垂直角。
- 此工具总是返回可见天空的比率(在 0 和 1 之间,例如,如果 80% 的天空为可见,该比率为 0.8)。
- 该工具可以选择性地输出角度表。如果选择输出角度表,之后也可选择性地输出极线图。
- 该工具通常在“结果”窗口中显示(或在“结果”信息中显示,如果在“结果”窗口中未显示)可见天空的百分比,以及最大垂直角和最小垂直角。
- 如果输出表,该表将包含两行或更多行的双精度数。每行包含至少一个算术水平角和一个天顶角,并且它们都是以度为单位。
- 如果选中附加字段,则将生成附加列,这些附加列包含诸如跟随天际线中的折点的边源 (FEATURE_ID)、观察点到折点的距离和折点坐标。(该源可能是加入天际线的要素的 FID,或表示天际线在表面的代码。)
始终显示在角度表中的字段有:
- HORIZ_ANG - 水平角。
- ZENITH_ANG - 天顶角。
附加字段有:
- VERTEX_X - 折点的 X 坐标。
- VERTEX_Y - 折点的 Y 坐标。
- VERTEX_Z - 折点的 Z 坐标。
- DIST_2D - 从观察点到折点的水平距离。
- DIST_3D - 从观察点到折点的坡面距离。
附加字段对于生成图而言并非必需。
算术水平角等于 90 减去方位角,而天顶角等于 90 减去垂直角。(算术水平角为 0 时表示正东,而 90 时表示正北;天顶角为 90 时表示水平,而 0 时表示竖直向上。)
- 极线图为可选图,它看起来就像是将天际线(3D 折线)投影到球体表面,并且该图形的观察者正在从球体中心(球体中心在观察点处)上方的很远处向下看。
- 从极线图的中心向外是线性的,这就是说,假设图形的中心表示 90 度高程角(天顶角为零度),则表示赤道的环/圆半径是表示 45 度高程角的环半径的两倍。
- 可见天空的百分比通常在结果中列出。此值等于天际线上方的区域除以基本可见角(参数之一,默认值为零,表示与观察者在同一高程)上方的区域,并且只能在天际线的方位角范围内进行计算。
仅当在 ArcMap、ArcGlobe 或 ArcScene 中执行此工具时,才会显示此图。
语法
SkylineGraph_3d (in_observer_point_features, in_line_features, {base_visibility_angle}, {additional_fields}, {out_angles_table}, {out_graph})
参数 | 说明 | 数据类型 |
in_observer_point_features | 包含一个或多个观察点的输入要素。 | Feature Layer |
in_line_features | 表示天际线的线要素类。 | Feature Layer |
base_visibility_angle (可选) | 用作计算可见天空百分比的基线的垂直角;0 表示水平,90 表示竖直向上;-90 表示竖直向下。默认值为 0。 | Double |
additional_fields (可选) | 确定除两个角度值之外,是否也将附加字段输出到表中。
| Boolean |
out_angles_table (可选) | 创建用于输出角度的表。默认值为空,即没有表。 | Table |
out_graph (可选) | 可选图表的名称。必须先生成一个表格才能生成图。可以显示、保存和/或编辑所生成的图。默认为空,即没有图。 | Graph |
代码实例
SkylineGraph 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.SkylineGraph_3d("observers.shp", "skyline_outline.shp", 0, "ADDITIONAL_FIELDS", "table.dbf")
SkylineGraph 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the
Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy
import exceptions, sys, traceback
from arcpy import env
try:
# Obtain a license for the ArcGIS 3D Analyst extension
arcpy.CheckOutExtension('3D')
# Set environment settings
env.workspace = 'C:/data'
# Set Local Variables
inPts = "observers.shp"
inLines = "skyline_outline.shp"
baseVisibility = 25
# Ensure output table has unique name
outTable = arcpy.CreateUniqueName("angles_table.dbf")
#Execute SkylineGraph
arcpy.SkylineGraph_3d(inPts, inLines, 0, "ADDITIONAL_FIELDS", outTable)
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)