添加表面信息 (3D Analyst)

需要 3D Analyst 许可。

需要 Spatial Analyst 许可。

摘要

将获取自表面的空间信息添加到要素属性中。

使用情况

  • 忽略 3D 要素的 Z 值。每个要素都会汇总与其几何相交的表面 Z 属性。点从表面上的 XY 位置获取 Z 值,线通过沿其长度插入表面测量值来获取 Z 属性,面则汇总其区域内的表面 Z 属性。

  • 输出属性选项会写入到输入要素的属性表中。各要素定义被评估的表面属性的位置,以及可根据要素几何报告的属性类型:

    要素几何表面属性

    根据表面上点的 XY 坐标插入点高程。

    多点

    多点记录中所有点的最小、最大和平均高程。

    折线

    沿着表面的线的 3D 距离。

    沿着表面的线的最小、最大和平均高程和坡度。

    与面重叠的表面的 3D 区域。

    来自表面的最小、最大和平均高程和坡度。

  • 坡度值以百分比单位(百分度)进行测量,线要素的坡度值沿着线的各线段进行计算。

    • 最小坡度值根据坡度值最接近 0 或水平等级的线段获得。
    • 最大坡度根据具有最大计算值的线段获得。
    • 平均坡度通过按 3D 长度对每个坡度进行加权、然后确定平均值获得。这种计算方法会导致较长线段对结果值的影响比较短线段更大。
  • 考虑应用噪点过滤器来排除以异常测量值为特征的部分表面参与到坡度计算中。线要素由捕捉表面剖面的折点来分段,按长度过滤这些线段会消除可能由不希望出现的表面测量值产生的短线段影响。同理,面要素的面积过滤器会排除三角化网格面中的狭长三角形参与到坡度计算中。对于栅格表面,像元质心子集用于构造可应用面积过滤器的三角化网格面。

参数

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

定义位置的点、多点、折线或面要素,用于确定一个或多个表面属性。

Feature Layer
输入表面

用于内插 z 值的 LAS 数据集、镶嵌、栅格、terrain 或 TIN 表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer
输出属性

将添加到输入要素类属性表中的表面高程属性。下表汇总了可用属性关键字及其支持的几何类型:

  • Z针对每个单点要素的 XY 位置插值的表面 Z 值。
  • Z 最小值由面、沿线的长度或多点记录中各点的插值定义的面积中最低的表面 Z 值。
  • Z 最大值由面、沿线的长度或多点记录中各点的插值定义的面积中最高的表面高程。
  • Z 平均值由面、沿线的长度或多点记录中各点的插值定义的面积中的平均表面高程。
  • 表面面积由每个面定义的区域的 3D 表面区域。
  • 表面长度沿着表面的线的 3D 距离。
  • 最小坡度沿线或面定义的区域中的最接近零的坡度值。
  • 最大坡度沿线或面定义的区域中的最高坡度值。
  • 平均坡度沿线或面定义的区域中的平均坡度值。
String
方法
(可选)

用于确定表面相关信息的插值方法。可用选项取决于输入表面的数据类型:

  • 双线性法可从四个最邻近的像元中确定像元值的栅格表面的专用插值方法。这是适用于栅格表面的唯一选项。
  • 线性 TIN、terrain 和 LAS 数据集的默认插值方法。根据由包含查询点 XY 位置的三角形定义的平面获取高程。
  • 自然邻域法 通过将基于区域的权重应用于查询点的自然邻域获取高程。
  • 合并最小 Z 值 根据在查询点自然邻域中找到的最小 Z 值获取高程。
  • 合并最大 Z 值 根据在查询点自然邻域中找到的最大 Z 值获取高程。
  • 合并最近的 Z 值 根据查询点自然邻域中的最近值获取高程。
  • 合并最接近平均值的 z 值 根据距查询点所有自然邻域的平均值最近的 Z 值获取高程。
String
采样距离
(可选)

用于内插 z 值的间距。默认情况下,如果输入表面是栅格,则使用栅格像元大小;如果输入是 terrain 或 TIN 数据集,则使用三角化网格面的自然增密。

Double
Z 因子
(可选)

Z 值将乘上的系数。 此值通常用于转换 z 线性单位来匹配 x,y 线性单位。 默认值为 1,此时高程值保持不变。 如果输入表面的空间参考具有已指定线性单位的 z 基准,则此参数不可用。

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

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

Double
噪点过滤
(可选)

排除以异常测量值为特征的部分表面参与到坡度计算过程中。线要素会提供长度过滤器,而面要素则提供面积过滤器。与任意一个过滤器选项对应的值都会以要素坐标系的线性单位进行评估。非坡度属性不受此参数影响。

String

派生输出

标注说明数据类型
更新后的输入要素

更新后的输入要素。

要素图层

