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

水深图的分辨率调整与坐标参考系转换问题

Terra栅格投影转换与分辨率调整问题解决

问题背景与操作过程

为模拟鱼类运动,从GEBCO获取水深图并完成陆地区域掩膜,操作正常:

library(terra)
tif_file <- "~/path_to/GEBCO_map.tif"
map <- rast(tif_file)
map <- ifel(map >= 0, NA, abs(map))

后续需将栅格调整为100×100米分辨率,并从WGS84(EPSG:4326)转换至WGS84/UTM zone 29N(EPSG:32629),已有参考栅格mapE,执行以下操作后出现异常:

map_reprojected <- project(map, crs(mapE))

# 尝试设置目标分辨率(100×100米)
new_resolution <- c(100, 100)
current_resolution <- res(map)

# 基于目标分辨率计算行列数
target_ncols <- ncol(map) * (current_resolution[1] / new_resolution[1])
target_nrows <- nrow(map) * (current_resolution[2] / new_resolution[2])

# 创建新分辨率的虚拟栅格
dummy_raster <- rast(ext(map), nrows = round(target_nrows), ncols = round(target_ncols), resolution = new_resolution)

# 重采样至新分辨率
map_resampled <- resample(map_reprojected, res = new_resolution, method = "bilinear")

遇到的问题

  • 调整分辨率后,栅格维度变为1,1,1且全为NA
  • 坐标参考系转换后绘图显示变形

解决方案

1. 正确的操作流程

问题核心在于混淆了不同投影的单位逻辑,以及错误使用resample参数。推荐两种稳妥的操作方式:

方式一:利用参考栅格直接对齐

既然已有同投影、同分辨率的mapE,直接用它作为模板完成投影+重采样:

# 一步完成投影转换与分辨率匹配
map_final <- project(map, mapE, method = "bilinear")

方式二:手动构建目标投影栅格模板

若无参考栅格,需先转换范围到目标投影,再创建模板:

# 定义目标投影
target_crs <- "EPSG:32629"
# 将原栅格范围转换到目标投影坐标系
target_ext <- project(ext(map), from = crs(map), to = target_crs)
# 创建100×100米分辨率的空栅格模板
dummy_raster <- rast(
  ext = target_ext,
  resolution = c(100, 100),
  crs = target_crs
)
# 投影并重采样到模板
map_final <- project(map, dummy_raster, method = "bilinear")

2. 问题原因解析

  • 分辨率计算错误:原栅格分辨率是度单位(WGS84),目标是米单位(UTM),直接用两者做除法换算行列数完全逻辑错误,必须先将原范围转换到目标投影下再计算。
  • resample参数误用:resample需要传入目标栅格模板,而非直接传分辨率向量。直接传res = new_resolution会导致terra无法匹配正确的空间范围,生成无效的1×1栅格。
  • 投影变形:之前的变形是因为投影后未正确匹配分辨率和范围,用上述流程生成的栅格会保持正确的空间形态。

3. 验证投影有效性

用以下代码验证结果:

# 查看最终栅格的坐标系
crs(map_final)
# 查看分辨率
res(map_final)
# 查看栅格维度
dim(map_final)

若输出CRS为EPSG:32629、分辨率为100 100,且维度合理无全NA,说明操作有效。

内容的提问来源于stack exchange,提问作者EcologyWuhu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 09:07:34