使用terra包terrain()计算坡向时,水体区域为何未显示NA或0?
SRTM数据坡向计算异常问题
我使用USGS Earth Explorer提供的SRTM数据(场景ID:n03_e036_1arc_v3),在R语言中通过terra包的terrain函数处理高程、坡度和坡向。高程和坡度结果表现正常,但西侧大片水体区域的坡向计算结果未出现预期的NA或0值,反而呈现异常图案(图1)。
对应的代码如下:
areaDEM <- raster('DEM/dem.tif') areaDEM <- projectRaster(areaDEM, crs = crs) area_dem <- focal(areaDEM, w = matrix(1,15,15), fun = mean, NAonly = TRUE, na.rm = TRUE) slope <- terrain(area_dem, opt = 'slope', unit = 'degrees') # 计算坡度 aspect <- terrain(area_dem, opt = 'aspect', unit = 'degrees') # 计算坡向
图1:先投影后计算得到的高程、坡度和坡向结果
我推测问题可能出在计算坡度和坡向前的投影步骤,于是调整为先计算坡向和坡度再进行投影。调整后结果有明显改善,但湖泊区域的坡向仍存在异常图案(图2)。
调整后的代码如下:
areaDEM <- raster('DEM/dem.tif') area_dem <- focal(areaDEM, w = matrix(1,15,15), fun = mean, NAonly = TRUE, na.rm = TRUE) slope <- terrain(area_dem, opt = 'slope', unit = 'degrees') # 计算坡度 aspect <- terrain(area_dem, opt = 'aspect', unit = 'degrees') # 计算坡向 # 将高程、坡度和坡向合并为一个对象 dem <- stack(area_dem, slope, aspect) names(dem) <- c('elevation', 'slope', 'aspect') dem <- projectRaster(dem, crs = crs)
图2:先计算后投影得到的高程、坡度和坡向结果
内容的提问来源于stack exchange,提问作者delvis
相关产品推荐
相关产品推荐

