R中用readOGR加载.shp文件遇“无法打开图层/数据源”问题求助
解决R中readOGR无法读取.shp文件的问题
1. 纠正readOGR的调用格式
rgdal包的readOGR()参数规则明确:第一个参数是数据源所在的文件夹路径,第二个参数是不带.shp后缀的图层文件名。你之前的写法存在参数混淆问题,正确调用方式如下:
# 方法1:先设置工作目录 setwd("C:/Users/user/Documents/tarso first paper/R") study_area <- readOGR(dsn = getwd(), layer = "municipios") # 方法2:直接指定完整路径和图层名 study_area <- readOGR(dsn = "C:/Users/user/Documents/tarso first paper/R", layer = "municipios")
2. 检查.shp配套文件完整性
.shp文件无法单独被R读取,必须确保同目录下存在以下同名配套文件:
- .shx(空间索引文件)
- .dbf(属性表文件)
- .prj(投影信息文件,可选但建议保留)
QGIS具备一定的自动修复能力,但R对文件完整性要求更严格,缺少任一文件都会触发读取失败。
3. 处理路径中的空格问题
你的路径包含空格(tarso first paper),可能导致路径解析异常,可尝试两种解决方式:
- 将含空格的文件夹名修改为无空格格式(例如
tarso_first_paper) - 用
file.path()函数自动拼接路径,避免手动输入错误:
data_dir <- file.path("C:", "Users", "user", "Documents", "tarso first paper", "R") study_area <- readOGR(dsn = data_dir, layer = "municipios")
4. 指定属性表编码参数
若数据源属性表存在编码不兼容问题,可添加encoding参数(常见编码为UTF-8或Latin1,需根据数据实际情况调整):
study_area <- readOGR(dsn = "C:/Users/user/Documents/tarso first paper/R", layer = "municipios", encoding = "UTF-8")
5. 改用sf包替代rgdal
rgdal已进入维护状态,推荐使用更便捷的sf包,其st_read()函数支持直接读取完整.shp文件路径,兼容性更强:
# 未安装sf包则先执行安装 install.packages("sf") library(sf) # 直接读取.shp文件 study_area <- st_read("C:/Users/user/Documents/tarso first paper/R/municipios.shp")
内容的提问来源于stack exchange,提问作者Tarso Ciolete
相关产品推荐
相关产品推荐

