2013-05-17 9 views
16

Sono nuovo in R e seguivo il seguente tutorial sul pacchetto ggplot2 trovato here. Tuttavia la funzione readShapePoly() genera un errore ogni volta che provo a caricare lo shapefile di base. Ho usato il seguente codice:Errore durante l'apertura del file SHP in R mediante maptools 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") 

che mi fa:

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

ho cercato omettendo l'estensione del file. Ho anche provato a scaricare altri file .shp che generano lo stesso errore. Ho anche provato a chiamare readShapePoly usando il percorso completo del file, che non funziona neanche. Sto usando R studio (mac OSX), ma ottengo lo stesso errore usando la finestra R standard. Ho provato i suggerimenti sulla precedente minaccia chiusa "Errore durante l'apertura del file SHP in Rstudio", ma senza successo.

Modifica: l'errore era con un file .dbf mancante. Grazie a @Spacedman per la correzione.

+0

Sei sicuro che il file di forma funzioni? Hai provato 'readOGR'? –

+0

Prova 'list.files()' e guarda cosa viene restituito. Il tuo shapefile è lì, così chiamato? Sicuramente non aggiungere l'estensione quando provi a leggerla con 'readShapePoly' –

+8

Hai ANCHE i file' london_sport.shx' e 'london_sport.dbf' nella stessa cartella? Hai bisogno di tutti e tre per creare uno "Shapefile". – Spacedman

risposta

5

Dimenticate ggplot e gpcclib. Attenersi a maptools e rgdal che forniscono effettivamente strumenti per la lettura di uno shapefile.

Non dire solo che hai provato "questo e quello", delinea i dettagli. Ad esempio, `file.exists (" london_sport.shp ") restituisce TRUE?

Inoltre, cosa ti fa pensare che readShapePoly() è la funzione giusta? Sa solo leggere gli shapefile dei poligoni, prova anche readShapePoints() e readShapeLines().

Se è possibile, provare readOGR che può leggere uno shapefile nonostante molti avvertimenti (incluso il tipo di geometria).

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

Se è possibile segnalare su tutte quelle cose è probabile che qualcuno possa aiutare.

+1

Grazie per il consiglio, il problema era con un file. Dbf mancante. Aggiungerà rgdal alla mia (lunga) lista di cose da imparare. –

+0

Sì, fa schifo. Bastardo di un campo con tutti i suoi file schifosi. – mdsumner

14

Avevo un problema simile, ed era perché c'erano molti altri file insieme al file di forma "* .shp" nel pacchetto zip che ho scaricato. Quindi ho solo spostato il file di forma in un'altra cartella e non ha funzionato. Quando ho incluso tutti i file insieme, andava bene e potevo far funzionare la funzione readShapeSpatial().

+0

humph ... Sto lavorando su un problema interessante. Provo a partire da una lavagna pulita – miles2know

+2

Questo problema risolto che ho avuto. Hai bisogno di qualcosa di più del semplice file .shp come dice la documentazione: 'nome del file shapefile, quando scrivi omettendo le estensioni * .shp, * .shx e * .dbf, che vengono aggiunte nella funzione' – Mikko

1

Nel caso in cui questo aiuta chiunque:

Ho avuto lo stesso problema, ma nessuna delle soluzioni lavorato. Peggio ancora, ho fatto lo stesso con una sceneggiatura che al 100% sicuramente funzionava in precedenza.

Si scopre che potrebbe anche essere che lo shapefile si danneggi. Apparentemente questo può accadere mentre il file viene manipolato (o almeno così dicono i miei amici geographer), quindi la prossima volta che provate ad aprirlo non funzionerà senza un motivo apparente. Il download di nuovo ha funzionato bene, ma mi fa pensare di avere una copia dei più preziosi per ogni evenienza.

0

ho appena riuscito a risolvere questo problema con uno shapefile che stavo cercando di leggere digitando:

file<- readShapeSpatial("filename.shp") 

invece di digitare il percorso completo del file.

Prima di allora, ho provato tutti i suggerimenti, incluso assicurarmi che fossero presenti anche i file .dbf e .shx.Non so perché questo dovrebbe essere il caso.

1

V'è un altro, ma non molto soluzione automatica che mi ha aiutato:

file<- readShapePoly(file.choose()) 

Poi basta trovare il file .shp * ed eseguirlo.

1

Includere tre di questi file (estensioni: dbf, shp, shx) nella stessa cartella.

0

Ho avuto lo stesso problema. Ho scoperto che in pratica hai bisogno di tre di questi file: .shp, .shx e .dbf