You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:32:11