Skip to content

Commit bddd161

Browse files
committed
initial trannsferred functions
0 parents  commit bddd161

20 files changed

Lines changed: 1496 additions & 0 deletions

.Rbuildignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
^.*\.Rproj$
2+
^\.Rproj\.user$

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.Rproj.user
2+
.Rhistory
3+
.RData
4+
.Ruserdata
5+
basemaps.Rproj

DESCRIPTION

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Package: basemaps
2+
Type: Package
3+
Title: Accessing spatial basemaps in R
4+
Version: 0.0.1
5+
Depends:
6+
R (>= 3.5.0)
7+
Date: 2020-05-01
8+
Authors@R: person("Jakob", "Schwalb-Willmann", email = "movevis@schwalb-willmann.de",
9+
role = c("aut", "cre"), comment = c(ORCID = "0000-0003-2665-1509"))
10+
Description: A lightweight package to access spatial basemaps from open sources such as OpenStreetMap, Carto and Mapbox in R
11+
License: GPL-3
12+
Encoding: UTF-8
13+
Imports:
14+
slippymath,
15+
curl,
16+
raster,
17+
sf,
18+
pbapply,
19+
ggplot2,
20+
magick
21+
BugReports: http://www.github.com/16eagle/basemaps/issues
22+
RoxygenNote: 7.1.0

LICENSE

Lines changed: 674 additions & 0 deletions
Large diffs are not rendered by default.

NAMESPACE

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Generated by roxygen2: do not edit by hand
2+
3+
export(basemap)
4+
export(basemap_ggplot)
5+
export(basemap_mapview)
6+
export(basemap_plot)
7+
export(basemap_raster)
8+
export(basemap_stars)
9+
export(get_defaults)
10+
export(get_maptypes)
11+
export(set_defaults)
12+
importFrom(curl,curl_download)
13+
importFrom(ggplot2,aes_string)
14+
importFrom(ggplot2,geom_raster)
15+
importFrom(ggplot2,geom_tile)
16+
importFrom(ggplot2,ggplot)
17+
importFrom(ggplot2,scale_fill_identity)
18+
importFrom(magick,image_convert)
19+
importFrom(magick,image_read)
20+
importFrom(magick,image_write)
21+
importFrom(mapview,mapview)
22+
importFrom(mapview,viewRGB)
23+
importFrom(pbapply,pbapply)
24+
importFrom(pbapply,pboptions)
25+
importFrom(raster,"extent<-")
26+
importFrom(raster,brick)
27+
importFrom(raster,crop)
28+
importFrom(raster,crs)
29+
importFrom(raster,extend)
30+
importFrom(raster,extent)
31+
importFrom(raster,merge)
32+
importFrom(raster,ncell)
33+
importFrom(raster,nlayers)
34+
importFrom(raster,plot)
35+
importFrom(raster,plotRGB)
36+
importFrom(raster,projectRaster)
37+
importFrom(raster,resample)
38+
importFrom(raster,writeRaster)
39+
importFrom(sf,st_as_sfc)
40+
importFrom(sf,st_bbox)
41+
importFrom(sf,st_crs)
42+
importFrom(sf,st_transform)
43+
importFrom(slippymath,bbox_to_tile_grid)
44+
importFrom(slippymath,compose_tile_grid)
45+
importFrom(stars,st_as_stars)

NEWS.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
***
2+
3+
## basemaps 0.0.1
4+
Unreleased development version.
5+
6+
**New functions:**
7+
8+
*
9+
10+
11+
**New features:**
12+
13+
*
14+
15+
<br>
16+
17+
***
18+
This document should provide a broad overview on changes that are applied to the basemaps R package. There is no warranty for completeness, since minor changes might not be included. All improvement and feature descriptions are bundled per release version. The document is currently maintained by Jakob Schwalb-Willmann.

