坡度 (3D Analyst)

需要 Spatial Analyst 许可。

需要 3D Analyst 许可。

摘要

识别栅格中每个像元的坡度(梯度或陡度)。

表面参数工具可提供较新的实施和增强功能。

了解有关坡度工具工作原理的详细信息

插图

坡度工具图示
OutRas = Slope(InRas1)Slope_3d (InRas1, OutRas)

使用情况

  • 表面参数工具可提供坡度的较新实施,建议使用该工具来代替坡度工具。 坡度工具可将一个平面与九个局部像元进行拟合,但是,平面可能并非景观的良好描述符,可能会掩盖或夸大感兴趣的自然变化。 表面参数工具可将一个表面与像元邻域而不是平面进行拟合,以提供针对地形的更自然的拟合效果。

    坡度工具始终使用 3 × 3 像元窗口来计算值,而表面参数工具允许窗口大小介于 3 × 3 到 15 × 15 像元之间。 较大的窗口尺寸对于高分辨率高程数据很有用,可以适当的比例捕获地表过程。 表面参数还可提供自适应窗口选项,该选项可评估地形的局部变异性,并为每个像元标识最大的适当邻域大小。 对于被河流、道路或陡坡中断的平缓且均匀的地形而言,该工具很有用。

    如果您需要结果与先前工具运行结果完全匹配,或者快速执行时间比更好的算法更重要,则可以继续使用坡度工具的传统方法。

  • 此工具使用移动的 3 x 3 像元窗口来处理数据。 如果处理像元为 NoData,则该位置的输出将为 NoData。

  • 该工具还要求在与处理像元相邻的 8 个像元中,至少有 7 个具有有效值。 如果有效像元少于 7 个,则不执行计算,并且该处理像元处的输出将为 NoData。

  • 输出栅格最外侧行列的像元为 NoData。 这是因为沿着输入数据集边界,这些像元没有足够的有效相邻像元。

  • 输出值的范围取决于测量单位的类型。

    • 如果为度,坡度值的范围为 0 至 90。
    • 如果为增量百分比,则范围为 0 至无穷大。 平坦表面为 0%,45 度表面为 100%,随着表面变得越来越接近垂直,增量百分比将变得越来越大。

  • 对于平面方法,如果表面(垂直)z 单位使用其他单位而非地面 x,y 单位表示,则需要使用 Z 因子对坡度计算进行校正。 仅当选择平面方法时才会启用 Z 因子参数。

  • 在测地线方法中,指定表面 z 单位可确保输出的精度。 仅当选择测地线方法时才会启用 Z 单位参数。

  • 如果 z 单位可用于输入栅格的垂直坐标系,则将自动应用 z 单位。 如果缺失,建议您定义输入栅格的 z 单位。 可使用定义投影工具来指定 z 单位。 如果未定义 z 单位,则默认使用米。

  • 若要对输入栅格进行重采样,需使用双线性技术。 当输出坐标系、范围或像元大小与输入不同时,可以对输入栅格进行重新采样的示例。

  • 如果输入栅格参数值(Python 中的 in_raster)为高分辨率值(其像元大小小于几米,或者特别是存在噪点),请考虑使用表面参数工具及其用户定义的邻域距离选项,而非此工具的直接 3 x 3 邻域。 使用较大邻域可以最大程度地减少噪点表面的影响。 当使用高分辨率表面时,使用较大邻域也可以更好地表示地形和表面特征。

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

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

参数

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

输入表面栅格。

Raster Layer
输出栅格

输出坡度栅格。

此栅格为浮点类型。

Raster Dataset
输出测量单位
(可选)

指定输出坡度数据的测量单位(度或百分比)。

  • 坡度倾角将以度为单位进行计算。
  • 增量百分比坡度倾角将以增量百分比进行计算,也称为百分比坡度。
String
Z 因子
(可选)

一个表面 z 单位中地面 x,y 单位的数量。

