栅格转图像后无法绘制,报错‘useRaster=TRUE仅适用于规则网格’
解决方法
1. 直接规避报错:修改绘图参数
调用plot()时显式设置useRaster = FALSE,绕过栅格渲染的规则网格限制:
plot(x, useRaster = FALSE)
2. 根源修复:确保转换后的像素图像为规则网格
从你的数据信息来看,原RasterLayer的范围与分辨率计算出的列数不匹配:
- x方向范围:
342412.9 - 341668.9 = 744,按分辨率0.02计算应有744 / 0.02 = 37200列,但实际ncol=37199,说明原栅格存在微小偏移,导致转换为im对象后网格不规整。
可以先修正原栅格的范围,使其与分辨率严格匹配:
# 重新计算正确的xmax和ymin new_xmax <- r@extent@xmin + ncol(r) * xres(r) new_ymin <- r@extent@ymax - nrow(r) * yres(r) # 更新栅格范围 extent(r) <- c(r@extent@xmin, new_xmax, new_ymin, r@extent@ymax) # 重新转换为im对象 x <- maptools::as.im.Rasterlayer(r) # 再尝试绘图 plot(x)
3. 替代方案:使用spatstat原生转换函数
如果maptools的转换存在问题,试试spatstat.geom包的原生转换函数:
library(spatstat.geom) x <- as.im(r) plot(x)
内容的提问来源于stack exchange,提问作者Maik
相关产品推荐
相关产品推荐