R/basemap.R

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#' Get a spatial basemap
2+
#'
3+
#' This function (down)loads and caches a basemap from a defined extent \code{ext}, \code{map_service} and \code{map_type} and returns it as a object of a defined \code{class}.
4+
#'
5+
#' @param ext extent to be covered by the basemap. Any spatial class.
6+
#' @param map_service character,
7+
#' @param map_type character,
8+
#' @param map_token character,
9+
#' @param map_res numeric,
10+
#' @param map_dir character, cache directory
11+
#' @param class character, output class.
12+
#' @param ... additional arguments.
13+
#' @param verbose
14+
#'
15+
#' @return
16+
#'
17+
#' @importFrom sf st_bbox
18+
#' @importFrom raster nlayers plotRGB plot
19+
#' @importFrom stars st_as_stars
20+
#' @importFrom mapview mapview viewRGB
21+
#' @export
22+
#'
23+
basemap <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, class = "raster",
24+
..., verbose = TRUE){
25+
26+
## checks
27+
if(inherits(verbose, "logical")) options(basemaps.verbose = verbose)
28+
if(inherits(ext, "sf")) ext <- st_bbox(ext)
29+
if(is.na(map_service)) map_service = getOption("basemaps.defaults")$map_service
30+
if(is.na(map_type)) map_type = getOption("basemaps.defaults")$map_type
31+
if(is.na(map_res)) map_res = getOption("basemaps.defaults")$map_res
32+
if(is.na(map_token)) map_token = getOption("basemaps.defaults")$map_token
33+
34+
if(!is.na(map_dir)) if(!dir.exists(map_dir)){
35+
out("Directory defined by argument 'map_dir' does not exist, using a temporary directory instead.", type = 2)
36+
map_dir <- NA
37+
}
38+
if(is.na(map_dir)) map_dir <- getOption("basemaps.defaults")$map_dir
39+
class <- tolower(class)
40+
41+
## get map
42+
out(paste0("Loading basemap '", map_type, "' from map service '", map_service, "'..."))
43+
ext <- st_bbox(ext)
44+
map <- .get_map(ext, map_service, map_type, map_token, map_dir, map_res)
45+
46+
## define class
47+
if("raster" %in% class) return(map)
48+
if("stars" %in% class) return(st_as_stars(map))
49+
if("mapview" %in% class) quiet(if(nlayers(map) == 3) return(viewRGB(map, 1, 2, 3)) else return(mapview(map)))
50+
if("plot" == class) if(nlayers(map) == 3) plotRGB(map) else plot(map)
51+
if("ggplot" %in% class) if(nlayers(map) == 3) gg.bmap(r = map, r_type = "RGB", ...) else gg.bmap(r = map, r_type = "gradient")
52+
}
53+
54+
#' @inheritParams basemap
55+
#' @export
56+
basemap_raster <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, ..., verbose = TRUE){
57+
basemap(ext, map_service, map_type, map_res, map_token, map_dir, class = "raster", ..., verbose = verbose)
58+
}
59+
60+
61+
#' @inheritParams basemap
62+
#' @export
63+
basemap_stars <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, ..., verbose = TRUE){
64+
basemap(ext, map_service, map_type, map_res, map_token, map_dir, class = "stars", ..., verbose = verbose)
65+
}
66+
67+
#' @inheritParams basemap
68+
#' @export
69+
basemap_mapview <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, ..., verbose = TRUE){
70+
basemap(ext, map_service, map_type, map_res, map_token, map_dir, class = "mapview", ..., verbose = verbose)
71+
}
72+
73+
#' @inheritParams basemap
74+
#' @export
75+
basemap_plot <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, ..., verbose = TRUE){
76+
basemap(ext, map_service, map_type, map_res, map_token, map_dir, class = "plot", ..., verbose = verbose)
77+
}
78+
79+
#' @inheritParams basemap
80+
#' @export
81+
basemap_ggplot <- function(ext, map_service = NA, map_type = NA, map_res = NA, map_token = NA, map_dir = NA, ..., verbose = TRUE){
82+
basemap(ext, map_service, map_type, map_res, map_token, map_dir, class = "ggplot", ..., verbose = verbose)
83+
}

R/data.R

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#' Example extemt
2+
#'
3+
#' The example dataset contains the object \code{ext}, an \code{sf} object that can be used to call \code{\link{basemap}} and the associated functions.
4+
#'
5+
#' @format \code{sf} object
6+
#' @usage data(ext)
7+
#' @docType data
8+
#'
9+
"ext"

R/defaults.R

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#' Set \code{basemaps} defaults
2+
#'
3+
#' This function sets the defaults of all map arguments passed to \code{\link{basemap}} and associated functions.
4+
#'
5+
#' @inheritParams basemap
6+
#' @return None
7+
#'
8+
#' @name defaults
9+
#' @export
10+
11+
set_defaults <- function(map_service = NULL, map_type = NULL, map_res = NULL, map_token = NULL, map_dir = NULL){
12+
13+
defaults <- getOption("basemaps.defaults")
14+
if(!is.null(map_service)) defaults$map_service <- map_service
15+
if(!is.null(map_type)) defaults$map_type <- map_type
16+
if(!is.null(map_res)) defaults$map_res <- map_res
17+
if(!is.null(map_token)) defaults$map_token <- map_token
18+
if(!is.null(map_dir)) defaults$map_dir <- map_dir
19+
options(basemaps.defaults = defaults)
20+
}
21+
22+
#' @rdname defaults
23+
#' @export
24+
get_defaults <- function(){
25+
getOption("basemaps.defaults")
26+
}

R/get_maptypes.R

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#' Get all supported map types
2+
#'
3+
#' This function returns every supported map type that can be used as input to the \code{map_type} argument of \code{\link{frames_spatial}}.
4+
#'
5+
#' @param map_service character, optional, either \code{"osm"}, \code{"carto"} or \code{"mapbox"}. Otherwise, a list of map types for both services is returned.
6+
#' @return A character vector of supported map types
7+
#'
8+
#' @examples
9+
#' # for all services
10+
#' get_maptypes()
11+
#'
12+
#' # for osm only
13+
#' get_maptypes("osm")
14+
#' # or
15+
#' get_maptypes()$osm
16+
#'
17+
#' # for mapbox only
18+
#' get_maptypes("mapbox")
19+
#' # or
20+
#' get_maptypes()$mapbox
21+
#'
22+
#' # same for all other map services
23+
#'
24+
#' @seealso \code{\link{basemap}}
25+
#' @export
26+
27+
get_maptypes <- function(map_service = NULL){
28+
map_types <- lapply(getOption("basemaps.map_api"), names)
29+
if(!is.null(map_service)) map_types[[map_service]] else map_types
30+
}

0 commit comments

Comments
 (0)