z 单位与输入表面的 x,y 单位不同时,可使用 z 因子调整 z 单位的测量单位。 计算最终输出表面时,将用 z 因子乘以输入表面的 z 值。

如果 x,y 单位和 z 单位采用相同的测量单位,则 z 因子为 1。 这是默认设置。

如果 x,y 单位和 z 单位采用不同的测量单位,则必须将 z 因子设置为适当的因子,否则会得到错误的结果。 例如,如果 z 单位是英尺,而 x,y 单位是米,则应使用 z 因子 0.3048 将 z 单位从英尺转换为米(1 英尺 = 0.3048 米)。

Double
方法
(可选)

指定计算将基于平面(平地)还是测地线(椭球)方法。

平面方法适用于保持正确距离和面积的投影中的局部区域。 适用于覆盖诸如城市、县或面积较小的州等区域的分析。 测地线方法可以产生更精确的结果,但会造成处理时间这一潜在成本增加。

  • 平面将使用 2D 笛卡尔坐标系对投影平面执行计算。 这是默认方法。
  • 测地线通过将地球形状视为椭球体,在 3D 笛卡尔坐标系中执行计算。
String
Z 单位
(可选)

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

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

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

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

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

arcpy.ddd.Slope(in_raster, out_raster, {output_measurement}, {z_factor}, {method}, {z_unit}, {analysis_target_device})
名称说明数据类型
in_raster

输入表面栅格。

Raster Layer
out_raster

输出坡度栅格。

此栅格为浮点类型。

Raster Dataset
output_measurement
(可选)

指定输出坡度数据的测量单位(度或百分比)。

  • DEGREE坡度倾角将以度为单位进行计算。
  • PERCENT_RISE坡度倾角将以增量百分比进行计算,也称为百分比坡度。
String
z_factor
(可选)

一个表面 z 单位中地面 x,y 单位的数量。

z 单位与输入表面的 x,y 单位不同时,可使用 z 因子调整 z 单位的测量单位。 计算最终输出表面时,将用 z 因子乘以输入表面的 z 值。

如果 x,y 单位和 z 单位采用相同的测量单位,则 z 因子为 1。 这是默认设置。

如果 x,y 单位和 z 单位采用不同的测量单位,则必须将 z 因子设置为适当的因子,否则会得到错误的结果。 例如,如果 z 单位是英尺,而 x,y 单位是米,则应使用 z 因子 0.3048 将 z 单位从英尺转换为米(1 英尺 = 0.3048 米)。

Double
method
(可选)

指定计算将基于平面(平地)还是测地线(椭球)方法。

  • PLANAR将使用 2D 笛卡尔坐标系对投影平面执行计算。 这是默认方法。
  • GEODESIC通过将地球形状视为椭球体,在 3D 笛卡尔坐标系中执行计算。

平面方法适用于保持正确距离和面积的投影中的局部区域。 适用于覆盖诸如城市、县或面积较小的州等区域的分析。 测地线方法可以产生更精确的结果,但会造成处理时间这一潜在成本增加。

String
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

代码示例

Slope 示例 1(Python 窗口)

此示例将确定输入表面栅格的坡度值。

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.ddd.Slope("elevation", "C:/output/outslope01", "DEGREE", 0.3043)
Slope 示例 2(独立脚本)

此示例将确定输入表面栅格的坡度值。

# Name: Slope_3d_Ex_02.py
# Description: Identifies the rate of maximum change 
#              in z-value from each cell.
# Requirements: 3D Analyst Extension

# Import system modules
import arcpy
from arcpy import env

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

# Set local variables
inRaster = "elevation"
outRaster = "C:/output/outslope02"
outMeasurement = "DEGREE"
zFactor = ""
method = "GEODESIC"
zUnit = "FOOT"

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

# Execute Slope
arcpy.ddd.Slope(inRaster, outRaster, outMeasurement, zFactor, method, zUnit)

许可信息

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

相关主题