坡度的工作原理
坡度工具用于为每个像元计算值在从该像元到与其相邻的像元方向上的最大变化率。实际上,高程随着像元与其相邻的八个像元之间距离的变化而产生的最大变化率可用来识别自该像元开始的最陡坡降。
从概念上讲,该工具会将一个平面与要处理的像元或中心像元周围一个 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
这里显示的值 57.29578 是对 180/pi 的计算结果进行截断而得到的值。
坡度算法也可以表示为:
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 度。
参考书目
Burrough, P. A., and McDonell, R. A., 1998. Principles of Geographical Information Systems (Oxford University Press, New York), 190 pp.