资源描述
地理国情监测云平台
ArcGIS教程:坡度
一、了解坡度
坡度可表明表面上某个位置的最陡下坡倾斜程度。可针对 TIN 中的每个三角形和栅格中的每个像元计算坡度。对于不规则三角网 (TIN),坡度为各三角形中的最大高程变化率。对于栅格,坡度为每个像元及与其相邻的八个像元中的最大高程变化率。
坡度命令可提取输入表面栅格,并计算出包含各个像元坡度的输出栅格。坡度值越小,地势越平坦;坡度值越大,地势越陡峭。可使用百分比单位计算输出坡度栅格,也可以以度为单位进行计算。
坡度角等于 45 度时,高程增量等于水平增量。如果以百分比形式表示,此角的坡度为 100%。如果坡度接近垂直(90度),则百分比坡度接近无穷大。
坡度函数最常用于处理高程格网,如下图所示。较为陡峭的坡在输出坡度地图中显示为红色。
二、坡度
1、摘要
判断栅格表面的各像元中的坡度(梯度或 z 值的最大变化率)。
2、插图
3、用法
· 坡度是指各像元中 z 值的最大变化率。
· 当表面 z 单位用其他单位而非地面 x,y 单位表示时,需要使用 Z 因子对坡度计算进行校正。
· 输出值的范围取决于测量单位的类型。
§ 如果为度,坡度值的范围为 0 至 90。
§ 如果为高程增量,范围为 0 至无穷大。平坦表面为 0%,45 度表面为 100%,随着表面变得越来越接近垂直,高程增量百分比将变得越来越大。
· 如果直接邻域(3 x 3 窗口)中的中心像元为 NoData,则输出将为 NoData。
· 如果有任何邻域像元为 NoData,则会向这些像元分配中心像元的值,然后再计算坡度。
4、语法
Slope (in_raster, {output_measurement}, {z_factor})
参数
说明
数据类型
in_raster
输入表面栅格。
Raster Layer
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
5、返回值
名称
说明
数据类型
out_raster
输出坡度栅格。
Raster
6、代码实例
坡度示例 1(Python 窗口)
在本例中将确定输入表面栅格的坡度值。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outSlope = Slope("elevation", "DEGREE", 0.3043)
outSlope.save("C:/sapyexamples/output/outslope01")
坡度示例 2(独立脚本)
在本例中将确定输入表面栅格的坡度值。
# Name: _Ex_02.py
# Description: Identifies the rate of maximum change
# in z-value from each cell.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster = "elevation"
outMeasurement = "DEGREE"
zFactor = 0.3043
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Slope
outSlope = Slope(inRaster, outMeasurement, zFactor)
# Save the output
outSlope.save("C:/sapyexamples/output/outslope02")
三、坡度的工作原理
返回值
坡度工具用于为每个像元计算值在从该像元到与其相邻的像元方向上的最大变化率。实际上,高程随着像元与其相邻的八个像元之间距离的变化而产生的最大变化率可用来识别自该像元开始的最陡坡降。
从概念上讲,该工具会将一个平面与要处理的像元或中心像元周围一个 3 x 3 的像元邻域的 z 值进行拟合。该平面的坡度值通过最大平均值法来计算。该平面的朝向就是待处理像元的坡向。坡度值越小,地势越平坦;坡度值越大,地势越陡峭。
如果邻域内某个像元位置的 z 值为 NoData,则将中心像元的 z 值指定给该位置。在栅格的边缘上,至少有三个像元(在栅格范围外)的 z 值为 NoData。中心像元的 z 值将被指定给这些像元。最后得出与这些边缘像元拟合的 3 x 3 平面的扁率,这通常会使坡度减小。
输出坡度栅格可使用两种单位计算:度和百分比(高程增量百分比)。如果将高程增量百分比视为高程增量除以水平增量后再乘以 100,就可以更好地理解高程增量百分比。请考虑下面的三角形 B。当角度为 45 度时,高程增量等于水平增量,所以高程增量百分比为 100%。如三角形 C 所示,当坡度角接近直角(90 度)时,高程增量百分比开始接近无穷大。
坡度工具最常用在高程数据集处理中,如下图所示。较陡的坡度在输出坡度栅格上以红色阴影显示。
该工具可与其他类型的连续数据(如人口)配合使用,用来识别值的急剧变化。
坡度算法
坡度取决于表面从中心像元开始在水平 (dz/dx) 方向和垂直 (dz/dy) 方向上的变化率(增量)。用来计算坡度的基本算法是:
slope_radians = ATAN ( √ ([dz/dx]2 + [dz/dy]2) )
坡度通常以度为单位来测量,其算法如下:
slope_degrees = ATAN ( √ ([dz/dx]2 + [dz/dy]2) ) * 57.29578
坡度算法也可以表示为:
slope_degrees = ATAN (rise_run) * 57.29578
· 其中:
rise_run = √ ([dz/dx]2 + [dz/dy]2]
中心像元及其相邻的八个像元的值确定水平增量和垂直增量。这些相邻的像元使用字母 a 至 i 进行确定,其中 e 表示当前正在计算坡向的像元。
像元 e 在 x 方向上的变化率将通过以下算法进行计算:
[dz/dx] = ((c + 2f + i) - (a + 2d + g) / (8 * x_cellsize)
像元 e 在 y 方向上的变化率将通过以下算法进行计算:
[dz/dy] = ((g + 2h + i) - (a + 2b + c)) / (8 * y_cellsize)
坡度计算示例
例如,将计算如下所示的移动窗口内中心像元的坡度值。
像元大小为 5 个单位。默认情况下,将使用度来计算坡度。
中心像元 e 在 x 方向上的变化率为:
[dz/dx] = ((c + 2f + i) - (a + 2d + g) / (8 * x_cellsize)
= ((50 + 60 + 10) - (50 + 60 + 8)) / (8 * 5)
= (120 - 118) / 40
= 0.05
像元 e 在 y 方向上的变化率为:
[dz/dy] = ((g + 2h + i) - (a + 2b + c)) / (8 * y_cellsize)
= ((8 + 20 + 10) - (50 + 90 + 50)) / (8 * 5)
= (38 - 190 ) / 40
= -3.8
代入 x 方向和 y 方向上的变化率,计算中心像元 e 的坡度:
rise_run = √ ([dz/dx]2 + [dz/dy]2)
= √ ((0.05)2 + (-3.8)2)
= √ (0.0025 + 14.44)
= 3.80032
slope_degrees = ATAN (rise_run) * 57.29578
= ATAN (3.80032) * 57.29578
= 1.31349 * 57.29578
= 75.25762
像元 e 的整型坡度值为 75 度。
北京数字空间科技有限公司
展开阅读全文