我从here下载了一个SHAPE文件。我加入了我的工作目录:
> list.files('/home/lucho/data/EnglandGIS/', pattern='\\.shp$')
[1] "england_gor_2011.shp"
> file.exists('/home/lucho/data/EnglandGIS/england_gor_2011.shp')
[1] TRUE
然而,我无法阅读它:
library("rgdal")
shape <- readOGR(dsn = path.expand("/home/lucho/data/EnglandGIS/england_gor_2011"), layer = "england_gor_2011")
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = use_iconv, :
Cannot open file
only其他类似问题和接受的答案没有帮助。问题是什么?数据是否已损坏?我该怎么说? (如果您可以下载数据并亲自尝试,那可能是最好的方法)
我在Ubuntu 16.04中使用最新的R和最新的Rstudio。
答案 0 :(得分:2)
要使用readOGR
导入形状文件,您可以使用
readOGR(dsn = "/home/lucho/data/EnglandGIS/", layer = "england_gor_2011")
其中dsn
是包含england_gor_2011.shp
的文件夹(以及其他具有相同名称但扩展名不同的文件,例如england_gor_2011.dbf
等),或者您可以指定形状的完整路径文件(包括扩展名):
readOGR("/home/lucho/data/EnglandGIS/england_gor_2011.shp")
据我记忆,第二种方法不适用于早期版本的rgdal
。
答案 1 :(得分:1)
不要忘记在readOGR
命令中指定形状文件的扩展名:
library("rgdal")
shape <- readOGR(dsn = path.expand("england_gor_2011.shp"),
layer = "england_gor_2011")
#############
OGR data source with driver: ESRI Shapefile
Source: "england_gor_2011.shp", layer: "england_gor_2011"
with 9 features
It has 3 fields
希望这可以帮到你。
答案 2 :(得分:1)
虽然这个问题似乎已经得到解答,但这里有一些关于如何读取shapefile的其他选项:
您还可以尝试shapefile
包中的raster
功能:
library(raster)
shp <- shapefile("/home/lucho/data/EnglandGIS/england_gor_2011.shp")
或来自新st_read
包的函数sf
(非常高效):
library(sf)
shp <- st_read(system.file("/home/lucho/data/EnglandGIS/england_gor_2011.shp", package="sf"))