2012-07-25 14 views
7

Ho delle coordinate, che dovrebbero essere tutte localizzate in DC, ma non riesco a capire come convertirle da NAD 83 a latitudine e longitudine in R. Sto usando la funzione spTransform() nel pacchetto rgdal e ricevo un errore su dati non conformi.Come convertire le coordinate NAD 83 in latitudine e longitudine con il pacchetto rgdal?

library(rgdal) 
nad83_coords <- data.frame(x=c(396842.6, 397886.9, 398315.5, 398154.3, 398010.3), y=c(140887.1, 139847.0, 138743.9, 139534.5, 138697.3)) 
coordinates(nad83_coords) <- c('x', 'y') 
proj4string(nad83_coords) <- CRS("+init=epsg:4269") 
Error in `proj4string<-`(`*tmp*`, value = <S4 object of class "CRS">) : 
    Geographical CRS given to non-conformant data: 398315.5 140887.1 

Altre combinazioni di proiezioni provengono dallo stesso errore. Credo che l'errore sia dovuto al fatto che le coordinate sono troppo grandi, ma non sono sicuro del motivo. La documentazione per le coordinate è riportata di seguito:

I valori sono nei metri dello stato del Maryland metri NAD 83 mappa di proiezione.

Sono molto nuovo alla mappatura e alle proiezioni e qualsiasi aiuto è apprezzato.

+0

La folla di [GIS StackExchange] (http://gis.stackexchange.com/) è tutto questo tipo di trasformazione, FYI – DefenestrationDay

+0

Grazie. Al momento non posso tenere traccia di tutti i siti StackExchange. –

risposta

6

Look up ESPG: 4269:

http://spatialreference.org/ref/epsg/4269/

e il suo un sistema di lat-lungo. Quindi i tuoi grandi numeri (che sono metri) sono troppo grandi.

Se hai uno shapefile ovunque con i dati in queste coordinate, allora si potrebbe avere un file .prj con esso che avrà le specifiche di proiezione, altrimenti dovrete inseguire sul spatialreference.org:

http://spatialreference.org/ref/?search=nad83+maryland&srtext=Search

Ci sono varie varianti sul NAD83 e c'è anche "aereo di stato" qua e là. Non sono troppo sicuro di quale sia esattamente. L'epsg: i codici sono più standard, quindi c'è un sacco di esri: i codici. Sr-org: quelli forniti dall'utente sul sito.

Il codice esri sembra il più vicino al testo che hai dato. Proviamo:

> proj4string(nad83_coords)=CRS("+init=esri:102285") 
> spTransform(nad83_coords,CRS("+init=epsg:4326")) 
SpatialPoints: 
      x  y 
[1,] -77.03642 38.93586 
[2,] -77.02437 38.92650 
[3,] -77.01942 38.91656 
[4,] -77.02128 38.92368 
[5,] -77.02294 38.91614 

Ovunque vicino a DC? In realtà, epsg: 2804 ed epsg: 3559 danno le stesse risposte, e sono probabilmente più "standard" ...

+1

Grazie, è grandioso. Per essere chiari, esri: 102285 è il Maryland State Plane per NAD 83 con unità in metri, ed epsg: 4326 è il sistema di coordinate longitudine/latitudine standard? –

+2

Sì, per un certo valore di "Standard" :) Se lo cerchi su http://spatialreference.org/ref/epsg/4326/ ti dice quello che ottieni da un GPS. Ci sono altri lat-long standard basati su altre misure di appiattimento della terra, o diversi meridiani zero ecc ... – Spacedman

+0

Fantastico, grazie per la chiara spiegazione. –