天际线 (3D Analyst)

摘要

生成一个包含天际线或轮廓分析结果的线要素类或多面体要素类。

了解有关“天际线”工作原理的详细信息

插图

天际线工具图示

使用情况

  • 此工具要求所有输入数据都位于投影坐标系中。 可以使用投影工具重新投影不在投影坐标系中的输入要素类,并且可以使用投影栅格工具重新投影输入栅格表面。

  • 分段天际线参数可用于确定有多少天际线由特定的多面体要素或周围高程表面定义。 这有助于了解特定感兴趣地点是否构成了给定观测点的天际线。

  • 此工具可以用来创建要素轮廓,通过天际线障碍工具可将这些轮廓拉伸成阴影体。 通过此过程生成的阴影将在与输入要素几何稍有偏移的位置创建。 或者,可以使用太阳阴影体工具生成从要素几何延伸到低于要素高度一定距离的阴影体。 您还可以使用太阳阴影频率工具找到由阳光引起的 3D 要素的阴影落在表面上的位置。

  • 以下字段将会添加到包含天际线的输出要素类参数值:

    • OBSV_PT_ID - 用于创建天际线的观察点 FID。
    • ORIGFTR_ID - 要素的 FID,如建筑物。
  • 以下字段将会添加到包含轮廓的输出要素类参数值:

    • OBSV_PT_ID - 用于创建轮廓的轮廓点 FID
    • ORIGFTR_ID - 轮廓表示的原始要素(如建筑物)的 FID
    • DIR_VECT_X - 表示来自观察点的光线方向的单位矢量的 x 分量
    • DIR_VECT_Y - 表示来自观察点的光线方向的单位矢量的 y 分量
    • DIR_VECT_Z - 表示来自观察点的光线方向的单位矢量的 z 分量
    • FEAT_CTR_X - 原始要素(如建筑物)包络中心的 z 分量
    • FEAT_CTR_Y - 要素包络中心的 y 分量
    • FEAT_CTR_Z - 要素包络中心的 z 分量
    • BHND_CTR_X - 移动到要素后面的要素包络中心的 x 分量
    • BHND_CTR_Y - 移动到要素后面的要素包络中心的 y 分量
    • BHND_CTR_Z - 移动到要素后面的要素包络中心的 z 分量
    • USED_PARLL - 是否使用平行光线创建轮廓(1 代表是,0 代表否)
    • MADE_VERT - 是否使轮廓保持竖直,而不是垂直于光线(1 代表是,0 代表否)
    • MOVED_BHND - 是否将轮廓移动到要素后面,而不是将其留在要素中心(1 代表是,0 代表否)
  • 仅当输入表面参数值为栅格数据集时,才会应用大气折射和地球曲率校正。 如果表面由 TIN、地形或 LAS 数据集定义,请使用以下工具之一将数据导出到栅格:

参数

标注说明数据类型
输入观察点要素

表示观察点的 3D 点。 每个要素都将具有自己的输出。

Feature Layer
输出要素类

表示天际线的线或表示轮廓的多面体的3D 要素。

Feature Class
输入表面
(可选)

将用于定义地平线的地形面。 如果未提供表面,则将使用通过虚拟表面半径虚拟表面高程参数值定义的虚拟表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer; Terrain Layer
虚拟表面半径
(可选)

如果未提供输入表面,则将使用虚拟表面半径定义地平线。 默认值是 1,000 米。

Linear Unit
虚拟表面高程
(可选)

代替实际表面来定义地平线的虚拟表面的高程。 如果提供了实际表面,则可忽略此参数。 默认值为 0。

Linear Unit
输入要素
(可选)

将用于确定天际线的要素。 如果没有指定要素,则天际线将只由地平线(通过地形面或虚拟表面定义)构成。

Feature Layer
要素细节层次
(可选)

指定检查每个要素的细节层次。

  • 详细信息在天际线分析中考虑要素中的每条边(仅限三角形和外部环的边)。 此消耗大量时间的操作最为精确。 这是默认设置。
  • 凸轮廓天际线分析将使用每个要素轮廓线的凸包(拉伸到要素内最高折点的高程)的上部周长。
  • 包络矩形天际线分析将使用三维要素包络的周长。 这是最快的方法。
