R: readOGR() не может открыть файл

Я скачал файл 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

только другой подобный вопрос с принятым ответом не помогает. В чем проблема? Данные повреждены? Как я могу сказать? (если бы вы могли загрузить данные и попробовать сами, это может быть лучшим способом)

Я использую последнюю версию R с последней версией Rstudio в Ubuntu 16.04.


person luchonacho    schedule 15.05.2017    source источник
comment
Я думаю, вам нужно dsn = path.expand("/home/lucho/data/EnglandGIS"), это просто папка, содержащая файлы, а не имя слоя (которое идет в аргументе layer). В качестве альтернативы вы можете использовать /home/lucho/data/EnglandGIS/england_gor_2011.shp и полностью избавиться от аргумента layer   -  person konvas    schedule 15.05.2017


Ответы (3)


Чтобы импортировать шейп-файлы с помощью 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.

person konvas    schedule 15.05.2017

Не забудьте указать расширение шейп-файла в команде 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

Надеюсь, это поможет вам.

person Marco Sandri    schedule 15.05.2017

Хотя на этот вопрос, кажется, дан ответ, вот еще несколько вариантов того, как читать шейп-файл:

вы также можете попробовать функцию 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"))
person maRtin    schedule 15.05.2017