2016-04-09 16 views
2

Ondalık dereceye dönüştürmek istediğim 9,000+ UTM koordinatlı bir .csv dosyası var ve biraz sorun yaşıyorum. Burada ve başka bir yerde yayınlanmış olan yayınların birkaçını aradım ve UTM'ler kümemi kullanılabilir ve doğru lat/long'lara dönüştüren bir çözüm bulamıyorum.UTM'leri En Geç/Uzun'a Dönüştürme R

Aslında iki sorum var: 1) kodumla ilgili herhangi bir sorun var mı; ve 2) UTM'lerin lat/long'lara dönüşümünü ve Rgooglemaps paketinde sadece UTM'leri kullanmayı bilen var mı?

Veri: Şimdiye kadar

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

Kodu:

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")) 

Sonuçlar

> 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 

Yani, Buradayım

benim kod ve veri bazı örnekler biraz çıkış almak, ama Mantıklı çıktı almıyorum. Burada eksik olduğum bir şey mi var? Ayrıca, değerinin ne olduğu için, bazı ısı haritaları ve çekirdek yoğunluğu çizimleri oluşturmak için "Rgooglemaps" paketini kullanmayı planlıyordum.

+0

Londra bölgesi için çalışıyor mu? Bölge = 10 doğru mu? – MLavoie

cevap

1

UTM'den Lat/Long'a dönüştürmek için aşağıdaki kodu kullanıyorum.

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

UTM bölgesini hesaplamak istiyorsanız ve enlem/boylamı biliyorsanız, aşağıdaki bağlantı size yardımcı olabilir: http://stackoverflow.com/questions/9186496/determining-utm-zone-to-convert-from-longitude-latitude –

İlgili konular