String
起始方位角
(可选)

天际线分析的起始方向。

该值是在 -360° 到 360° 范围内的几何角度(以度为单位)。 默认值为 0°,即正北。 角度值按顺时针方向增加,因此 90° 是正东,180° 是正南,270° 是正西。 同样,-90° 是正西,-180° 是正南,-270° 是正东。 输入观察点要素参数值中的数值字段也可用于为每个观察点提供不同的起始方向。 分析会一直持续到达到结束方位角参数值为止。

Double; Field
结束方位角
(可选)

完成天际线分析的方位角。

该值是在 -360° 到 360° 范围内的几何角度(以度为单位)。 天际线分析以观察点为起点,并从起始方位角参数值开始递增,直到结束方位角参数值。 该值与起始方位角参数值的偏差不能超过 360°。 默认值为 360°,即正北。

例如,起始方位角为 0°,终止方位角为 360°,将在观察点周围形成完整的圆形天际线,起始方位角为 90°,终止方位角为 270°,将覆盖观察点周围径向范围的南半部分。

输入观察点要素参数值中的数值字段可用于为每个观察点提供不同的终止方向。

Double; Field
方位角增量
(可选)

起始方位角结束方位角参数值之间执行天际线分析以计算地平线时的角度间隔,以度为单位。 此值不得大于结束方位角值减去起始方位角值的差。 默认值为 1。

Double; Field
最大可视半径
(可选)

从观察点位置应能搜索到地平线的最大距离。 零值表明不施加限制。 默认值为 0。

Linear Unit
分段天际线
(可选)

指定生成的天际线是为每个观察点对应一个要素,还是每个观察点的天际线将按照构成天际线的唯一元素进行分段。 仅当为输入要素参数指定一个或多个多面体要素时,此参数才可用。

如果正在生成轮廓,则此参数将指示是否使用发散光线。 对于太阳阴影,取消选中该参数。

  • 未选中 - 每个天际线要素将表示一个观察点。 这是默认设置。
  • 选中 - 每个观察点的天际线都将按照构成天际线的唯一元素进行分段。
Boolean
缩放至百分比
(可选)

放置每个天际线折点应依据的原始垂直角(地平线以上的角或高程角)或高程的缩放百分比。 如果使用的值为 0 或 100,则不会进行缩放。 默认值为 100。

Double
缩放依据
(可选)

指定将如何执行缩放。

  • 基于观察点的垂直角度根据每个折点相对于观察点的垂直角确定缩放。 这是默认设置。
  • 高程根据每个折点相对于观察点的高程确定缩放。
String
缩放方法
(可选)

指定将用于缩放计算的折点。

  • 天际线最大值将相对于具有最高垂直角(或高程)的折点的垂直角(或高程)进行缩放。 这是默认设置。
  • 每个折点将相对于每个折点的原始垂直角(或高程)进行缩放。
String
使用曲率
(可选)

指定在生成山脊线时是否使用地球曲率。 此参数仅在为输入表面参数指定栅格表面时可用。

  • 未选中 - 不使用地球曲率。 这是默认设置。
  • 选中 - 将使用地球曲率。
Boolean
使用折射
(可选)

指定根据输入表面生成山脊线时,是否要考虑应用大气折射。 此选项仅在为输入表面参数指定栅格表面时可用。

  • 未选中 - 不应用大气折射。 这是默认设置。
  • 选中 - 将应用大气折射。
Boolean
折射系数
(可选)

应用大气折射时将使用的折射系数。 默认值为 0.13。

Double
金字塔等级分辨率
(可选)

将使用 terrain 金字塔等级的 z 容差或窗口大小分辨率。 默认值为 0,或全分辨率。

Double
创建轮廓
(可选)

指定输出要素是表示定义输入数据与开放天空之间障碍的天际线,还是表示可观测输入要素立面的轮廓。 仅当为输入要素参数指定一个或多个多面体要素时,此选项才可用。

  • 未选中 - 输出折线要素将表示天际线。 这是默认设置。
  • 选中 - 输出多面体要素将表示轮廓。
Boolean
对要素应用最大半径
(可选)

指定是否将最大地平线半径参数值应用于输入要素。

  • 未选中 - 半径将不应用于输入要素。 这是默认设置。
  • 选中 - 半径将应用于输入要素。
