摘要
生成一个表示天际线障碍物或阴影体的多面体要素类。
插图
用法
障碍物类似于从观察点到天际线的第一个折点画一条线,然后扫描通过天际线的所有折点的线所形成的三角扇。可考虑将此工具用于确定要素(如表示建筑物的多面体)是否与通过它而突出的障碍物发生冲突,或者拟建的建筑物是否要改变天际线。
首先使用天际线工具生成天际线或轮廓。轮廓可表示出从观察点发的出光线所投射阴影的体积。
最小半径和最大半径参数可定义从观察点发出的三角形边的长度。如果将最小半径或最大半径指定为默认值 0,则分析中不使用最小或最大长度。
如果选择创建一个闭合多面体,则输出将拉伸到基础高程参数中定义的高度,并将创建一个水平环以形成闭合多面体的底部。如果指定的基础高程大于天际线障碍物中的最高折点,那么底面实际上将是上限。
新的多面体要素类有以下字段:
- OBSV_PT_ID - 观察点的 FID,通过它来创建天际线,转而用天际线来创建天际线障碍物多面体。
- ORIGFTR_ID - 以天际线线段或用来创建阴影体的轮廓表示的原始要素(如建筑物)的 FID。
- SILHOUE_ID - 用来创建阴影体的多面体要素(轮廓)的 FID(只用于轮廓)。
语法
SkylineBarrier_3d (in_observer_point_features, in_features, out_feature_class, {min_radius_value_or_field}, {max_radius_value_or_field}, {closed}, {base_elevation}, {project_to_plane})
参数 | 说明 | 数据类型 |
in_observer_point_features | 包含观察点的点要素类。 | Feature Layer |
in_features | 表示天际线的输入线要素类或表示轮廓的输入多面体要素类。 | Feature Layer |
out_feature_class | 放置天际线障碍物或阴影体的输出要素类。 | Feature Class |
min_radius_value_or_field (可选) | 从观察点扩展到三角形边的最小半径。默认值是 0 表示没有最小值。 | Linear Unit; Field |
max_radius_value_or_field (可选) | 从观察点扩展到三角形边的最大半径。默认值是 0 表示没有最大值。 | Linear Unit; Field |
closed (可选) | 可以根据生成的多面体是否呈现为实体,选择是否通过裙面和底面闭合天际线障碍物。
| Boolean |
base_elevation (可选) | 闭合多面体的底面高程;如果障碍物不闭合则忽略。默认值为 0。 | Linear Unit; Field |
project_to_plane (可选) | 障碍物的前端(距离观察点较近)和后端(距离观察点较远)是否应该分别投影到垂直平面。通常选中(开启)该选项来创建阴影体。
| Boolean |
代码实例
SkylineBarrier 示例 1(Python 窗口)
下面的示例演示了如何在 Python 窗口中使用此工具。
import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.SkylineBarrier_3d("observers.shp", "skyline_outline.shp", "barrier_output.shp")
SkylineBarrier 示例 2(独立脚本)
下面的示例演示了如何在独立 Python 脚本中使用此工具。
'''****************************************************************************
Name: Skyline Barrier Example
Description: This script demonstrates how to use the
Skyline Barrier 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'
inLine = 'skyline.shp'
outFC = 'output_barriers.shp'
minRadius = '0 METERS'
maxRadius = '200 METERS'
#Execute SkylineBarrier
arcpy.SkylineBarrier_3d(inPts, inLine, outFC, minRadius,
maxRadius, 'CLOSED')
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)