更新要素 Z 值 (3D Analyst)

摘要

使用表面来更新 3D 要素折点的 z 坐标。

使用情况

  • 只会更新与输入表面完全重叠的要素的折点。将跳过与表面部分不重叠的要素。

    注:

    如果给定折点获取的 z 值在地理数据库要素的空间参考 z 值域之外,则不会更新折点的 z 值。创建输入要素的副本并指定适当的 z 值域以处理受影响的要素。

参数

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

折点 z 值将被修改的 3D 要素。

Feature Layer
输入表面

将用于确定 3D 要素折点新 z 值的表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer
插值方法
(可选)

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

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

将使用值进行填充的现有数值字段,可反映要素的折点是否已成功更新。已更新要素的值会被指定为 1,而未更新要素的值会被指定为 0。不会更新与表面部分重叠的要素。

Field

派生输出

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

更新后的 3D 要素,已修改其折点 z 值。

要素图层

arcpy.ddd.UpdateFeatureZ(in_features, in_surface, {method}, {status_field})
名称说明数据类型
in_features

折点 z 值将被修改的 3D 要素。

Feature Layer
in_surface

将用于确定 3D 要素折点新 z 值的表面。

LAS Dataset Layer; Mosaic Layer; Raster Layer; TIN Layer
method
(可选)

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

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

将使用值进行填充的现有数值字段,可反映要素的折点是否已成功更新。已更新要素的值会被指定为 1,而未更新要素的值会被指定为 0。不会更新与表面部分重叠的要素。

Field

派生输出

名称说明数据类型
out_feature_class

更新后的 3D 要素,已修改其折点 z 值。

要素图层

代码示例

UpdateFeatureZ 示例 1(Python 窗口)

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

arcpy.env.workspace = 'C:/data'

arcpy.UpdateFeatureZ_3d('lines_3d.shp', 'dsm.tif', status_field='Updated')
UpdateFeatureZ 示例 2(独立脚本)

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

'''****************************************************************************
       Name: Update Antenna Positions
Description: Updates antenna positions based on elevations from a surface.
****************************************************************************'''
# Import system modules
import arcpy

in_fc = arcpy.GetParameterAsText(1) # pt features representing antenna locations
surface = arcpy.GetParameterAsText(2) # surface used to modify feature Z values


try:
    if arcpy.Describe(surface).dataType in ('Raster', 'RasterLayer'):
        method = 'BILINEAR'
    else:
        method = 'CONFLATE_ZMAX'
    arcpy.ddd.UpdateFeatureZ(in_fc, surface, method)

except arcpy.ExecuteError:
    print(arcpy.GetMessages())

许可信息

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

相关主题