2012-02-27 13 views
5

Dzień dobry wszystkim,ggplot2 i mapy: geom_point i pozycja annotation_raster niedopasowanie

Korzystanie poniższy kod można skutecznie odzyskać raster z Google przy użyciu ggmap, wykreślić annotation_raster użyciu ggplot2 i miejscowości witryny działka jako czerwone kropki na szczycie warstwy rastrowej. Na działce pozycje nie do siebie pasują (powinny podążać za linią brzegową). Wiem, że pozycje moich witryn są poprawne, ponieważ wskazują, gdzie powinny być, gdy przesyłam dane do Google Earth jako plik KML.

Sugestie zostaną docenione.

Ten kod będzie działać tak, jak jest ... Pamiętaj, że potrzebujesz wersji rozwojowej ggplot2, która jest dostępna na github. Aby zainstalować:

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

i kodu:

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) 

(Niestety, nie mogę zamieścić zdjęcie, jak jestem tu nowy).

+0

To nie działa na moim komputerze. Podejrzewam, że musisz również uwzględnić 'library (raster)'. Nawet wtedy nie można znaleźć 'adnotation_raster'. W którym pakiecie (i wersji) jest to? – Andrie

+0

Myślę, że potrzebujesz eksperymentalnej wersji 'ggplot2', zobacz https://github.com/hadley/ggplot2 w celu uzyskania informacji na temat instalacji tego. –

+0

Myślę, że 'as.raster()' żyje w 'bibliotece (grDevices)'. 'annotation_raster' znajduje się w' ggplot2' version 0.9.0. Zaktualizuje kod u góry. –

Odpowiedz

Powiązane problemy