关于terra包中SpatRaster粗糙度指数计算逻辑的技术问询
关于terra包地形指数的疑问与栖息地模型需求
一、terra包地形指数计算逻辑疑问
terra包提供了以下地形指数计算方法:
x <- terrain(x, v="roughness") x <- terrain(x, v="TPI") x <- terrain(x, v="TRI")
根据包文档描述:
- 粗糙度(roughness):定义为「某单元格与其8个相邻单元格的最大值与最小值之差」(Hijmans et al. 2023)。我对此存在疑问:边缘及角落单元格如何处理?是否会缩减为与3个(角落)或5个(边缘)相邻单元格进行计算?
- 崎岖度(TRI):定义为「某单元格与其8个相邻单元格的绝对差值的平均值」。我绘制了图示来呈现对该指数计算逻辑的理解,请问这个理解是否正确?
另外,我查阅了函数引用的Jones(1998)文献,其正确标题为《A comparison of algorithms used to compute hill slope as a property of the DEM》(DOI:10.1016/S0098-3004(98)00032-6),但未找到粗糙度的计算公式,希望获取更多相关资料。
二、栖息地模型相关需求与代码
我需要基于DSM计算大于16°的坡度,并以1.3m高差作为栖息地模型的判定标准,认为地形指数可能更适合该需求,当前坡度分类代码如下:
## > 16° slope habitat_slope_mat <- matrix(nrow = 2, ncol = 3) habitat_slope_mat[1, ] <- c(0,16,0) # from,to = 0 absent habitat_slope_mat[2, ] <- c(16,minmax(x)[2],1) # from,to = 1 present habitat_slope <- classify(x, habitat_slope_mat, include.lowest=TRUE)
内容的提问来源于stack exchange,提问作者Mark Thompson
相关产品推荐
相关产品推荐