Boolean

arcpy.ddd.Skyline(in_observer_point_features, out_feature_class, {in_surface}, {virtual_surface_radius}, {virtual_surface_elevation}, {in_features}, {feature_lod}, {from_azimuth_value_or_field}, {to_azimuth_value_or_field}, {azimuth_increment_value_or_field}, {max_horizon_radius}, {segment_skyline}, {scale_to_percent}, {scale_according_to}, {scale_method}, {use_curvature}, {use_refraction}, {refraction_factor}, {pyramid_level_resolution}, {create_silhouettes}, {apply_max_radius_to_features})
名称说明数据类型
in_observer_point_features

表示观察点的 3D 点。 每个要素都将具有自己的输出。

Feature Layer
out_feature_class

表示天际线的线或表示轮廓的多面体的3D 要素。

Feature Class
in_surface
(可选)

将用于定义地平线的地形面。 如果未提供表面,则将使用通过 virtual_surface_radiusvirtual_surface_elevation 参数值定义的虚拟表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer; Terrain Layer
virtual_surface_radius
(可选)

如果未提供输入表面,则将使用虚拟表面半径定义地平线。 默认值是 1,000 米。

Linear Unit
virtual_surface_elevation
(可选)

代替实际表面来定义地平线的虚拟表面的高程。 如果提供了实际表面,则可忽略此参数。 默认值为 0。

Linear Unit
in_features
[in_features,...]
(可选)

将用于确定天际线的要素。 如果没有指定要素,则天际线将只由地平线(通过地形面或虚拟表面定义)构成。

Feature Layer
feature_lod
(可选)

指定检查每个要素的细节层次。

  • FULL_DETAIL在天际线分析中考虑要素中的每条边(仅限三角形和外部环的边)。 此消耗大量时间的操作最为精确。 这是默认设置。
  • CONVEX_FOOTPRINT天际线分析将使用每个要素轮廓线的凸包(拉伸到要素内最高折点的高程)的上部周长。
  • ENVELOPE天际线分析将使用三维要素包络的周长。 这是最快的方法。
String
from_azimuth_value_or_field
(可选)

天际线分析的起始方向。

该值是在 -360° 到 360° 范围内的几何角度(以度为单位)。 默认值为 0°,即正北。 角度值按顺时针方向增加,因此 90° 是正东,180° 是正南,270° 是正西。 同样,-90° 是正西,-180° 是正南,-270° 是正东。 in_observer_point_features 参数值中的数值字段也可用于为每个观察点提供不同的起始方向。 分析会一直持续到达到 to_azimuth_value_or_field 参数值为止。

Double; Field
to_azimuth_value_or_field
(可选)

完成天际线分析的方位角。

该值是以度为单位的几何角度,可以指定为 -360° 到 360° 范围内的任何数字。 天际线分析以观察点为起点,并从 from_azimuth_value_or_field 参数值开始递增,直到 to_azimuth_value_or_field 参数值。 该值与 from_azimuth_value_or_field 参数值的偏差不能超过 360°。 默认值为 360°,即正北。

例如,起始方位角为 0°,终止方位角为 360°,将在观察点周围形成完整的圆形天际线,起始方位角为 90°,终止方位角为 270°,将覆盖观察点周围径向范围的南半部分。

in_observer_point_features 参数值中的数值字段可用于为每个观察点提供不同的终止方向。

Double; Field
azimuth_increment_value_or_field
(可选)

from_azimuth_value_or_fieldto_azimuth_value_or_field 参数值之间执行天际线分析以计算地平线时的角度间隔,以度为单位。 此值不得大于 to_azimuth_value_or_field 值减去 from_azimuth_value_or_field 值的差。 默认值为 1。

Double; Field
max_horizon_radius
(可选)

从观察点位置应能搜索到地平线的最大距离。 零值表明不施加限制。 默认值为 0。

Linear Unit
segment_skyline
(可选)

指定生成的天际线是为每个观察点对应一个要素,还是每个观察点的天际线将按照构成天际线的唯一元素进行分段。 仅当为 in_features 参数指定多面体要素时,此参数才可用。

