表面参数 (Spatial Analyst)

需要 Spatial Analyst 许可。

需要 3D Analyst 许可。

描述

确定栅格表面的参数,例如坡向、坡度和曲率。

了解有关表面参数工作原理的详细信息

使用方法

  • 通过在目标像元周围拟合局部表面来逐个像元地计算输出参数。可以计算五个表面参数:坡度坡向平均曲率切向(法向等值线)曲率剖面(法向坡度线)曲率。这些选项可在参数类型参数(Python 中的 parameter_type)中提供。

  • 所有输出参数均使用测地坐标和方程式进行计算。

  • 当为参数类型指定坡度(Python 中的 SLOPE)选项时,输出表示每个数字高程模型 (DEM) 像元的高程变化率。它是 DEM 的一阶导数。坡度输出值的范围取决于测量单位的类型。

  • 当为参数类型指定坡向(Python 中的 ASPECT)选项时,输出可识别每个位置下坡所面对的罗盘方向。坡向由 0 到 360 度之间的正度数表示,以北为基准方向按顺时针进行测量。

  • 曲率用于描述曲面的形状。当将曲率应用于地球科学时,我们可以了解重力、侵蚀以及其他作用力对表面的影响,并将其与其他表面参数结合使用,以识别地形并对其进行分类。

    • 平均曲率(Python 中的 MEAN_CURVATURE)可测量表面的总曲率。计算最小曲率和最大曲率的平均值即可获得平均曲率。当为参数类型指定此参数时,输出等效于剖面(法向坡度线)曲率和切向(法向等值线)曲率的平均值。除极值外,其正负符号并非确定的指标。高正值表示最大剥蚀区域,高负值表示最大累积区域 (Minár et al., 2020)。
    • 剖面(法向坡度线)曲率(Python 中的 PROFILE_CURVATURE)可沿坡度线测量几何法曲率。正值表示表面流动和侵蚀加速的区域。负剖面曲率表示表面流动和沉降减缓的区域。正剖面(法向坡度线)曲率表示表面在坡度方向上的像元处凸起。负曲率表示表面在相同方向上的像元处凹陷。值为 0 说明表面是平的。
    • 切向(法向等值线)曲率(Python 中的 TANGENTIAL_CURVATURE)可在垂直于坡度线且与等值线相切的位置处测量几何法曲率。正值表示表面流分散的区域。负切向曲率表示表面流会聚的区域。正切向(法向等值线)曲率表示表面在与坡度方向垂直的像元处凸起。负曲率表示表面在与坡度方向垂直的像元处凹陷。值为 0 说明表面是平的。
  • 局部表面类型(Python 中的 local_surface_type)中的二次(Python 中的 QUADRATIC)无法与邻域像元精确拟合。这是大多数数据和应用程序的默认和推荐选项。

    • 二次表面最大程度地减少了噪点表面数据(例如高分辨率激光雷达表面)的影响,这在计算曲率时尤其重要。
    • 当指定的邻域大小大于像元大小以及使用自适应邻域选项时,应使用二次曲面。
  • 局部表面类型中的双二次(Python 中的 BIQUADRATIC)选项可与来自邻域像元的数据精确拟合。

    • 此选项适用于高精度输入表面。
    • 如果邻域距离大于输入栅格像元大小,则将失去双二次表面类型的精度优势。邻域距离应保留为默认值(等于像元大小)。
  • 邻域距离(Python 中的 neighborhood_distance)可确定邻域大小,并根据与目标像元中心之间的这一距离计算表面参数。

    • 邻域距离不能小于输入栅格像元大小。
    • 较小邻域距离可捕获地表中的更多局部变化(较小地表要素的特征)。对于高分辨率高程数据,更大的距离可能更合适。
  • 如果选中使用自适应邻域参数(在 Python 中,use_adaptive_neighborhood 设置为 ADAPTIVE_NEIGHBORHOOD),邻域距离将随地形的变化而变化。如果计算窗口中的内容变化过大,则邻域距离将缩小。

  • 为确保正确计算坡度输出,指定表面 Z 单位(Python 中的 z-unit)至关重要。

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

  • 坡度输出值的范围取决于输出坡度测量(Python 中的 output_slope_measurement)单位的类型:

    • 如果为(Python 中的 DEGREE),坡度值的范围为 0 至 90。
    • 如果为增量百分比(Python 中的 PERCENT_RISE),则范围为 0 至无穷大。平坦表面为 0%,45 度表面为 100%,随着表面变得越来越接近垂直,增量百分比将变得越来越大。
  • 如果选中投影测地线方位角参数(在 Python 中,project_geodesic_azimuths 设置为 PROJECT_GEODESIC_AZIMUTHS),则以下表述将为真:

    • 北方始终以 360 度表示。
    • 将投影方位角以纠正由非等角的输出坐标系引起的变形。这些角度可用于沿着最陡峭的下坡坡度准确定位点。

    如果您要使用表面参数输出作为距离工具集中工具的输入反方向或流向栅格(Python 中的 in_back_direction_raster)参数中的反方向输入,请选中工程测地线方位角参数。

  • 如果选中使用赤道投影参数(在 Python 中,project_geodesic_azimuths 设置为 USE_EQUATORIAL_ASPECT),系统将从赤道上的某个点开始测量坡向,以纠正接近两极时发生的方向偏斜。此选项可确保南北轴和东西轴相互垂直。

    如果您的地形靠近北极或南极,请选中使用赤道投影参数。

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

  • 参考书目:

    • James D.E., M.D. Tomer, S.A. Porter. (2014). Trans-scalar landform segmentation from high-resolution digital elevation models. Poster presented at: ESRI Annual Users Conference; July 2014; San Diego, California.
    • Minár, J., Evans, I. S., & Jenčo, M. (2020). A comprehensive system of definitions of land surface (topographic) curvatures, with implications for their application in geoscience modelling and prediction. Earth-Science Reviews, 103414. https://doi.org/10.1016/j.earscirev.2020.103414

