dismo (version 0.5-10)

gmap: Get a Google map

Description

Retrieve a 'Google Map' from the Google static maps web-service. These can be used as a background for plotting points and other spatial data. The projection of the returned maps is "Mercator" and your data may need to be transformed before you can plot on top of these maps. You can use the Mercator function for that, and to transform map coordinates back to longitude/latitude. This function is based on functions by Markus Loecher for the RgoogleMaps package.

Usage

gmap(x, exp=1, type='terrain', filename='', ...) 
Mercator(p, inverse = FALSE)

Arguments

x
A textual locality description, or an Extent object or an object that can be coerced to one (e.g. a Raster object)
exp
An exansion factor to enlarge (by mutiplication) the extent specified by x
type
Character. Choose from 'roadmap', 'sattellite', 'hybrid', 'terrain'
filename
Character. filename (optional)
...
Graphical parameters
p
Points. A two-column matrix, or a SpatialPoints object
inverse
Should the inverse projection be done (i.e. from Mercator to longitude/latitude

Value

  • A RasterLayer

Examples

Run this code
if(require(rgdal)){
# get a map using names
g = gmap('Australia')
plot(g, inter=TRUE)
gs = gmap('Sydney, New South Wales, Australia', type='satellite')
plot(gs, inter=TRUE)
gs = gmap('Sydney, Australia', type='satellite', exp=3)
plot(gs, inter=TRUE)
gs = gmap('Sydney, Australia', type='hybrid', exp=8)
plot(gs, inter=TRUE)

# from a maxtrix with lon/lat points
x = runif(30)*10 + 40
y = runif(30)*10 - 20
xy = cbind(x, y)
g = gmap(xy, type='hybrid')
plot(g, inter=TRUE)
points(Mercator(xy) , col='red', pch=20)

# or from an Extent object
e = extent( -121.9531 , -120.3897 , 35.36 , 36.61956 )
# you can also get an Extent object by clicking on the map twice after using:
# drawExtent()
r = gmap(e)
plot(r, interpolate=TRUE)

# transform points to Mercator for plotting on top of map:
pt <- matrix(c(-121, 36), ncol=2)
ptm <- Mercator(pt)
points(ptm, cex=3, pch=20, col='blue')
Mercator(ptm, inverse=TRUE)

# transform Spatial objects to Mercator for plotting on top of map
# here for points, but particularly relevant for lines and polygons
pt <- data.frame(pt)
coordinates(pt) = ~X1 + X2
pt@proj4string <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84")
ptm2 <- spTransform(pt, CRS("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"))
points(ptm, col='red', pch='x', cex=3)

}

Run the code above in your browser using DataCamp Workspace