2014-05-21 10 views
6

ho un set di dati di punto di coordinate nella zona UTM 48.tavolo Conversione di coordinate per modellare file utilizzando R

x   y  
615028.3 2261614  
615016.3 2261635  
614994.4 2261652  

file CSV here.

vorrei caricare il CSV e creare shapefile utilizzando R. Il mio codice è:

library(maptools) 
library(rgdal) 
library(sp) 

    UTMcoor=read.csv(file="https://dl.dropboxusercontent.com/u/549234/s1.csv") 
    coordinates(UTMcoor)=~X+Y 
    proj4string(UTMcoor)=CRS("++proj=utm +zone=48") # set it to UTM 
    LLcoor<-spTransform(UTMcoor,CRS("+proj=longlat")) #set it to Lat Long 
    plot(LLcoor) 
    points(LLcoor$X,LLcoor$Y,pch=19,col="blue",cex=0.8) #to test if coordinate can be plot as point map 
    writeOGR(UTMcoor, dsn="c:/todel" ,layer="tsb",driver="ESRI Shapefile") 
    writeSpatialShape("LLcoor","test") 

In ultimo comando (writeSpatialShape) R dà il seguente errore:

Error in writeSpatialShape("LL2", "test") : 
    x is acharacterobject, not a compatible Spatial*DataFrame 

Come ho leggere il LLcoor dalla console sembra che sia già un DataFile spaziale. Anche scrivere un file di forma usando writeOGR (pacchetto RGdal) dà un errore simile. Ogni suggerimento è molto apprezzato.

risposta

3

C'è qualcosa che non va nel tuo esempio. Anche la penultima riga fallisce.

In ogni caso, il tuo errore è abbastanza chiaro. Stai fornendo il nome della variabile "LL2" al posto della variabile stessa. Ma nel tuo esempio né né UTMcoor sono nel formato corretto da utilizzare con writeOGR o writeSpatialShape. È necessario convertirli prima a SpatialDataframe, ad esempio,:

UTMcoor.df <- SpatialPointsDataFrame(UTMcoor, data.frame(id=1:length(UTMcoor))) 
+0

Grazie mille, il mio problema è stato risolto. –

1

Dopo suggerimento di @ Matteo Plourde, ho usato la funzione SpatialPointsDataFrame per convertire l'UMTcoor ad un dataframe spaziale. Questo ha risolto il mio problema.

Ci sono anche piccoli dettagli in writeOGR che non erano corretti nel mio script originale, il dataframe nel primo argomento non dovrebbe essere messo in doppia parentesi.

library(maptools) 
library(rgdal) 
library(sp) 

filePath="https://dl.dropboxusercontent.com/u/549234/s1.csv" 
UTMcoor=read.csv(file=filePath) 
coordinates(UTMcoor)=~X+Y 
proj4string(UTMcoor)=CRS("++proj=utm +zone=48") # set it to UTM 
UTMcoor.df <- SpatialPointsDataFrame(UTMcoor, data.frame(id=1:length(UTMcoor))) 
LLcoor<-spTransform(UTMcoor.df,CRS("+proj=longlat")) 
LLcoor.df=SpatialPointsDataFrame(LLcoor, data.frame(id=1:length(LLcoor))) 
writeOGR(LLcoor.df, dsn="c:/todel" ,layer="t1",driver="ESRI Shapefile") 
writeSpatialShape(LLcoor.df, "t2") 
+0

Una cosa banale, ti sei perso una "l" all'inizio del tuo codice, grazie per la domanda, mi ha aiutato molto! – windsound

Problemi correlati