Ошибка при открытии файла SHP в R с помощью maptools readShapePoly

Я новичок в R и следил за следующим руководством по найденному пакету ggplot2 здесь. Однако функция readShapePoly () выдает ошибку всякий раз, когда я пытаюсь загрузить базовый шейп-файл. Я использовал следующий код:

library("ggplot2")
library("gpclib")
library("maptools")
setwd("~/Documents/R Projects/Intro to ggplot2") 
#Intro to ggplot 2 contains the .shp file and associated data
sport <- readShapePoly("london_sport.shp")

что меня понимает:

Error in getinfo.shape(filen) : Error opening SHP file

Я пробовал не указывать расширение файла. Я также попытался загрузить другие файлы .shp, которые тоже вызывают ту же ошибку. Я также попытался вызвать readShapePoly, используя полный путь к файлу, что тоже не работает. Я использую R studio (mac OSX), но получаю ту же ошибку при использовании стандартного окна R. Я пробовал предложения по предыдущей закрытой угрозе «Ошибка при открытии файла SHP в Rstudio», но безрезультатно.

Изменить: ошибка связана с отсутствием файла .dbf. Спасибо @Spacedman за исправление.


person Steve Senior    schedule 17.05.2013    source источник
comment
Вы уверены, что файл формы работает? Вы пробовали readOGR?   -  person Ari B. Friedman    schedule 17.05.2013
comment
Попробуйте list.files() и посмотрите, что вернется. Есть ли там ваш шейп-файл с таким названием? Определенно не добавляйте расширение, когда пытаетесь прочитать его с помощью readShapePoly   -  person Simon O'Hanlon    schedule 17.05.2013
comment
У вас ТАКЖЕ есть файлы london_sport.shx и london_sport.dbf в одной папке? Для создания шейп-файла вам понадобятся все три.   -  person Spacedman    schedule 17.05.2013
comment
@Spacedman - Хороший совет, файл .dbf отсутствовал. Нашли его, и проблема решена. Извините за основную ошибку. Сейчас вроде как смущен. Спасибо всем.   -  person Steve Senior    schedule 17.05.2013
comment
для меня простое решение сработало по ссылке: gis.stackexchange.com/questions/21533/   -  person krishna kumar    schedule 14.03.2018


Ответы (7)


У меня была аналогичная проблема, потому что в загруженном мною zip-пакете было несколько других файлов вместе с файлом формы '* .shp'. Затем я только переместил файл формы в другую папку, и это не сработало. Когда все файлы были объединены, все было нормально, и я мог readShapeSpatial() нормально функционировать.

person Aaron Lelevier    schedule 24.03.2014
comment
хм ... Работаю над классной проблемой. Я пытаюсь начать с чистого листа - person miles2know; 04.10.2014
comment
Это решило аналогичную проблему, которая была у меня. Как сказано в документации, вам нужно больше, чем просто файл .shp: shapefile layer name, when writing omitting the extensions *.shp, *.shx and *.dbf, which are added in the function - person Mikko; 22.09.2015

Забудьте ggplot и gpcclib. Придерживайтесь maptools и rgdal, которые фактически предоставляют инструменты для чтения шейп-файла.

Не говорите, что вы пробовали "то и это", а обрисуйте детали. Например, возвращает ли `file.exists (" london_sport.shp ") ИСТИНА?

Кроме того, что заставляет вас думать, что readShapePoly() - правильная функция? Он умеет только читать шейп-файлы многоугольников, попробуйте также readShapePoints() и readShapeLines().

Если можете, попробуйте readOGR, который может читать шейп-файл, несмотря на многие предостережения (включая тип геометрии).

library(rgdal)
readOGR("~/Documents/R Projects/Intro to ggplot2", "london_sport")

Если вы можете сообщить обо всем этом, вероятно, кто-то сможет вам помочь.

person mdsumner    schedule 17.05.2013
comment
Спасибо за совет, проблема связана с отсутствующим файлом .dbf. Добавлю rgdal в мой (длинный) список вещей, которым нужно научиться. - person Steve Senior; 17.05.2013
comment
Да, это отстой. Ублюдок со всеми его дерьмовыми файлами. - person mdsumner; 17.05.2013

Есть еще одно, но не очень автоматическое решение, которое мне помогло:

file<- readShapePoly(file.choose())

Затем просто найдите свой файл * .shp и запустите его.

person lujjas    schedule 03.12.2015

Включите три из этих файлов (с расширениями: dbf, shp, shx) в одну папку.

person Andre Pereira    schedule 01.10.2017

Если это кому-то поможет:

У меня была та же проблема, но ни одно из решений не помогло. Хуже всего то, что я проделывал то же самое со сценарием, который, я на 100% уверен, работал ранее.

Оказывается, также может быть поврежден шейп-файл. По-видимому, это может произойти во время манипулирования файлом (или, как говорят мои друзья-географы), поэтому в следующий раз, когда вы попытаетесь открыть, он не сработает без видимой причины. Повторная загрузка сработала нормально, но заставляет задуматься о том, чтобы на всякий случай иметь копию более ценных.

person A.Mstt    schedule 14.07.2015

Мне удалось решить эту проблему с помощью шейп-файла, который я пытался прочитать, набрав:

file<- readShapeSpatial("filename.shp")

вместо того, чтобы вводить полный путь к файлу.

До этого я попробовал все предложения, в том числе убедился, что файлы .dbf и .shx также присутствуют. Не знаю, почему так должно быть.

person Sree    schedule 18.08.2015

У меня такая же проблема. Я обнаружил, что в основном вам нужны три из этих файлов: .shp, .shx и .dbf.

person Masood Sadat    schedule 28.12.2017