arcpy.ddd.AddSurfaceInformation(in_feature_class, in_surface, out_property, {method}, {sample_distance}, {z_factor}, {pyramid_level_resolution}, {noise_filtering})
名称说明数据类型
in_feature_class

定义位置的点、多点、折线或面要素,用于确定一个或多个表面属性。

Feature Layer
in_surface

用于内插 z 值的 LAS 数据集、镶嵌、栅格、terrain 或 TIN 表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; Terrain Layer; TIN Layer
out_property
[out_property,...]

将添加到输入要素类属性表中的表面高程属性。下表汇总了可用属性关键字及其支持的几何类型:

  • Z针对每个单点要素的 XY 位置插值的表面 Z 值。
  • Z_MIN由面、沿线的长度或多点记录中各点的插值定义的面积中最低的表面 Z 值。
  • Z_MAX由面、沿线的长度或多点记录中各点的插值定义的面积中最高的表面高程。
  • Z_MEAN由面、沿线的长度或多点记录中各点的插值定义的面积中的平均表面高程。
  • SURFACE_AREA由每个面定义的区域的 3D 表面区域。
  • SURFACE_LENGTH沿着表面的线的 3D 距离。
  • MIN_SLOPE沿线或面定义的区域中的最接近零的坡度值。
  • MAX_SLOPE沿线或面定义的区域中的最高坡度值。
  • AVG_SLOPE沿线或面定义的区域中的平均坡度值。
String
method
(可选)

用于确定表面相关信息的插值方法。可用选项取决于输入表面的数据类型:

  • BILINEAR可从四个最邻近的像元中确定像元值的栅格表面的专用插值方法。这是适用于栅格表面的唯一选项。
  • LINEAR TIN、terrain 和 LAS 数据集的默认插值方法。根据由包含查询点 XY 位置的三角形定义的平面获取高程。
  • NATURAL_NEIGHBORS 通过将基于区域的权重应用于查询点的自然邻域获取高程。
  • CONFLATE_ZMIN 根据在查询点自然邻域中找到的最小 Z 值获取高程。
  • CONFLATE_ZMAX 根据在查询点自然邻域中找到的最大 Z 值获取高程。
  • CONFLATE_NEAREST 根据查询点自然邻域中的最近值获取高程。
  • CONFLATE_CLOSEST_TO_MEAN 根据距查询点所有自然邻域的平均值最近的 Z 值获取高程。
String
sample_distance
(可选)

用于内插 z 值的间距。默认情况下,如果输入表面是栅格,则使用栅格像元大小;如果输入是 terrain 或 TIN 数据集,则使用三角化网格面的自然增密。

Double
z_factor
(可选)

Z 值将乘上的系数。 此值通常用于转换 z 线性单位来匹配 x,y 线性单位。 默认值为 1,此时高程值保持不变。 如果输入表面的空间参考具有已指定线性单位的 z 基准,则此参数不可用。

Double
pyramid_level_resolution
(可选)

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

Double
noise_filtering
(可选)

排除以异常测量值为特征的部分表面参与到坡度计算过程中。线要素会提供长度过滤器,而面要素则提供面积过滤器。与任意一个过滤器选项对应的值都会以要素坐标系的线性单位进行评估。非坡度属性不受此参数影响。

String

派生输出

名称说明数据类型
output_feature_class

更新后的输入要素。

要素图层

代码示例

添加表面信息 (AddSurfaceInformation) 示例 1(Python 窗口)

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

arcpy.env.workspace = "C:/data"
arcpy.AddSurfaceInformation_3d("points.shp", "my_tin", "Z", "LINEAR")
添加表面信息 (AddSurfaceInformation) 示例 2(独立脚本)

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

'''*********************************************************************
Name: AddSurfaceInformation Example
Description: This script demonstrates how to use AddSurfaceInformation 
             on all 2D feature classes in a target workspace.
*********************************************************************'''
# Import system modules
import arcpy

# Set Local Variables
arcpy.env.workspace = 'c:/data'
inSurface = 'fgdb.gdb/municipal/terrain'
pyramid = 5
method = "BILINEAR"

# Create list of feature classes
fcList = arcpy.ListFeatureClasses()

if fcList:
    for fc in fcList:
        desc = arcpy.Describe(fc)
        # Determine if the feature is 2D
        if not desc.hasZ:
            if desc.shapeType == "Polygon":
                # Desired properties separated by semi-colons
                Prop = "Z_MIN;Z_MAX" 
            elif desc.shapeType == "Point":
                Prop = "Z"
            elif desc.shapeType == "Multipoint":
                Prop = "Z_MIN;Z_MAX;Z_MEAN"
            elif desc.shapeType == "Polyline":
                Prop = "LENGTH_3D"
            # Execute AddSurfaceInformation
            arcpy.ddd.AddSurfaceInformation(fc, inSurface, Prop, 
                                            method, 15, 1, pyramid)
            print("Completed adding surface information.")

许可信息

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

相关主题