语法

SurfaceParameters(in_raster, {parameter_type}, {local_surface_type}, {neighborhood_distance}, {use_adaptive_neighborhood}, {z_unit}, {output_slope_measurement}, {project_geodesic_azimuths}, {use_equatorial_aspect})
参数说明数据类型
in_raster

输入表面栅格。

Raster Layer
parameter_type
(可选)

确定要计算的输出表面参数类型。

  • SLOPE高程变化率。这是默认设置。
  • ASPECT每个像元的最大变化率的下坡方向。
  • MEAN_CURVATURE测量表面的总曲率。计算最小曲率和最大曲率的平均值即可获得平均曲率。此曲率可描述表面的固有凸度或凹度,与方向或重力影响无关。
  • TANGENTIAL_CURVATURE在垂直于坡度线且与等值线相切的位置处测量几何法曲率。通常应用此曲率来表征流经某表面的流的汇聚和分散。
  • PROFILE_CURVATURE沿坡度线测量几何法曲率。通常应用此曲率来表征流经某表面的流的加速和减速。
String
local_surface_type
(可选)

确定在目标像元周围拟合的表面函数的类型。

  • QUADRATIC将二次表面函数拟合到邻域像元。这是默认设置。
  • BIQUADRATIC将双二次表面函数拟合到邻域单元。
String
neighborhood_distance
(可选)

根据与目标像元中心之间的这一距离计算输出。邻域距离可确定邻域大小。

默认值为输入栅格像元大小,可生成 3 x 3 邻域。

Linear Unit
use_adaptive_neighborhood
(可选)

允许邻域距离随地表变化而变化。最大距离由邻域距离确定。最小距离为输入栅格像元大小。

  • FIXED_NEIGHBORHOOD在所有位置使用单一(固定)邻域距离。这是默认设置。
  • ADAPTIVE_NEIGHBORHOOD在所有位置使用自适应邻域距离。
Boolean
z_unit
(可选)

垂直 z 值的线性单位。

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

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

parameter_typeSLOPE 时,确定输出坡度栅格的测量单位(度或百分比)。

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

指定是否将投影测地线方位角以校正由输出空间参考引起的角度失真。

  • GEODESIC_AZIMUTHS测地线方位角将不会投影。这是默认设置。
  • PROJECT_GEODESIC_AZIMUTHS测地线方位角将被投影。
Boolean
use_equatorial_aspect
(可选)

从赤道上的一点测量坡向。

  • NORTH_POLE_ASPECT从北极测量坡向。这是默认设置。
  • EQUATORIAL_ASPECT从赤道上的一点测量坡向。
Boolean

返回值

名称说明数据类型
out_raster

输出栅格。

Raster

代码示例

SurfaceParameters 示例 1(Python 窗口)

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

本示例使用自适应邻域方法生成输出值以百分比表示的坡度栅格。最大邻域距离为 5 米。

from arcpy.sa import *
outSurfaceParameters = SurfaceParameters("elevation_1m.tif", "", "", "5 METERS",
                                         "ADAPTIVE_NEIGHBORHOOD", "", "PERCENT_RISE")
outSurfaceParameters.save("C:/sapyexamples/output/outsurfaceparameters01.tif")
SurfaceParameters 示例 2(独立脚本)

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

本示例使用自适应邻域方法生成剖面(法向坡度线)曲率栅格。最大邻域距离为 10 米。

# Name: SurfaceParameters_Ex_02.py
# Description: Derive profile (normal slope line) curvature for a 1m resolution
# elevation raster over an adaptive neighborhood distance of maximum 10m. 
# 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"
inParameterType = "PROFILE_CURVATURE"
inNeighborhoodDistance = "10 METERS"
inUseAdaptiveNeighborhood = "ADAPTIVE_NEIGHBORHOOD"

# Execute the tool
outSurfaceParameters = SurfaceParameters(inRaster, inParameterType, "",
                                         inNeighborhoodDistance, inUseAdaptiveNeighborhood)

# Save the output 
outSurfaceParameters.save("C:/sapyexamples/output/outsurfaceparameters02.tif")
SurfaceParameters 示例 3(独立脚本)

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

本示例使用 5 米的邻域距离生成坡向栅格。使用非等角投影校正方向变形。

# Name: SurfaceParameters_Ex_03.py
# Description: Derive aspect for an elevation surface over a distance of 5m, correct
# for direction distortion from non-conformal projection system. 
# 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"
inParameterType = "ASPECT"
inNeighborhoodDistance = "5 METERS"
inProjectGeodesicAzimuths = "PROJECT_GEODESIC_AZIMUTHS"

# Execute the tool
outSurfaceParameters = SurfaceParameters(inRaster, inParameterType, "",
                                         inNeighborhoodDistance, "", "", "",
                                         inProjectGeodesicAzimuths)

# Save the output 
outSurfaceParameters.save("C:/sapyexamples/output/outsurfaceparameters03.tif")

许可信息

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

相关主题