2012-02-27 12 views
5

İyi günler herkese,ggplot2 ve haritalar: geom_point ve annotation_raster pozisyon uyuşmazlığı

başarıyla ggmap kullanarak Google'dan bir raster alabilir aşağıdaki kodu kullanarak, üstte kırmızı noktalar şeklinde bir annotation_rasterggplot2 kullanarak ve arsa sitesi yerlesim çizdirmek raster tabakanın Arsada pozisyonlar tam olarak uyuşmuyor (sahil şeridini takip etmeleri gerekiyor). Sitemin konumlarının doğru olduğunu biliyorum çünkü verileri Google Earth’e bir KML dosyası olarak yüklediğimde nerede olmalıdırlar.

Öneriler takdir edilecektir.

Bu kod şu şekilde çalışacaktır ... Github'da kullanılabilen ggplot2 sürümüne ihtiyacınız olduğunu unutmayın.

# install.packages("devtools") 
library(devtools) 
install_github("ggplot2") 

ve kod için: yüklemek için

library(ggplot2) 
library(ggmap) 
library(grDevices) 
theme_set(theme_bw()) 

# Some coordinates of points to plot: 
siteLat = c(-22.94414, -22.67119, -29.25241, -30.31181, -32.80670, -33.01054, -32.75833, -  33.36068, -31.81708, -32.09185, -32.31667, -34.13667, -34.05016, -33.91847, -34.13525, -34.12811, -34.10399, -34.16342, -34.41459, -34.58786, -34.83353, -34.37150, -34.40278, -34.17091, -34.08565, -34.04896, -33.98066, -34.02448, -34.20667, -34.05889, -33.97362, -33.99125, -33.28611, -33.02407, -33.01798, -32.99316, -31.09704, -31.05000, -30.91622, -30.70735, -30.28722, -30.27389, -29.86476, -29.54501, -29.49660, -29.28056, -28.80467, -27.42472) 
siteLon = c(14.50175, 14.52134, 16.86710, 17.26951, 17.88522, 17.95063, 18.02778, 18.15731, 18.23065, 18.30262, 18.32222, 18.32674, 18.34971, 18.38217, 18.43592, 18.45077, 18.48364, 18.85908, 19.25493, 19.33971, 20.00439, 21.43518, 21.73972, 22.12749, 23.05532, 23.37925, 23.64567, 23.89933, 24.77944, 25.58889, 25.64724, 25.67788, 27.48889, 27.91626, 27.92182, 27.95036, 30.18395, 30.21666, 30.32982, 30.48474, 30.76026, 30.83556, 31.04479, 31.21662, 31.24665, 31.44403, 32.07567, 32.73333) 
siteName = c(seq(1:length(siteLon))) 
sites <- as.data.frame(cbind(siteLat, siteLon, siteName)) 

# specify raster's approximate coordinates: 
lats = c(-35, -20) 
lons = c(10, 35) 

SAMap <- GetMap.bbox(lons, lats, maptype = "satellite") 

# extract "real" coords of raster: 
lonr <- c(SAMap$BBOX$ll[2], SAMap$BBOX$ur[2]) 
latr <- c(SAMap$BBOX$ll[1], SAMap$BBOX$ur[1]) 

# extract raster fill data: 
h_raster <- as.raster(SAMap$myTile) 

# plot using annotation_raster: 
g <- ggplot(sites, aes(siteLon, siteLat)) 
g + annotation_raster(h_raster, lonr[1], lonr[2], latr[1], latr[2]) + 
    geom_point(aes(x = siteLon, y = siteLat), colour = "red", data = sites) + 
    scale_x_continuous(limits = lonr) + 
    scale_y_continuous(limits = latr) 

(Ben burada yeniyim olarak Üzgünüm, bir görüntü post olamaz).

+0

Bu benim makinede çalışmaz. Ben de kütüphane (raster) 'i içermesi gerektiğinden şüpheleniyorum. O zaman bile, "annotation_raster" bulunamadı. Hangi paket (ve sürüm) bu? – Andrie

+0

Ben bir deneysel 'ggplot2' sürümüne ihtiyacınız olduğunu düşünüyorum, bu yükleme hakkında bilgi için https://github.com/hadley/ggplot2 bakın. –

+0

Sanırım "as.raster()" kütüphanede (grDevices) "yaşıyor. 'annotation_raster', ggplot2' 0.9.0 sürümündedir. Kodu en üste günceller. –

cevap