Descriptions of spatial data sources that can be read directly with or without download. Most sources are readable by 'GDAL' software. There are functions for imagery, elevation, and a variety of easily accessible data streams including image tile servers, links to online files, and geographic data services.
The goal of sds is to provide spatial data sources!!
You can install the development version of sds from GitHub with:
# install.packages("devtools")
devtools::install_github("hypertidy/sds")
This shows some of the variety of the sources available.
library(sds)
gebco() ## a global seamless topography (bathymetry and elevation)
#> [1] "/vsicurl/https://data.source.coop/ausantarctic/gebco/GEBCO_2026.tif"
CGAZ() ## a global nations boundaries dataset
#> [1] "/vsicurl/https://github.com/mdsumner/geoboundaries/releases/download/latest/geoBoundariesCGAZ_ADM0.parquet"
CGAZ_sql(c("New Zealand", "Australia")) ## a SQL query for the CGAZ polygons
#> [1] "SELECT shapeGroup FROM geoBoundariesCGAZ_ADM0 WHERE shapeGroup IN ('NZL','AUS')"
cop30() ## a global 30m elevation data set
#> [1] "/vsicurl/https://opentopography.s3.sdsc.edu/raster/COP30/COP30_hh.vrt"
mpc() ## return STAC collections for use with GDAL
#> [1] "STACIT:\"https://planetarycomputer.microsoft.com/api/stac/v1/search?collections=sentinel-2-l2a&bbox=146.5,-43.2,147.5,-42.2&datetime=2026-09-26T00:00:00Z/2026-10-02T00:00:00Z\""
mpc( datetime = as.Date(c("2019-06-01", "2019-08-01")),
bbox = c(-148.56, -147.44, 60.80, 61.18), asset = "visual")
#> [1] "STACIT:\"https://planetarycomputer.microsoft.com/api/stac/v1/search?collections=sentinel-2-l2a&bbox=-148.56,60.8,-147.44,61.18&datetime=2019-06-01T00:00:00Z/2019-08-01T00:00:00Z\":asset=visual"
## or return just the string a for jsonlite read
js <- jsonlite::fromJSON(mpc(stacit = F))
## do it how you like
js$features$assets$visual$href
#> [1] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/DP/2026/09/30/S2A_MSIL2A_20260930T001241_N0513_R073_T55GDP_20260930T044108.SAFE/GRANULE/L2A_T55GDP_A058872_20260930T001244/IMG_DATA/R10m/T55GDP_20260930T001241_TCI_10m.tif"
#> [2] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/DN/2026/09/30/S2A_MSIL2A_20260930T001241_N0513_R073_T55GDN_20260930T044108.SAFE/GRANULE/L2A_T55GDN_A058872_20260930T001244/IMG_DATA/R10m/T55GDN_20260930T001241_TCI_10m.tif"
#> [3] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/EP/2026/09/30/S2B_MSIL2A_20260930T000219_N0513_R030_T55GEP_20260930T024315.SAFE/GRANULE/L2A_T55GEP_A049963_20260930T000221/IMG_DATA/R10m/T55GEP_20260930T000219_TCI_10m.tif"
#> [4] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/EN/2026/09/30/S2B_MSIL2A_20260930T000219_N0513_R030_T55GEN_20260930T024315.SAFE/GRANULE/L2A_T55GEN_A049963_20260930T000221/IMG_DATA/R10m/T55GEN_20260930T000219_TCI_10m.tif"
#> [5] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/DP/2026/09/30/S2B_MSIL2A_20260930T000219_N0513_R030_T55GDP_20260930T024315.SAFE/GRANULE/L2A_T55GDP_A049963_20260930T000221/IMG_DATA/R10m/T55GDP_20260930T000219_TCI_10m.tif"
#> [6] "https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/55/G/DN/2026/09/30/S2B_MSIL2A_20260930T000219_N0513_R030_T55GDN_20260930T024315.SAFE/GRANULE/L2A_T55GDN_A049963_20260930T000221/IMG_DATA/R10m/T55GDN_20260930T000219_TCI_10m.tif"
There are image tile servers:
wms_arcgis_mapserver_ESRI.WorldImagery_tms()
#> [1] "<GDAL_WMS>\n <Service name=\"TMS\">\n <ServerUrl>http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/${z}/${y}/${x}</ServerUrl>\n </Service>\n <DataWindow>\n <UpperLeftX>-20037508.34</UpperLeftX>\n <UpperLeftY>20037508.34</UpperLeftY>\n <LowerRightX>20037508.34</LowerRightX>\n <LowerRightY>-20037508.34</LowerRightY>\n <TileLevel>17</TileLevel>\n <TileCountX>1</TileCountX>\n <TileCountY>1</TileCountY>\n <YOrigin>top</YOrigin>\n </DataWindow>\n <Projection>EPSG:900913</Projection>\n <BlockSizeX>256</BlockSizeX>\n <BlockSizeY>256</BlockSizeY>\n <BandsCount>3</BandsCount>\n <MaxConnections>10</MaxConnections>\n <Cache/>\n <ZeroBlockHttpCodes>204,404,403</ZeroBlockHttpCodes>\n</GDAL_WMS>"
wms_openstreetmap_tms()
#> [1] "<GDAL_WMS>\n <Service name=\"TMS\">\n <ServerUrl>https://tile.openstreetmap.org/${z}/${x}/${y}.png</ServerUrl>\n </Service>\n <DataWindow>\n <UpperLeftX>-20037508.34</UpperLeftX>\n <UpperLeftY>20037508.34</UpperLeftY>\n <LowerRightX>20037508.34</LowerRightX>\n <LowerRightY>-20037508.34</LowerRightY>\n <TileLevel>18</TileLevel>\n <TileCountX>1</TileCountX>\n <TileCountY>1</TileCountY>\n <YOrigin>top</YOrigin>\n </DataWindow>\n <Projection>EPSG:3857</Projection>\n <BlockSizeX>256</BlockSizeX>\n <BlockSizeY>256</BlockSizeY>\n <BandsCount>3</BandsCount>\n <!-- Add a specific UserAgent for sustained use, per OSM tile usage policy -->\n <Cache />\n</GDAL_WMS>"
## not shown else will reveal my INSTANCE_ID
wms <- sentinel2_wms()
And a very specific sea ice source:
nsidc_seaice(hemisphere = "south")
#> [1] "/vsicurl/https://noaadata.apps.nsidc.org/NOAA/G02135/south/daily/geotiff/2026/09_Sep/S_20260924_concentration_v4.0.tif"
nsidc_seaice(hemisphere = "north")
#> [1] "/vsicurl/https://noaadata.apps.nsidc.org/NOAA/G02135/north/daily/geotiff/2026/09_Sep/N_20260924_concentration_v4.0.tif"
Please note that the sds project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.