如果正在生成轮廓,则此参数将指示是否使用发散光线。 对于太阳阴影,请使用 NO_SEGMENT_SKYLINE 选项。

  • NO_SEGMENT_SKYLINE每个天际线要素将表示一个观察点。 这是默认设置。
  • SEGMENT_SKYLINE每个观察点的天际线都将按照构成天际线的唯一元素进行分段。
Boolean
scale_to_percent
(可选)

放置每个天际线折点应依据的原始垂直角(地平线以上的角或高程角)或高程的缩放百分比。 如果使用的值为 0 或 100,则不会进行缩放。 默认值为 100。

Double
scale_according_to
(可选)

指定将如何执行缩放。

  • VERTICAL_ANGLE根据每个折点相对于观察点的垂直角确定缩放。 这是默认设置。
  • ELEVATION根据每个折点相对于观察点的高程确定缩放。
String
scale_method
(可选)

指定将用于缩放计算的折点。

  • SKYLINE_MAXIMUM将相对于具有最高垂直角(或高程)的折点的垂直角(或高程)进行缩放。 这是默认设置。
  • EACH_VERTEX将相对于每个折点的原始垂直角(或高程)进行缩放。
String
use_curvature
(可选)

指定根据功能性表面生成山脊线时,是否考虑使用地球曲率。 此参数仅在为 in_surface 参数指定栅格表面时可用。

  • CURVATURE将使用地球曲率。
  • NO_CURVATURE不使用地球曲率。 这是默认设置。
Boolean
use_refraction
(可选)

指定根据功能性表面生成山脊线时,是否要考虑应用大气折射。 此选项仅在为 in_surface 参数指定栅格表面时可用。

  • NO_REFRACTION不应用大气折射。 这是默认设置。
  • REFRACTION将应用大气折射。
Boolean
refraction_factor
(可选)

应用大气折射时将使用的折射系数。 默认值为 0.13。

Double
pyramid_level_resolution
(可选)

将使用 terrain 金字塔等级的 z 容差或窗口大小分辨率。 默认值为 0,或全分辨率。

Double
create_silhouettes
(可选)

指定输出要素是表示定义输入数据与开放天空之间障碍的天际线,还是表示可观测输入要素立面的轮廓。 仅当为 in_features 参数指定一个或多个多面体要素时,此选项才可用。

  • NO_CREATE_SILHOUETTES输出折线要素表示天际线。 这是默认设置。
  • CREATE_SILHOUETTES输出多面体要素表示轮廓。
Boolean
apply_max_radius_to_features
(可选)

指定是否将 max_horizon_radius 参数值应用于输入要素。

  • NO_APPLY_MAX_RADIUS_TO_FEATURES半径将不应用于输入要素。 这是默认设置。
  • APPLY_MAX_RADIUS_TO_FEATURES半径将应用于输入要素。
Boolean

代码示例

Skyline 示例 1(Python 窗口)

下面的示例演示了如何在 Python 窗口中使用此工具。

arcpy.env.workspace = "C:/data"
arcpy.ddd.Skyline("observers.shp", "skyline_output.shp", "sample.gdb/featuredataset/terrain")
Skyline 示例 2(独立脚本)

下面的示例演示了如何在独立 Python 脚本中使用此工具。

'''****************************************************************************
Name: Skyline Example
Description: This script demonstrates how to use the 
             Skyline tool.
****************************************************************************'''
# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = 'C:/data'

# Set Local Variables
inPts = "observers.shp"

# Make sure output has a unique name
outFC = arcpy.CreateUniqueName("skyline_output.shp")
inSurface = "sample.gdb/featuredataset/terrain"
obstructionFCs = "buildings.shp; billboards.shp"
surfRad = "1000 meters"
surfElev = "100 meters"
LOD = "FULL_DETAIL"
fromAzim = 0
toAzim = 360
incAzim = 1
maxHorizRad = 0
segSky = "SEGMENT_SKYLINE"
scale = 100
scaleAcc = "ELEVATION"
scaleMethod = "SKYLINE_MAXIMUM"

# Execute Skyline
arcpy.ddd.Skyline(inPts, outFC, inSurface, surfRad, surfElev, 
                  obstructionFCs, LOD, fromAzim, toAzim, incAzim, 
                  maxHorizRad, segSky, scale, scaleAcc, scaleMethod)

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题