要素保留平滑 (Spatial Analyst)

需要 Spatial Analyst 许可。

摘要

该功能可平滑栅格表面,在去除噪声的同时保留要素。

了解有关“要素保留平滑”工作原理的详细信息

插图

“要素保留平滑”工具图示

使用情况

  • 可以使用此工具从数字高程模型 (DEM) 栅格中移除噪点。 它可以用于任何需要更平滑的最终输出的分析工作流。

  • 此工具包含多个参数,这些参数将会影响平滑过程。 可以单独或组合使用这些参数,以根据您的特定应用程序自定义结果。 可以通过以下方式控制分析:

    • 正在进行平滑的像元周围的邻域大小。
    • 受影响的局部变化的相对陡度。
    • 将应用平滑过程的次数。
    • 受影响的对象的相对高度。
  • 邻域距离参数用于定义邻域的大小。 请提供较小的值,由此确保仅去除噪点,同时保留输入栅格上的要素。 例如,设置 5 个像元将得到 11 x 11 像元处理窗口,这通常是一个很好的起点。

  • 法线差异阈值参数用于定义单次迭代中要素边陡度(以度为单位)的潜在最大变化。 指定较小的值(例如 15 度或更小)可确保将仅平滑掉平坦的要素边。

  • 最大高程变化参数用于定义单次迭代中要素高度的潜在最大变化。 指定较小的值(例如 0.5 米或更小)可确保将仅平滑掉较短的要素。

  • 迭代次数参数用于指定平滑过程的重复次数。 指定较大的值可以提高输出栅格的平滑度;但是,更多次迭代将导致附加处理时间。 在许多情况下,较小的值(例如 3)适用于此参数。

  • 如果输入表面栅格参数值已定义垂直坐标系,则分析中将采用垂直坐标系的 z 单位。 如果输入表面栅格未定义垂直坐标系,请指定 Z 单位参数值以确保在分析过程中正确计算法线矢量。

  • 此工具可通过 GPU 加速,也就是说,如果系统中安装了兼容的图形处理器 (GPU),该设备将用于增强工具的性能。 使用用于分析的目标设备(Python 中的 analysis_target_device)参数来控制是使用 GPU 还是 CPU 来运行该工具。

    有关兼容的 GPU 以及配置和使用 GPU 设备的详细信息还有故障排除提示,请参阅使用 Spatial Analyst 进行 GPU 处理

  • 该工具支持并行处理。 如果您的计算机具有多个处理器或处理器具有多个内核,则会获得更好的性能,特别是处理较大数据集时。 使用 Spatial Analyst 进行并行处理帮助主题包括有关此功能及其配置方法的详细信息。

  • 当输出栅格格式为 .crf 时,此工具支持金字塔栅格存储环境。 默认情况下,将在输出中创建金字塔。 对于任何其他输出格式,不支持此环境,并且不会创建金字塔。

  • 有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst

参数

标注说明数据类型
输入表面栅格

输入表面栅格。

Raster Layer
距离单位
(可选)

指定将用于邻域距离参数的距离单位。 默认为像元

  • 像元距离单位将为像元。
  • 距离单位将为米。
  • 厘米距离单位将为厘米。
  • 千米距离单位将为公里。
  • 英寸距离单位将为英寸。
  • 英尺距离单位将为英尺。
  • 距离单位将为码。
  • 英里距离单位将为英里。
String
邻域距离
(可选)

与目标像元之间的距离将定义处理邻域的大小。

该值必须为正数。 默认值为 5 个像元。

Double
法线差异阈值
(可选)

在计算当前处理像元的新像元值时要包含的邻近像元的最大法线差异。 法线差异是邻近像元的法线矢量与当前处理像元的法线矢量形成的角度。

该值可以为 -180 度至 180 度之间的任意数字。 默认值是 15 度。

Double
迭代次数
(可选)

将重复平滑过程的次数。

该值必须为正整数。 默认值为 3。

Long
最大高程变化
(可选)

一次迭代中任何像元的允许最大高度变化。

当针对像元位置计算新值时,会将其与该像元位置处的原始值进行比较。 如果差值小于或等于此参数设置,则将使用新像元值。 否则,原始值将保持不变。

该值必须为正数。 默认值为 0.5 米。

Linear Unit
Z 单位
(可选)

指定将用于垂直 z 值的线性单位。

由垂直坐标系(如果存在)定义。 如果垂直坐标系不存在,则应使用单位列表来定义 z 单位,以确保测地线计算正确。 默认单位为米。

  • 英寸线性单位将为英寸。
  • 英尺线性单位将为英尺。
  • 线性单位将为码。
  • 英里(美制)线性单位将为英里。
  • 海里线性单位将为海里。
  • 毫米线性单位将为毫米。
  • 厘米线性单位将为厘米。
  • 线性单位将为米。
  • 千米线性单位将为千米。
  • 分米线性单位将为分米。
