e-sensing/sits

Satellite image time series in R

SITS – Satellite Image Time Series Analysis for Earth‑Observation Data Cubes

What it issits is an open‑source library (primary implementation in R with a thin Python wrapper called pysits) that lets you build, explore and classify satellite‑image time‑series stored in data cubes. It connects directly to a growing list of public Earth‑observation collections (Sentinel‑2, Landsat, MODIS, etc.) hosted on cloud platforms such as AWS, Microsoft Planetary Computer, Brazil Data Cube, Copernicus Data Space, Digital Earth Africa/Australia, Swiss Data Cube and others.

Why it matters – Modern remote‑sensing projects often need to work with thousands of images spanning years. sits automates the tedious steps of:

  1. Fetching imagery from cloud‑based STAC catalogs.
  2. Regularising irregular collections into a uniform spatio‑temporal grid (using gdalcubes).
  3. Extracting labelled time‑series for training data.
  4. Training a variety of machine‑learning and deep‑learning models (SVM, Random Forest, XGBoost, MLP, 1‑D ConvNets, ResNet, Temporal Attention encoders, etc.).
  5. Classifying whole data cubes, optionally with GPU acceleration via the torch/luz stack.
  6. Post‑processing (Bayesian smoothing, uncertainty estimation, active‑learning loops).

All of this is wrapped in a tidy‑verse‑style API that works with tibbles, sf objects and raster files, making the workflow reproducible and scriptable.


Key Features (directly from the README)

  • Multi‑source data cube creation – combine Sentinel‑1, Sentinel‑2, Landsat, MODIS, etc., from many cloud providers.
  • Regularisation – turn irregular collections into regular cubes (user‑defined spatial resolution and temporal period).
  • Sample extraction & quality control – pull time‑series for points/polygons from CSV or shapefile; optional self‑organising‑map QC.
  • Broad ML/DL toolbox – SVM, Random Forest, XGBoost, MLP, TempCNN, ResNet, Temporal Self‑Attention Encoder, LightTAE.
  • GPU support – deep‑learning models run on GPU automatically when torch detects one.
  • Spatial‑temporal segmentation – object‑based classification of time‑series.
  • Bayesian smoothing & uncertainty – post‑process classification maps to remove outliers and provide confidence.
  • Active‑learning & self‑supervised learning – tools to iteratively improve models.
  • Python APIpysits mirrors the R functions, so Python users get full feature parity.
  • Extensive documentation – an e‑book Satellite Image Time Series Analysis on Earth Observation Data Cubes and pkgdown website.

Typical Use‑Case Workflow

  1. Select a collection (e.g., Sentinel‑2 L2A on Microsoft Planetary Computer).
  2. Define a cube with sits_cube() (tiles, bands, dates).
  3. Regularise the cube with sits_regularize() to a fixed 60 m / 15‑day grid.
  4. Gather training samples from a CSV or shapefile and retrieve their time‑series via sits_get_data().
  5. Train a model, e.g., rfor_model <- sits_train(samples, sits_rfor()).
  6. Classify either individual series (sits_classify()) or the whole cube, producing probability rasters.
  7. Smooth the result (sits_smooth()) and convert to a labelled map (sits_label_classification()).
  8. Visualise with plot() or interactive sits_view().

Installation

  • R (stable version from CRAN):
    install.packages("sits", dependencies = TRUE)
    
  • Development version (latest fixes):
    devtools::install_github("e-sensing/sits", dependencies = TRUE)
    
  • Python wrapper (requires R + the arrow R package):
    pip install pysits   # Python 3.10+ required
    
  • GPU support is automatic when the torch R package detects a CUDA‑enabled device.

Ecosystem & Interoperability

  • Data sources – STAC‑compatible cloud catalogs (AWS, MPC, BDC, CDSE, DEAFRICA, DEAUSTRALIA, SDC, etc.).
  • Underlying librariesgdalcubes for cube regularisation, torch/luz for deep learning, sf, stars, terra, tidyverse for data handling, kohonen for SOM QC, RcppArmadillo for fast numeric kernels.
  • Outputs – raster files (GeoTIFF), probability cubes, uncertainty layers, interactive maps.
  • Community – part of the rOpenSci ecosystem (peer‑review badge), stable CRAN release, CI via GitHub Actions, code‑coverage reporting, and a contributor code of conduct.

Maturity & Licensing

  • Lifecycle – marked stable by the r-lib lifecycle badge; actively maintained (CI, code‑cov, recent releases). Peer‑reviewed by rOpenSci (issue #596).
  • License – GPL‑2 (free, open‑source, copyleft).
  • Citation – primary paper: Satellite Image Time Series Analysis for Big Earth Observation Data (Remote Sensing 2021, DOI 10.3390/rs13132428).

Who Should Use It?

  • Remote‑sensing researchers needing reproducible pipelines for land‑cover, agriculture, deforestation, or climate monitoring.
  • Data scientists who want to apply state‑of‑the‑art ML/DL to satellite time‑series without writing low‑level raster handling code.
  • GIS analysts comfortable with R (or Python) who need to pull large EO datasets from cloud archives and produce classified maps.
  • Students & educators – the e‑book and extensive examples make it a good teaching resource for EO time‑series analysis.

Bottom linesits is a full‑stack, open‑source toolbox for satellite image time‑series analysis, bridging cloud EO data, regularised data cubes, and modern machine‑learning models, all wrapped in a user‑friendly R/Python API.

Related

  • Project
  • Project
  • Project
  • Project
  • Project