2016-04-09 12 views
2

Ich habe eine CSV-Datei von 9.000 UTM-Koordinaten, die ich in Dezimalgrade konvertieren möchte, und ich habe ein bisschen Probleme. Ich habe einige der Posts durchsucht, die hier und anderswo gepostet wurden, und ich kann nicht scheinen, eine Lösung zu finden, die meinen Satz von UTMs in verwendbare und genaue Lat/Longs umwandelt.Umwandlung von UTM in Lat/Long in R

Ich habe im Wesentlichen zwei Fragen: 1) sieht jemand irgendwelche Probleme mit meinem Code; und 2) ist jemand vertraut mit der Umwandlung von UTMs in lat/longs und nur mit UTMs im Rgooglemaps-Paket?

Hier sind einige Beispiele von meinen Code und Daten:

Daten:

>head(utm) 
-Northing Easting 
1 4236576 615805 
2 4236576 615805 
3 4236576 615805 
4 4236576 615805 
5 4236576 615805 
6 4236576 615805 

-Code so weit:

utm <- read.csv(file="utm.csv", header=TRUE, sep=",") 
library(rgdal) 
utm <- utm[complete.cases(utm),] 
utm1 <- data.frame(x=utm$Northing,y=utm$Easting) 
coordinates(utm1) <- ~x+y 
class(utm1) 
proj4string(utm1) <- CRS("+proj=utm +zone=10 +datum=WGS84 +units=m +ellps=WGS84") 
utm2 <- spTransform(utm1,CRS("+proj=longlat +datum=WGS84")) 

Ergebnisse

> head(utm2) 
SpatialPoints: 
      x  y 
[1,] -91.08516 4.727323 
[2,] -91.08516 4.727323 
[3,] -91.08516 4.727323 
[4,] -91.08516 4.727323 
[5,] -91.08516 4.727323 
[6,] -91.08516 4.727323 
Coordinate Reference System (CRS) arguments: +proj=longlat +datum=WGS84 +ellps=WGS84 
+towgs84=0,0,0 

Also, ich bin etwas Leistung bekommen, aber Ich bekomme keine vernünftige Ausgabe. Gibt es etwas, das mir hier fehlt? Außerdem wollte ich das "Rgooglemaps" -Paket verwenden, um einige Heatmaps und Kernel-Dichte-Plots zu erstellen.

+0

Sind Sie sicher über Sie utm Zone? Ist Zone = 10 die richtige? – MLavoie

Antwort

1

Ich verwende den folgenden Code, um von UTM zu Lat/Long zu konvertieren. Es funktioniert für den Bereich London

wgs84 = "+init=epsg:4326" 
bng = '+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 
+ellps=airy +datum=OSGB36 +units=m +no_defs' 

ConvertCoordinates <- function(easting,northing) { 
out = cbind(easting,northing) 
mask = !is.na(easting) 
sp <- sp::spTransform(sp::SpatialPoints(list(easting[mask],northing[mask]),proj4string=sp::CRS(bng)),sp::CRS(wgs84)) 
out[mask,][email protected] 
out 
} 
+0

Wenn Sie die UTM-Zone berechnen wollen und wenn Sie den lat/long kennen, dann kann der folgende Link helfen http://stackoverflow.com/questions/9186496/determining-utm-zone-to-convert-from-longitude-latitude –