RStudio重启后SDM绘图报错:无法打开临时栅格文件
解决SDM中重启RStudio后栅格文件无法加载的问题
你的问题核心是R的raster对象默认会将栅格数据存储在临时目录,而save.image()仅保存了栅格对象的引用(即文件路径),并没有保存实际的栅格数据。当你关闭RStudio后,系统会自动清理临时目录里的文件,再次加载环境时,栅格对象找不到对应的文件,就会触发报错。
以下是具体的解决方法:
1. 永久保存处理后的栅格数据
在脚本末尾,将裁剪后的bio栅格对象保存到本地磁盘(而非临时目录),使用writeRaster函数:
# 在plot之后添加保存栅格的代码 plot(bio[[1]]) # 将处理好的栅格保存为本地文件(推荐GeoTIFF格式) writeRaster(bio, filename = "/home/laislacosta/srf/B_marajoensis/bio_cropped.tif", format = "GTiff", overwrite = TRUE) # 再保存环境(可选,主要是保存物种点数据等其他对象) save.image("all_data.RData")
2. 重启后直接加载本地栅格文件
下次打开RStudio时,不需要重新执行整个数据预处理流程,直接加载保存好的栅格文件和环境:
# 加载必要包 library(sdm) library(dplyr) library(tidyr) library(raster) # 加载保存的环境(包含物种点数据mrj2等) load("all_data.RData") # 直接加载本地的栅格文件,而非从临时目录读取 bio <- stack("/home/laislacosta/srf/B_marajoensis/bio_cropped.tif") # 之后就可以正常绘制栅格了 plot(bio[[1]])
额外优化建议
- 移除冗余代码:你脚本中先通过
getData下载WorldClim数据,又立刻用stack读取本地bil文件覆盖了bio_raw,可删除bio_raw <- raster::getData("worldclim", var = "bio", res = 2.5)这一行,减少不必要操作。 - 固定原始数据路径:既然本地已经有
wc5目录下的bil文件,后续直接从本地读取即可,无需重复下载。
内容的提问来源于stack exchange,提问作者Laisla Cagliari
相关产品推荐
相关产品推荐