String
用于分析的目标设备
(可选)

指定将用于执行计算的设备。

  • 先 GPU 后 CPU如果找到了兼容的 GPU,则系统会将其用于执行计算。 否则,系统将使用 CPU。 这是默认设置。
  • 仅 CPU计算将仅在 CPU 上执行。
  • 仅 GPU计算将仅在 GPU 上执行。
String

返回值

标注说明数据类型
输出栅格

输出平滑栅格。

Raster

FeaturePreservingSmoothing(in_raster, {distance_units}, {neighborhood_distance}, {normal_difference_threshold}, {number_iterations}, {maximum_elevation_change}, {z_unit}, {analysis_target_device})
名称说明数据类型
in_raster

输入表面栅格。

Raster Layer
distance_units
(可选)

指定将用于 Neighborhood Distance 参数的距离单位。 默认值为 CELLS

  • CELLS距离单位将为像元。
  • METERS距离单位将为米。
  • CENTIMETERS距离单位将为厘米。
  • KILOMETERS距离单位将为公里。
  • INCHES距离单位将为英寸。
  • FEET距离单位将为英尺。
  • YARDS距离单位将为码。
  • MILES距离单位将为英里。
String
neighborhood_distance
(可选)

与目标像元之间的距离将定义处理邻域的大小。

该值必须为正数。 默认值为 5 个像元。

Double
normal_difference_threshold
(可选)

在计算当前处理像元的新像元值时要包含的邻近像元的最大法线差异。 法线差异是邻近像元的法线矢量与当前处理像元的法线矢量形成的角度。

该值可以为 -180 度至 180 度之间的任意数字。 默认值是 15 度。

Double
number_iterations
(可选)

将重复平滑过程的次数。

该值必须为正整数。 默认值为 3。

Long
maximum_elevation_change
(可选)

一次迭代中任何像元的允许最大高度变化。

当针对像元位置计算新值时,会将其与该像元位置处的原始值进行比较。 如果差值小于或等于此参数设置,则将使用新像元值。 否则,原始值将保持不变。

该值必须为正数。 默认值为 0.5 米。

Linear Unit
z_unit
(可选)

指定将用于垂直 z 值的线性单位。

由垂直坐标系(如果存在)定义。 如果垂直坐标系不存在,则应使用单位列表来定义 z 单位,以确保测地线计算正确。 默认单位为米。

  • INCH线性单位将为英寸。
  • FOOT线性单位将为英尺。
  • YARD线性单位将为码。
  • MILE_US线性单位将为英里。
  • NAUTICAL_MILE线性单位将为海里。
  • MILLIMETER线性单位将为毫米。
  • CENTIMETER线性单位将为厘米。
  • METER线性单位将为米。
  • KILOMETER线性单位将为千米。
  • DECIMETER线性单位将为分米。
String
analysis_target_device
(可选)

指定将用于执行计算的设备。

  • GPU_THEN_CPU如果找到了兼容的 GPU,则系统会将其用于执行计算。 否则,系统将使用 CPU。 这是默认设置。
  • CPU_ONLY计算将仅在 CPU 上执行。
  • GPU_ONLY计算将仅在 GPU 上执行。
String

返回值

名称说明数据类型
out_raster

输出平滑栅格。

Raster

代码示例

FeaturePreservingSmoothing 示例 1(Python 窗口)

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

本示例将使用 5 个像元的邻域距离和 15 度的法线差异阈值来平滑 1 米分辨率的 DEM。

from arcpy.sa import *
outFPS01 = FeaturePreservingSmoothing("elevation_1m.tif", "CELLS", 5, 15, 3, 
                                      "0.5 Meters", "METER", "GPU_THEN_CPU")
outFPS01.save("C:/sapyexamples/output/outsmoothraster01.tif")
FeaturePreservingSmoothing 示例 2(独立脚本)

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

本示例将使用 5 米的邻域距离和 10 度的法线差异阈值来平滑 1 米分辨率的 DEM。

# Name: FeaturePreservingSmoothing_Ex_02.py
# Description: Smooths a 1m resolution elevation raster  
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy.sa import *

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

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Set local variables
inRaster = "elevation_1m.tif"
distUnits = "METERS"
nbrDistance = 5
normDiffThreshold = 10
iterations = 1
maxElevChange = "1.5 Meters"
zUnit = ""
analysisDevice = ""

# Execute the tool
outFPS02 = FeaturePreservingSmoothing(inRaster, distUnits, nbrDistance,
                                    normDiffThreshold, iterations, maxElevChange,
                                    zUnit, analysisDevice)

# Save the output 
outFPS02.save("C:/sapyexamples/output/outsmoothraster02.tif")

许可信息

  • Basic: 需要 Spatial Analyst
  • Standard: 需要 Spatial Analyst
  • Advanced: 需要 Spatial Analyst

相关主题