Ошибка открытия SHP файла в R с помощью maptools readShapePoly - программирование
Подтвердить что ты не робот

Ошибка открытия 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 для исправления.

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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

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

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

Ответ 3

В случае, если это поможет кому-либо:

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

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

Ответ 4

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

file<- readShapePoly(file.choose())

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

Ответ 5

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

Ответ 6

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

file<- readShapeSpatial("filename.shp")

вместо ввода полного пути к файлу.

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

Ответ 7

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