天际线 (3D Analyst)

许可等级:BasicStandardAdvanced

摘要

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

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

插图

Skyline

用法

语法

Skyline_3d (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})
参数说明数据类型
in_observer_point_features

表示观察点的 3D 点;每一个 3D 点都有一个单独的天际线。

Feature Layer
out_feature_class

在其中放置天际线的线要素类。此外,为包含要素轮廓,此要素类可以是多面体要素类。

Feature Class
in_surface
(可选)

用于确定地平线的功能性表面。

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

代替实际表面来定义地平线的虚拟表面的半径。必须为正值。如果提供了实际表面,则可忽略。默认值为 1,000。

Linear Unit
virtual_surface_elevation
(可选)

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

Linear Unit
in_features
(可选)

在天际线分析中要使用的要素类。这些要素通常表示城市建筑等障碍物。

Feature Layer
feature_lod
(可选)

在天际线分析中检查每个要素的细节层次。

  • FULL_DETAIL在天际线分析中考虑要素中的每条边(仅限三角形和外部环的边)。这种方式虽然最慢,但最精确。这是默认设置。
  • CONVEX_FOOTPRINT通过表示要素轮廓线凸包的凸面(升高到要素内最高折点的高程)的上部周长对天际线分析产生影响。
  • ENVELOPE 通过包络要素的矩形实体(竖直面与 X 轴和 Y 轴垂直)的上部水平矩形周长对天际线分析产生影响。
String
from_azimuth_value_or_field
(可选)

以度为单位的方位角。根据此方位角开始天际线分析。天际线分析以观察点为起点,并从“起始方位角”向右移动,直到“结束方位角”。方位角必须在负 360 和 360 之间。默认值为 0。

Double; Field
to_azimuth_value_or_field
(可选)

以度为单位的方向。根据此方向完成天际线分析。天际线分析以观察点为起点,并从“起始方位角”向右移动,直到“结束方位角”。该值必须大于“起始方位角”,且不得超过 360。默认值为 360。

Double; Field
azimuth_increment_value_or_field
(可选)

以度为单位的角度间隔。在“起始方位角”和“结束方位角”之间执行天际线分析时,应根据此值计算地平线。该值不得大于“结束方位角”与“起始方位角”的差值。默认值为 1。

Double; Field
max_horizon_radius
(可选)

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

Double
segment_skyline
(可选)

输出不是只生成一条线来表示每个观察点的天际线,而是拆分为多条线。每一条线表示一个不同的要素,或者表示要素间地平线的一个拉伸。如果正在生成轮廓,那么此参数将指示是否使用发散光线;对于太阳阴影,此参数的状态通常为禁用或未选中。

  • NO_SEGMENT_SKYLINE将不会分割输出的 3D 折线结果。这是默认设置。
  • 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
(可选)

表示根据功能性表面生成山脊线时,是否要考虑地球的曲率。

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

表示在通过功能性表面生成山脊线时是否应考虑大气折射。如果没有指定实际表面,则选中此复选框(或在 Python 中传送“REFRACTION”)将会创建轮廓而不是天际线。

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

如果考虑大气折射,则应用标量值。默认值为 0.13。

Double
pyramid_level_resolution
(可选)

如果为功能性表面指定 terrain,则会通过 terrain 中的现有分辨率填充此参数。会选取其中一个现有分辨率来用于生成地平线。默认值为 0(z 容差),或全分辨率(窗口大小)。

Double
create_silhouettes
(可选)

指定输出要素是否表示可从观察点看到的轮廓。

  • NO_CREATE_SILHOUETTES生成的折线表示天际线。这是默认设置。
  • CREATE_SILHOUETTES生成的折线表示轮廓。
Boolean

代码实例

Skyline 示例 1(Python 窗口)

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

import arcpy
from arcpy import env

arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.Skyline_3d("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
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"
    # 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.Skyline_3d(inPts, outFC, inSurface, surfRad, surfElev, 
                     obstructionFCs, LOD, fromAzim, toAzim, incAzim, 
                     maxHorizRad, segSky, scale, scaleAcc, scaleMethod)


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