You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:13:18