The goal of sds is to provide spatial data sources!!
Installation
You can install the development version of sds from GitHub with:
# install.packages("devtools")
devtools::install_github("hypertidy/sds")Example
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"Code of Conduct
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.