GetMapTiles function

download map tiles from specified map tile servers such as openstreetmap or Google

download map tiles from specified map tile servers such as openstreetmap or Google

Query the server for map tiles, defined uniquely by their X and Y ID and zoom. For offline usage, these map tiles are stored in a local directory Example OSM:http://a.tile.openstreetmap.org/10/549/335.png Also see https://wiki.openstreetmap.org/wiki/Tile_servers Example Google mobile: http://mt1.google.com/vt/lyrs=m&x=1325&y=3143&z=13 Example Google satellite: http://mt1.google.com/vt/lyrs=s&x=1325&y=3143&z=13

GetMapTiles(center = c(lat = 52.431635, lon = 13.194773), lonR, latR, nTiles = c(3, 3), zoom = 13, type = c("google", "google-m", "google-s", "osm", "osm-hot", "stamen-toner", "stamen-terrain", "stamen-watercolor")[1], urlBase = "http://mt1.google.com/vt/lyrs=m", tileDir = "/tmp/", CheckExistingFiles = TRUE, TotalSleep = NULL, tileExt = ".png", returnTiles = TRUE, verbose = 0)

Arguments

  • center: optional center (lat first,lon second )
  • lonR: longitude range
  • latR: latitude range
  • nTiles: number of tiles in x and y direction
  • zoom: Google maps zoom level.
  • type: choice of tile server
  • urlBase: tileserver URL, alternatives would be "http://a.tile.openstreetmap.org/", "http://tile.stamen.com/toner/","http://tile.stamen.com/watercolor/"
  • tileDir: map tiles can be stored in a local directory, e.g. "~/mapTiles/Google/"
  • CheckExistingFiles: logical, if TRUE check if files already exist and only download if not!
  • TotalSleep: overall time (in seconds) that one is willing to add in between downloads. This is intended to lower the risk of a server denial. If NULL no call to Sys.sleep is executed
  • tileExt: image type of tile
  • returnTiles: return tiles in a list?
  • verbose: level of verbosity

Returns

list with important information

Author(s)

Markus Loecher

Note

Note that size is in order (lon, lat)

See Also

GetMap.bbox

Examples

if (0){ #OSM, Ireland xlim = c(-7, -3.5) ylim = c(51.35, 55.35) Dublin = c(lon=-6.266155,lat=53.350140) DublinMerc = geosphere_mercator(Dublin) ir.osm <- GetMapTiles(lonR=xlim, latR=ylim, zoom=7, verbose=1, type = "osm", tileDir= TRUE) map = plotOSM(ir.osm) par("usr")#A vector of the form c(x1, x2, y1, y2) points(map$bbox$upperLeft,col=2,pch=20) points(map$bbox$lowerRight,col=2,pch=20) points(DublinMerc, col =2, pch=1,cex=1.5) ir.stamenToner <- GetMapTiles(lonR=xlim, latR=ylim, zoom=7,verbose=0, type = "stamen", tileDir= TRUE) plotOSM(ir.stamenToner) ir.stamenWater <- GetMapTiles(lonR=xlim, latR=ylim, zoom=7, verbose=1, type = "stamen-watercolor", tileDir= TRUE) plotOSM(ir.stamenWater) ############################################# zoom=5 nTiles = prod(NumTiles(lonR=c(-135,-66), latR=c(25,54) , zoom=zoom)) us_google_5 = GetMapTiles(lonR=c(-135,-66), latR=c(25,54) , zoom=zoom, TotalSleep = 2*nTiles, type = "google", tileDir= TRUE, verbose = TRUE) PlotOnMapTiles(us_google_5) wtc_ll = getGeoCode("World Trade Center, NY") wtc_google_15=GetMapTiles(wtc_ll, zoom=15,nTiles = c(3,3), type = "google", tileDir= TRUE, verbose = 1) PlotOnMapTiles(wtc_google_15) wtc_google_16 =GetMapTiles(wtc_ll, zoom=16,nTiles = c(4,4), type = "google", tileDir= TRUE, verbose=1) PlotOnMapTiles(wtc_google_16) wtc_stamen=GetMapTiles(wtc_ll, zoom=15,nTiles = c(3,3), verbose=1, type = "stamen-toner", tileDir= TRUE) PlotOnMapTiles(wtc_stamen) ###combine with leaflet: #From:http://stackoverflow.com/questions/5050851/ # best-lightweight-web-server-only-static-content-for-windows #To use Python as a simple web server just change your working #directory to the folder with your static content and type #python -m SimpleHTTPServer 8000, everything in the directory #will be available at http:/localhost:8000/ library(leaflet) m = leaflet::leaflet() %>% addTiles( urlTemplate = "http:/localhost:8000/mapTiles/OSM/{z}_{x}_{y}.png") m = leaflet::leaflet() %>% addTiles( urlTemplate = "http:/localhost:8000/mapTiles/Google/{z}_{x}_{y}.png") m = m %>% leaflet::setView(-74.01312, 40.71180, zoom = 16) m = m %>% leaflet::addMarkers(-74.01312, 40.71180) #Quadriga: m = m %>% leaflet::setView(13.39780, 52.51534, zoom = 16) m = m %>% leaflet::addMarkers(13.39780, 52.51534) }