标注 | 说明 | 数据类型 |
输入表面栅格 | 输入表面栅格。 | Raster Layer |
输出栅格 | 输出栅格。 此栅格为浮点类型。 | Raster Dataset |
参数类型 (可选) | 指定将计算的输出表面参数类型。
| String |
局部表面类型 (可选) | 指定将在目标像元周围拟合的表面函数的类型。
| String |
邻域距离 (可选) | 将根据与目标像元中心之间的这一距离计算输出。 邻域距离可确定邻域大小。 默认值为输入栅格像元大小,可生成 3 x 3 邻域。 | Linear Unit |
使用自适应邻域 (可选) | 指定邻域距离是否随地表变化而变化(自适应)。 最大距离由邻域距离确定。 最小距离为输入栅格像元大小。
| Boolean |
Z 单位 (可选) | 指定将用于垂直 z 值的线性单位。 由垂直坐标系(如果存在)定义。 如果垂直坐标系不存在,则应使用单位列表来定义 z 单位,以确保测地线计算正确。 默认单位为米。
| String |
坡度测量 (可选) | 将用于输出坡度数据的测量单位(度或百分比)。 仅当参数类型参数设置为坡度时,此参数才可用。
| String |
工程测地线方位角 (可选) |
指定是否将投影测地线方位角以校正由输出空间参考引起的角度失真。
仅当参数类型参数设置为坡向时,此参数才可用。 | Boolean |
使用赤道投影 (可选) |
指定是从赤道上的一点测量坡向还是从北极测量坡向。
仅当参数类型参数设置为坡向时,此参数才可用。 | Boolean |
输入分析掩膜 (可选) | 用于定义将进行分析的位置的输入数据。 它可以是栅格,也可以是要素数据集。 如果输入为栅格,则可以为整型或浮点型。 如果输入为要素数据,则可以为点、线或面。 当输入掩膜数据为栅格时,将在具有有效值(包括零)的位置进行分析。 掩膜输入中的 NoData 像元在输出中将为 NoData。 | Composite Geodataset |
需要 Spatial Analyst 许可。
需要 3D Analyst 许可。
使用情况
通过在目标像元周围拟合局部表面来逐个像元地计算输出参数。 参数类型参数(Python 中的 parameter_type)的可用表面参数选项包括:坡度、坡向、平均曲率、切向(法向等值线)曲率、剖面(法向坡度线)曲率、平面(投影等值线)曲率、等值线测地扭转、高斯曲率和 Casorati 曲率。
所有输出参数均使用测地坐标和方程式进行计算。
当为参数类型指定坡度(Python 中的 SLOPE)选项时,输出表示每个数字高程模型 (DEM) 像元的高程变化率。 它是 DEM 的一阶导数。 坡度输出值的范围取决于测量单位的类型。
当为参数类型指定坡向(Python 中的 ASPECT)选项时,输出可识别每个位置下坡所面对的罗盘方向。 坡向由 0 到 360 度之间的正度数表示,以北为基准方向按顺时针进行测量。
曲率用于描述曲面的形状。 当将曲率应用于地球科学时,我们可以了解重力、侵蚀以及其他因素对表面的影响,并将其与其他表面参数结合使用,以识别地形并对其进行分类。
- 平均曲率(Python 中的 MEAN_CURVATURE)- 表面参数用于测量表面的总曲率。 计算最小曲率和最大曲率的平均值即可获得平均曲率。 当为参数类型指定此参数时,输出等效于剖面(法向坡度线)曲率和切向(法向等值线)曲率的平均值。 除极值外,其正负符号并非确定的指标。 高正值表示最大剥蚀区域,高负值表示最大累积区域(Minár 等人, 2020)。
- 剖面(法向坡度线)曲率(Python 中的 PROFILE_CURVATURE)- 可沿坡度线测量几何法曲率。 正值表示表面流动和侵蚀加速的区域。 负剖面曲率表示表面流动和沉降减缓的区域。 正剖面(法向坡度线)曲率表示表面在坡度方向上的像元处凸起。 负曲率表示表面在相同方向上的像元处凹陷。 值为 0 表示表面为平面。
- 切向(法向等值线)曲率(Python 中的 TANGENTIAL_CURVATURE)- 可在垂直于坡度线且与等值线相切的位置处测量几何法曲率。 正值表示表面流分散的区域。 负切向曲率表示表面流会聚的区域。 正切向(法向等值线)曲率表示表面在与坡度方向垂直的像元处凸起。 负曲率表示表面在与坡度方向垂直的像元处凹陷。 值为 0 表示表面为平面。
- 平面(投影等值线)曲率(Python 中的 CONTOUR_CURVATURE)- 沿等值线的曲率。
- 等值线测地挠率(Python 中的 CONTOUR_GEODESIC_TORSION) - 沿等值线的坡度角变化率。
- 高斯曲率(Python 中的 GAUSSIAN_CURVATURE)- 表面的整体曲率。 曲率是最小曲率和最大曲率的乘积,可以取负值和正值。 正值表示表面在该像元处为凸面,而复制表示为凹面。 值为 0 表示表面为平面。
- Casorati 曲率(Python 中的 CASORATI_CURVATURE)- 表面的一般曲率。 该值可为 0 或正数。 高正值表示在多个方向上出现急剧弯曲的区域。
所有曲率类型输出的单位将是输出坐标系环境的 x,y 单位的倒数(高斯曲率倒数的平方)。
局部表面类型参数中的二次选项(在 Python 中,local_surface_type = "QUADRATIC")无法与邻域像元精确拟合。 这是大多数数据和应用程序的默认和推荐选项。
- 二次表面最大程度地减少了噪点表面数据(例如高分辨率激光雷达表面)的影响,这在计算曲率时尤其重要。
- 当指定的邻域大小大于像元大小以及使用自适应邻域选项时,将使用二次曲面。
局部表面类型参数中的双二次选项(在 Python 中,local_surface_type = "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 中,project_geodesic_azimuths = "USE_EQUATORIAL_ASPECT"),系统将从赤道上的某个点开始测量坡向,以纠正接近两极时发生的方向偏斜。 此参数可确保南北轴和东西轴相互垂直。
如果您的地形靠近北极或南极,请选中使用赤道投影参数。
使用输入分析掩膜参数(Python 中的 in_analysis_mask)将分析限制为输入表面栅格内的特定相关位置。 可以根据栅格或要素数据定义位置。 输入分析掩模参数将优先于掩膜环境设置。
当输入表面栅格(Python 中的 in_raster)值和输入分析掩膜栅格数据(Python 中的 in_analysis_mask)具有相同的像元大小,且像元对齐时,则可将其直接应用于工具中。 在工具操作期间,系统不会对其进行内部重采样。
如果像元大小不同,则输出像元大小将为输入的最大值,而输入表面栅格值将在内部用作捕捉栅格。 如果像元大小相同,但是像元未对齐,则输入表面栅格值将在内部用作捕捉栅格。 在执行提取操作之前,上述任一情况都会触发内部重采样。
参考文献:
- James, D. E., Tomer, M. D., and Porter, S. A. 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., and Jenčo, M. A comprehensive system of definitions of land surface (topographic) curvatures, with implications for their application in geoscience modelling and prediction. Earth-Science Reviews, 103414, 2020. https://doi.org/10.1016/j.earscirev.2020.103414
参数
arcpy.ddd.SurfaceParameters(in_raster, out_raster, {parameter_type}, {local_surface_type}, {neighborhood_distance}, {use_adaptive_neighborhood}, {z_unit}, {output_slope_measurement}, {project_geodesic_azimuths}, {use_equatorial_aspect}, {in_analysis_mask})
名称 | 说明 | 数据类型 |
in_raster | 输入表面栅格。 | Raster Layer |
out_raster | 输出栅格。 此栅格为浮点类型。 | Raster Dataset |
parameter_type (可选) | 指定将计算的输出表面参数类型。
| String |
local_surface_type (可选) | 指定将在目标像元周围拟合的表面函数的类型。
| String |
neighborhood_distance (可选) | 将根据与目标像元中心之间的这一距离计算输出。 邻域距离可确定邻域大小。 默认值为输入栅格像元大小,可生成 3 x 3 邻域。 | Linear Unit |
use_adaptive_neighborhood (可选) | 指定邻域距离是否随地表变化而变化(自适应)。 最大距离由邻域距离确定。 最小距离为输入栅格像元大小。
| Boolean |
z_unit (可选) | 指定将用于垂直 z 值的线性单位。 由垂直坐标系(如果存在)定义。 如果垂直坐标系不存在,则应使用单位列表来定义 z 单位,以确保测地线计算正确。 默认单位为米。
| String |
output_slope_measurement (可选) | 将用于输出坡度数据的测量单位(度或百分比)。
仅当 parameter_type 参数设置为 SLOPE 时,系统才支持此参数。 | String |
project_geodesic_azimuths (可选) |
指定是否将投影测地线方位角以校正由输出空间参考引起的角度失真。
此参数仅在 parameter_type 参数设置为 ASPECT 时受支持。 | Boolean |
use_equatorial_aspect (可选) |
指定是从赤道上的一点测量坡向还是从北极测量坡向。
此参数仅在 parameter_type 参数设置为 ASPECT 时受支持。 | Boolean |
in_analysis_mask (可选) | 用于定义将进行分析的位置的输入数据。 它可以是栅格,也可以是要素数据集。 如果输入为栅格,则可以为整型或浮点型。 如果输入为要素数据,则可以为点、线或面。 当输入掩膜数据为栅格时,将在具有有效值(包括零)的位置进行分析。 掩膜输入中的 NoData 像元在输出中将为 NoData。 | Composite Geodataset |
代码示例
下面的示例演示了如何在 Python 窗口中使用此工具。
本示例使用自适应邻域方法生成输出值以百分比表示的坡度栅格。 最大邻域距离为 5 米。
from arcpy.ddd import *
SurfaceParameters("elevation_1m.tif", "C:/data/output/outsurfaceparameters01.tif",
"", "", "5 METERS", "ADAPTIVE_NEIGHBORHOOD", "", "PERCENT_RISE")
下面的示例演示了如何在独立 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: 3D Analyst Extension
# Import system modules
import arcpy
from arcpy.ddd import *
# Set environment settings
arcpy.env.workspace = "C:/data"
# Check out the ArcGIS 3D Analyst extension license
arcpy.CheckOutExtension("3D")
# Set local variables
inRaster = "elevation_1m.tif"
outRaster = "C:/data/output/outsurfaceparameters02.tif"
inParameterType = "PROFILE_CURVATURE"
inNeighborhoodDistance = "10 METERS"
inUseAdaptiveNeighborhood = "ADAPTIVE_NEIGHBORHOOD"
# Execute the tool
SurfaceParameters(inRaster, outRaster, inParameterType, "",
inNeighborhoodDistance, inUseAdaptiveNeighborhood)
下面的示例演示了如何在独立 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: 3D Analyst Extension
# Import system modules
import arcpy
from arcpy.ddd import *
# Set environment settings
arcpy.env.workspace = "C:/data"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("3D")
# Set local variables
inRaster = "elevation_1m.tif"
outRaster = "C:/data/output/outsurfaceparameters03.tif"
inParameterType = "ASPECT"
inNeighborhoodDistance = "5 METERS"
inProjectGeodesicAzimuths = "PROJECT_GEODESIC_AZIMUTHS"
# Execute the tool
SurfaceParameters(inRaster, outRaster, inParameterType, "", inNeighborhoodDistance,
"", "", "", inProjectGeodesicAzimuths)
许可信息
- Basic: 需要 3D Analyst 或 Spatial Analyst
- Standard: 需要 3D Analyst 或 Spatial Analyst
- Advanced: 需要 3D Analyst 或 Spatial Analyst