readOGR()无法打开文件

s6fujrry  于 2023-03-27  发布在  其他
关注(0)|答案(8)|浏览(228)
wmap <- readOGR(dsn="~/R/funwithR/data/ne_110m_land", layer="ne_110m_land")

此代码未加载形状文件,并生成错误为

Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv,  : 
Cannot open file

我确信目录是正确的。在最后/也不在那里,层名也是正确的。
在ne_110m_land目录文件中,我有:

ne_110m_land.dbf
ne_110m_land.prj
ne_110m_land.shp
ne_110m_land.shx
ne_110m_land.VERSION.txt
ne_110m_land.README.html
3pvhb19x

3pvhb19x1#

你可以证明你有正确的道路:

list.files('~/R/funwithR/data/ne_110m_land', pattern='\\.shp$')
file.exists('~/R/funwithR/data/ne_110m_land/ne_110m_land.shp')

不妨试试:

readOGR(dsn=path.expand("~/R/funwithR/data/ne_110m_land"), layer="ne_110m_land")

或者一个更简单的替代方案,它围绕着:

library(raster)
s <- shapefile("~/R/funwithR/data/ne_110m_land/ne_110m_land.shp")

更新日期:

rgdal做了一些修改,你不再需要分离路径和图层了(至少对于某些格式是这样)。

x <- readOGR("~/R/funwithR/data/ne_110m_land/ne_110m_land.shp")

(可能仍在使用path.expand)
另外,如果你还在使用readOGR,你就有点落后了,最好使用terra::vectsf::st_read

lb3vh1jj

lb3vh1jj2#

我也遇到了同样的错误。要读取shapefile,你的文件夹中需要有三个文件:.shp、.dbf和.shx文件。

2izufjch

2izufjch3#

对于我来说,当我包含dsnlayer标记时,命令返回Cannot open layer错误。
因此,当我把它作为readOGR('~/R/funwithR/data/ne_110m_land/ne_110m_land.shp')包含进来时,它起作用了。
请注意,我的文件是一个gjson,所以我只在readOGR('~/R/funwithR/data/ne_110m_land/ne_110m_land.gjson')中看到过这种情况

oxiaedzo

oxiaedzo4#

强制文件应全部位于同一目录中
.shp -形状格式
.shx -形状索引格式;
.dbf -属性格式;
那么我们可以给予路径作为函数的参数。

global_24h =readOGR( '/Users/m-store/Desktop/R_Programing/global_24h.shp')
bbmckpt7

bbmckpt75#

以下是对我有效的方法(有一个真实的例子)

require(rgdal)
shape <- readOGR(dsn = "1259030001_ste11aaust_shape/STE11aAust.shp", layer = "STE11aAust")

确切的数据可在here(下载名为“州和地区ASGC Ed 2011数字边界在MapInfo交换格式”的.zip文件)

ylamdve6

ylamdve66#

语法:library(raster)s <- shapefile("~/R/funwithR/data/ne_110m_land/ne_110m_land.shp")工作得很好!todah rabah!

sauutmhj

sauutmhj7#

正如我在其他帖子中所评论的(打开shapefile时出错),使用file.choose()并手动选择将有助于在需要选择一个文件的情况下。显然与NaturalEarth shapefile有关

7gcisfzg

7gcisfzg8#

在我看来,这是解决方案,至少在将其上传到云之前是这样

######################################
  #             Server
  ######################################
  #I tell R where to extract the data from
  #Le digo al R donde debe jalar la data

  dirmapas <- "E:/Tu-carpeta/Tu-sub-carpeta/ESRI" #Depende donde tengas tú tus 
                                                  #archivos de cartografía 

  setwd(dirmapas)

  #The raw map
  # El mapa de polígonos en blanco y negro
  departamentos<-readOGR(dsn="BAS_LIM_DEPARTAMENTO.shp", layer="BAS_LIM_DEPARTAMENTO")

相关问题