Skip to contents

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.