导入栅格图层时R崩溃(ERROR elf_dynamic_array_reader.h:61)求助
Ubuntu 22.04下R/terra导入栅格文件崩溃的解决方法
问题场景
- 系统:Ubuntu 22.04
- R版本:4.4.0
- RStudio版本:2024.4.1.748
- 触发操作:调用
terra::rast()或raster::raster()导入tif格式栅格文件时,R直接崩溃,抛出错误:
[24697:24697:20240606,175745.757656:ERROR elf_dynamic_array_reader.h:61] tag not found [24697:24697:20240606,175745.757843:ERROR elf_dynamic_array_reader.h:61] tag not found [24697:24698:20240606,175745.781125:ERROR directory_reader_posix.cc:42] opendir: No such file or directory (2)
排查与修复步骤
核对GDAL依赖路径一致性
- 终端执行
gdalinfo --version获取系统GDAL版本 - 在R中运行以下命令,查看R调用的GDAL信息:
terra::gdal() Sys.getenv(c("GDAL_DATA", "PROJ_LIB")) - 若路径不匹配,手动设置环境变量(替换
<GDAL版本号>为实际版本,比如3.4.1):Sys.setenv(GDAL_DATA = "/usr/share/gdal/<GDAL版本号>") Sys.setenv(PROJ_LIB = "/usr/share/proj") - 重启RStudio后重新测试导入
- 终端执行
源码编译安装terra包
- 卸载现有terra包:
remove.packages("terra") - 终端安装GDAL、PROJ、GEOS的开发依赖:
sudo apt-get update && sudo apt-get install libgdal-dev libproj-dev libgeos-dev - 回到R中从源码安装terra:
install.packages("terra", type = "source")
- 卸载现有terra包:
排查RStudio环境变量冲突
- 关闭RStudio,在终端直接启动R(执行
R命令),尝试导入栅格文件 - 若终端中正常运行,说明RStudio环境存在冲突:检查
~/.Renviron、~/.bashrc或~/.profile中是否有错误的GDAL/PROJ路径配置,修正后重启RStudio
- 关闭RStudio,在终端直接启动R(执行
验证文件路径与权限
- 用绝对路径替代相对路径测试:
rast("/home/your-user/path/to/file.tif") - 检查文件是否存在且可读:
file.exists("/home/your-user/path/to/file.tif") file.access("/home/your-user/path/to/file.tif", 4) == 0 - 若权限不足,终端执行
sudo chmod +r /home/your-user/path/to/file.tif赋予读取权限
- 用绝对路径替代相对路径测试:
内容的提问来源于stack exchange,提问作者Giordano
相关产品推荐
相关产品推荐

