如何在R语言中将旋转后的栅格数据列数调整为3600?
解决栅格rotate后列数不一致的问题
问题原因
rotate()函数把0-360°经度转成-180-180°时,因为原栅格分辨率为0.1°(360/3600),函数处理边界时会在180°/-180°位置多生成一个重复像素,导致列数从3600变为3601。
两种快速解决方法
方法1:直接删除重复列
旋转后多出来的列是180°位置的重复像素,直接删掉最后一列即可:
# 删掉旋转后栅格的最后一列 r_rotated_fixed <- r[, -ncol(r)]
方法2:以原始栅格为模板对齐(更稳妥)
如果担心直接删列有偏差,用projectRaster()让旋转后的栅格完全匹配未旋转栅格的范围、分辨率和行列数:
# 假设未旋转的原始栅格叫r_original r_rotated_fixed <- projectRaster(r, to = r_original, method = "ngb") # 注:连续型栅格数据把method改成"bilinear";分类数据用"ngb"(最近邻)
验证结果
执行操作后,检查列数是否匹配:
# 确认列数一致 ncol(r_rotated_fixed) == ncol(r_original) # 查看范围和分辨率是否正确 extent(r_rotated_fixed) res(r_rotated_fixed)
内容的提问来源于stack exchange,提问作者todd.m
相关产品推荐
相关产品推荐

