2012-02-27 6 views
5

Buenos días a todos,ggplot2 y mapas: geom_point y la posición annotation_raster desajuste

con el siguiente código que puedo recuperar con éxito una trama de Google utilizando ggmap, traman un annotation_raster usando ggplot2 y localidades sitio parcela como puntos rojos en la parte superior de la capa de trama En la trama, las posiciones no coinciden (deben seguir la línea costera). Sé que las posiciones de mis sitios son correctas porque trazan dónde deberían estar cuando carga los datos en Google Earth como un archivo KML.

Las sugerencias serán apreciadas.

Este código se ejecutará como está ... Tenga en cuenta que necesita una versión de desarrollo de ggplot2, que está disponible en github. Para instalar:

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

y para el código:

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) 

(Lo siento, no se puede publicar una imagen como soy nuevo aquí).

+0

Esto no se ejecuta en mi máquina. Sospecho que también debes incluir 'library (raster)'. Incluso entonces, 'annotation_raster' no se puede encontrar. ¿En qué paquete (y versión) es esto? – Andrie

+0

Creo que necesita una versión experimental de 'ggplot2', consulte https://github.com/hadley/ggplot2 para obtener información sobre cómo instalar esto. –

+0

Creo que 'as.raster()' vive en 'library (grDevices)'. 'annotation_raster' está en' ggplot2' versión 0.9.0. Actualizará el código en la parte superior. –

Respuesta

Cuestiones relacionadas