{"id":18189658,"url":"https://github.com/16eagle/basemaps","last_synced_at":"2025-04-02T05:32:39.684Z","repository":{"id":45386608,"uuid":"260173313","full_name":"16EAGLE/basemaps","owner":"16EAGLE","description":"A lightweight package for accessing basemaps from open sources in R 🗺️","archived":false,"fork":false,"pushed_at":"2024-04-25T14:03:15.000Z","size":1730,"stargazers_count":54,"open_issues_count":4,"forks_count":15,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-06-11T19:41:26.445Z","etag":null,"topics":["basemaps","carto","mapbox","openstreetmap","r","spatial"],"latest_commit_sha":null,"homepage":"https://jakob.schwalb-willmann.de/basemaps","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/16EAGLE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-04-30T09:49:39.000Z","updated_at":"2024-05-08T19:39:40.000Z","dependencies_parsed_at":"2023-09-22T15:42:06.645Z","dependency_job_id":"a53cb4c0-a5b1-4de9-8e1c-a4a22b7cb34e","html_url":"https://github.com/16EAGLE/basemaps","commit_stats":{"total_commits":84,"total_committers":2,"mean_commits":42.0,"dds":"0.011904761904761862","last_synced_commit":"299854d9bc6986231c393f8232828e797dd667ff"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/16EAGLE%2Fbasemaps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/16EAGLE%2Fbasemaps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/16EAGLE%2Fbasemaps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/16EAGLE%2Fbasemaps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/16EAGLE","download_url":"https://codeload.github.com/16EAGLE/basemaps/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246763812,"owners_count":20829795,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["basemaps","carto","mapbox","openstreetmap","r","spatial"],"created_at":"2024-11-03T04:03:38.885Z","updated_at":"2025-04-02T05:32:39.677Z","avatar_url":"https://github.com/16EAGLE.png","language":"R","readme":"# `basemaps`\n\n[![CRAN version](https://www.r-pkg.org/badges/version/basemaps)](https://CRAN.R-project.org/package=basemaps)\n[![CRAN downloads](https://cranlogs.r-pkg.org/badges/last-month/basemaps?color=brightgreen)](https://CRAN.R-project.org/package=basemaps)\n[![CRAN checks](https://badges.cranchecks.info/summary/basemaps.svg)](https://CRAN.R-project.org/package=basemaps)\n[![R-CMD-check](https://github.com/16EAGLE/basemaps/workflows/R-CMD-check/badge.svg)](https://github.com/16EAGLE/basemaps/actions)\n[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/16EAGLE/basemaps?branch=master\u0026svg=true)](https://ci.appveyor.com/project/16EAGLE/basemaps)\n[![Coverage](https://codecov.io/gh/16eagle/basemaps/branch/master/graph/badge.svg)](https://app.codecov.io/gh/16EAGLE/basemaps)\n[![Package dependencies](https://tinyverse.netlify.app/badge/basemaps)](https://CRAN.R-project.org/package=basemaps)\n\n\u003cimg src=\"https://i.imgur.com/wgYcDAA.gif\" alt=\"A preview of map types supported by basemaps for R\" width=\"100%\"\u003e\n\n`basemaps` is a lightweight `R` package to download and cache spatial basemaps from open sources such as *OpenStreetMap*, *Stamen*, *Stadia*, *Thunderforest*, *Carto*, *Mapbox*, *Esri*, *Maptiler* and others. Retrieved basemaps are translated into and returned as classes of choice, such as `terra`, `stars`, `raster`, `ggplot`, `mapview`, `magick`, or as files, such as `png` or `geotif`. The package aims to ease the use of basemaps in different contexts by providing a function interface as minimalist as possible.\n\n\n## Installation\n\n\nInstall the latest stable release of `basemaps` from CRAN:\n\n```r\ninstall.packages(\"basemaps\")\n```\n\nInstall the latest development version of `basemaps` from GitHub:\n\n```r\ndevtools::install_github(\"16EAGLE/basemaps\")\n```\n\n## Get started\n\nAll available map services and map types can be printed using `get_maptypes()`. The `basemap()` function and its class-specific aliases facilitate (down)loading a basemap and returning it as a class of choice. Map preferences that should be used during a session can be set as defaults using `set_defaults()`.\n\n``` r\nlibrary(basemaps)\ndata(ext)\n# or use draw_ext() to interactively draw an extent yourself\n\n# view all available maps\nget_maptypes()\n\n# set defaults for the basemap\nset_defaults(map_service = \"osm\", map_type = \"topographic\")\n\n# load and return basemap map as class of choice, e.g. as image using magick:\nbasemap_magick(ext)\n#\u003e Loading basemap 'topographic' from map service 'osm'...\n```\n\n\u003cimg src=\"https://i.imgur.com/uVbyyXb.png\" width=\"623\" /\u003e\n\n``` r\n# or as plot:\nbasemap_plot(ext)\n\n# or as ggplot2:\nbasemap_ggplot(ext)\n\n# or as ggplot2 layer:\nlibrary(ggplot2)\nggplot() + \n  basemap_gglayer(ext) +\n  scale_fill_identity() + \n  coord_sf()\n```\n\n\u003cimg src=\"https://i.imgur.com/3BzQEkx.png\" width=\"623\" /\u003e\n\n``` r\n# or as mapview:\nbasemap_mapview(ext)\n```\n\n\u003cimg src=\"https://i.imgur.com/0L6G37X.png\" width=\"623\" /\u003e\n\n``` r\n# or as spatial classes, such as terra:\nbasemap_terra(ext)\n#\u003e class       : SpatRaster \n#\u003e dimensions  : 614, 669, 3  (nrow, ncol, nlyr)\n#\u003e resolution  : 19.10926, 19.10926  (x, y)\n#\u003e extent      : 1224617, 1237401, 6032659, 6044392  (xmin, xmax, ymin, ymax)\n#\u003e coord. ref. : WGS 84 / Pseudo-Mercator (EPSG:3857) \n#\u003e colors RGB  : 1, 2, 3 \n#\u003e names       : red, green, blue \n#\u003e min values  :   0,     0,    0 \n#\u003e max values  : 253,   254,  255\n\n# or stars:\nbasemap_stars(ext)\n#\u003e stars object with 3 dimensions and 1 attribute\n#\u003e attribute(s), summary of first 1e+05 cells:\n#\u003e Min. 1st Qu. Median     Mean 3rd Qu. Max.\n#\u003e 0     183    213 201.3209     234  253\n#\u003e dimension(s):\n#\u003e      from  to  offset  delta                   refsys\n#\u003e x       1 669 1224617  19.11 WGS 84 / Pseudo-Mercator \n#\u003e y       1 614 6044392 -19.11 WGS 84 / Pseudo-Mercator\n#\u003e ...\n\n# or return as file(s), e.g. GeoTif\nbasemap_geotif(ext)\n#\u003e [1] \"basemap_20220922214954.tif\"\n\n# or PNG:\nbasemap_png(ext)\n#\u003e [1] \"osm_topographic_bg_2022-09-22_12-00-00.png\"\n```\n\n## Map examples\n\n`basemaps` supports a variety of map services and types (which can be printed using `get_maptypes()`). A selection of available map types is shown below. For a complete table of available map types, see [supported services and maps](#supported-services-and-maps).\n\n``` r\nbasemap(ext, map_service = \"osm\", map_type = \"streets\")\n#\u003e Loading basemap 'streets' from map service 'osm'...\n```\n\n\u003cimg src=\"https://i.imgur.com/zT5m4Ne.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"mapbox\", map_type = \"satellite\")\n#\u003e Loading basemap 'satellite' from map service 'mapbox'...\n```\n\n\u003cimg src=\"https://i.imgur.com/rM4VtoO.jpg\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"mapbox\", map_type = \"hybrid\")\n#\u003e Loading basemap 'hybrid' from map service 'mapbox'...\n```\n\n\u003cimg src=\"https://i.imgur.com/F7fU32T.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"mapbox\", map_type = \"streets\")\n#\u003e Loading basemap 'streets' from map service 'mapbox'...\n```\n\n\u003cimg src=\"https://i.imgur.com/a0FUoau.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"mapbox\", map_type = \"terrain\")\n#\u003e Loading basemap 'terrain' from map service 'mapbox'...\n```\n\n\u003cimg src=\"https://i.imgur.com/HfaZvBk.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_stamen\", map_type = \"terrain_bg\")\n#\u003e Loading basemap 'terrain_bg' from map service 'osm_stamen'...\n```\n\n\u003cimg src=\"https://i.imgur.com/WKwOIlW.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_stamen\", map_type = \"toner\")\n#\u003e Loading basemap 'toner' from map service 'osm_stamen'...\n```\n\n\u003cimg src=\"https://i.imgur.com/b7me3PP.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_stamen\", map_type = \"watercolor\")\n#\u003e Loading basemap 'watercolor' from map service 'osm_stamen'...\n```\n\n\u003cimg src=\"https://i.imgur.com/U9tCTkQ.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_thunderforest\", map_type = \"transport\")\n#\u003e Loading basemap 'transport' from map service 'osm_thunderforest'...\n```\n\n\u003cimg src=\"https://i.imgur.com/urteXlA.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_thunderforest\", map_type = \"landscape\")\n#\u003e Loading basemap 'landscape' from map service 'osm_thunderforest'...\n```\n\n\u003cimg src=\"https://i.imgur.com/V6oB4jP.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_thunderforest\", map_type = \"outdoors\")\n#\u003e Loading basemap 'outdoors' from map service 'osm_thunderforest'...\n```\n\n\u003cimg src=\"https://i.imgur.com/e6wWgLQ.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"osm_thunderforest\", map_type = \"atlas\")\n#\u003e Loading basemap 'atlas' from map service 'osm_thunderforest'...\n```\n\n\u003cimg src=\"https://i.imgur.com/xXNSYOI.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"carto\", map_type = \"light\")\n#\u003e Loading basemap 'light' from map service 'carto'...\n```\n\n\u003cimg src=\"https://i.imgur.com/OBMrcWi.png\" width=\"623\" /\u003e\n\n``` r\nbasemap(ext, map_service = \"carto\", map_type = \"dark\")\n#\u003e Loading basemap 'dark' from map service 'carto'...\n```\n\n\u003cimg src=\"https://i.imgur.com/c0hlnYP.png\" width=\"623\" /\u003e\n\n\n``` r\nbasemap(ext, map_service = \"maptiler\", map_type = \"satellite\")\n#\u003e Loading basemap 'satellite' from map service 'maptiler'...\n```\n\n\u003cimg src=\"https://i.imgur.com/8zOeGCn.jpeg\" width=\"623\" /\u003e\n\n\n``` r\nbasemap(ext, map_service = \"maptiler\", map_type = \"backdrop\")\n#\u003e Loading basemap 'backdrop' from map service 'maptiler'...\n```\n\n\u003cimg src=\"https://i.imgur.com/EbfkM8w.png\" width=\"623\" /\u003e\n\n## Supported services and maps\n\nThis table lists all currently implemented map services and map types and indicates whether they can be used without a map token (requiring registration at the respective service) or not. As of the date of implementation, all map services requiring registration offer their maps for free (please refer to the respective services' terms of use for details).\n\n| `map_service` | `map_type` | `map_token` required? |\n | ------ |  ------ | ------ |\n| `osm` | `streets` | no |\n| `osm` | `streets_de` | no |\n| `osm` | `topographic` | no |\n| `osm_stamen` | `toner` | yes, register: https://stadiamaps.com/ |\n| `osm_stamen` | `toner_bg` | yes, register: https://stadiamaps.com/ |\n| `osm_stamen` | `terrain` | yes, register: https://stadiamaps.com/ |\n| `osm_stamen` | `terrain_bg` | yes, register: https://stadiamaps.com/ |\n| `osm_stamen` | `watercolor` | yes, register: https://stadiamaps.com/ |\n| `osm_stadia` | `alidade_smooth` | yes, register: https://stadiamaps.com/ |\n| `osm_stadia` | `alidade_smooth_dark` | yes, register: https://stadiamaps.com/ |\n| `osm_stadia` | `outdoors` | yes, register: https://stadiamaps.com/ |\n| `osm_stadia` | `osm_bright` | yes, register: https://stadiamaps.com/ |\n| `osm_thunderforest` | `cycle` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `transport` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `landscape` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `outdoors` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `transport_dark` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `spinal` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `pioneer` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `mobile_atlas` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `neighbourhood` | yes, register: https://www.thunderforest.com/ |\n| `osm_thunderforest` | `atlas` | yes, register: https://www.thunderforest.com/ |\n| `carto` | `light` | no |\n| `carto` | `light_no_labels` | no |\n| `carto` | `light_only_labels` | no |\n| `carto` | `dark` | no |\n| `carto` | `dark_no_labels` | no |\n| `carto` | `dark_only_labels` | no |\n| `carto` | `voyager` | no |\n| `carto` | `voyager_no_labels` | no |\n| `carto` | `voyager_only_labels` | no |\n| `carto` | `voyager_labels_under` | no |\n| `mapbox` | `streets` | yes, register: https://mapbox.com |\n| `mapbox` | `outdoors` | yes, register: https://mapbox.com |\n| `mapbox` | `light` | yes, register: https://mapbox.com |\n| `mapbox` | `dark` | yes, register: https://mapbox.com |\n| `mapbox` | `satellite` | yes, register: https://mapbox.com |\n| `mapbox` | `hybrid` | yes, register: https://mapbox.com |\n| `mapbox` | `terrain` | yes, register: https://mapbox.com |\n| `esri` | `natgeo_world_map` | no |\n| `esri` | `usa_topo_maps` | no |\n| `esri` | `world_imagery` | no |\n| `esri` | `world_physical_map` | no |\n| `esri` | `world_shaded_relief` | no |\n| `esri` | `world_street_map` | no |\n| `esri` | `world_terrain_base` | no |\n| `esri` | `world_topo_map` | no |\n| `esri` | `world_dark_gray_base` | no |\n| `esri` | `world_dark_gray_reference` | no |\n| `esri` | `world_light_gray_base` | no |\n| `esri` | `world_light_gray_reference` | no |\n| `esri` | `world_hillshade_dark` | no |\n| `esri` | `world_hillshade` | no |\n| `esri` | `world_ocean_base` | no |\n| `esri` | `world_ocean_reference` | no |\n| `esri` | `antarctic_imagery` | no |\n| `esri` | `arctic_imagery` | no |\n| `esri` | `arctic_ocean_base` | no |\n| `esri` | `arctic_ocean_reference` | no |\n| `esri` | `world_boundaries_and_places_alternate` | no |\n| `esri` | `world_boundaries_and_places` | no |\n| `esri` | `world_reference_overlay` | no |\n| `esri` | `world_transportation` | no |\n| `esri` | `delorme_world_base_map` | no |\n| `esri` | `world_navigation_charts` | no |\n| `maptiler` | `aquarelle` | yes, register: https://www.maptiler.com |\n| `maptiler` | `aquarelle_dark` | yes, register: https://www.maptiler.com |\n| `maptiler` | `aquarelle_vivid` | yes, register: https://www.maptiler.com |\n| `maptiler` | `backdrop` | yes, register: https://www.maptiler.com |\n| `maptiler` | `basic` | yes, register: https://www.maptiler.com |\n| `maptiler` | `bright` | yes, register: https://www.maptiler.com |\n| `maptiler` | `dataviz` | yes, register: https://www.maptiler.com |\n| `maptiler` | `landscape` | yes, register: https://www.maptiler.com |\n| `maptiler` | `ocean` | yes, register: https://www.maptiler.com |\n| `maptiler` | `outdoor` | yes, register: https://www.maptiler.com |\n| `maptiler` | `satellite` | yes, register: https://www.maptiler.com |\n| `maptiler` | `streets` | yes, register: https://www.maptiler.com |\n| `maptiler` | `toner` | yes, register: https://www.maptiler.com |\n| `maptiler` | `topo` | yes, register: https://www.maptiler.com |\n| `maptiler` | `winter` | yes, register: https://www.maptiler.com |\n\n## Available functions\n\n* `get_maptypes()` returns every supported map service and map type that can be used as input to the `map_service` and `map_type` arguments of `set_defaults()`, `basemap()` or associated functions.\n* `draw_ext()` lets you draw an extent on an interactive map.\n* `set_defaults()`, `get_defaults()` and `reset_defaults()` set, get or reset the defaults of all map arguments passed to `basemap()` or associated functions.\n* `basemap()` and its aliases `basemap_raster()`, `basemap_stars()`, `basemap_mapview()`, `basemap_plot()`, `basemap_ggplot()`, `basemap_gglayer()`, `basemap_magick()`, `basemap_png()` and `basemap_geotif()` (down)load and cache a basemap of a defined extent `ext`, `map_service` and `map_type` and return it as an object of the defined class.\n* `gg_raster()` plots objects of class `SpatRaster`, `RasterLayer`, `RasterBrick` or `RasterStack` as `ggplot2`.\n* `flush_cache()` deletes all cached map tiles and basemaps.\n\n## Related packages\n\nIf you are interested in obtaining basemaps, you also may want to have a look at [`ceramic`](https://github.com/hypertidy/ceramic), an R package developed by Michael Sumner with a similar goal.\n\nThe underpinning code of `basemaps` was originally developed for [`moveVis`](https://movevis.org) and has been detached to allow its general use.\n\n\u003cbr\u003e\n\n***\n\n\u003csup\u003eSome content of this file may be protected (brand names, map imagery etc.), \u0026copy; Mapbox \u0026copy; Thunderforest \u0026copy; Stamen \u0026copy; Carto \u0026copy; Esri \u0026copy; Maptiler. Many thanks to the creators of [reprex](https://reprex.tidyverse.org) which was used to compile parts of this README.\u003c/sup\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F16eagle%2Fbasemaps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F16eagle%2Fbasemaps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F16eagle%2Fbasemaps/lists"}