R语言读取shp文件时报错找不到shapefile函数问题求助
R语言读取shapefile提示找不到
shapefile函数的解决方案 你遇到的报错核心有两类原因:
- 新版
raster包已经移除了shapefile函数,该函数原先是raster包调用rgdal的功能实现,现在已经被迁移到terra包中 - 你提供的原始代码存在语法错误,多写了一个右括号,且参数传递不符合函数要求
方案1:使用terra包读取(raster官方推荐替代方案)
terra是raster包开发者推出的新一代空间数据处理包,完全兼容原raster的功能,性能更强:
# 安装包(仅首次使用需要运行) install.packages("terra") # 加载包 library(terra) # 设置工作目录为shapefile所在文件夹 setwd("你的shapefile所在文件夹的完整路径") # 读取shapefile,返回SpatVector对象 S <- vect("file.shp") # 如需转换为原raster包支持的Spatial*类,可运行如下代码 S_spatial <- as(S, "Spatial")
方案2:使用sf包读取(R空间生态主流方案)
sf是目前R空间数据分析领域使用最广泛的矢量数据处理包,适配绝大多数空间分析相关的扩展包:
install.packages("sf") library(sf) setwd("你的shapefile所在文件夹的完整路径") S <- st_read("file.shp")
方案3:修复原有代码逻辑(仅适用于旧版本raster包)
如果你仍需使用旧版本raster包的shapefile函数,先确认你安装的是2.8之前版本的raster包,再修正代码语法:
library(raster) setwd("你的shapefile所在文件夹的完整路径") # 修正原代码多写的右括号,直接传入文件名即可 S <- shapefile("file.shp")
注意事项
- 确保.shp、.shx、.dbf、.prj等所有shapefile配套文件都存放在你设置的工作目录下,文件名不要包含中文、空格或特殊字符
- 加载包前如果提示找不到包,先运行
install.packages("对应包名")完成安装后再加载
内容的提问来源于stack exchange,提问作者Addisu
相关产品推荐
相关产品推荐

