e-sensing/sits
Satellite image time series in R
SITS – Satellite Image Time Series Analysis for Earth‑Observation Data Cubes
What it is – sits 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:
- Fetching imagery from cloud‑based STAC catalogs.
- Regularising irregular collections into a uniform spatio‑temporal grid (using
gdalcubes). - Extracting labelled time‑series for training data.
- Training a variety of machine‑learning and deep‑learning models (SVM, Random Forest, XGBoost, MLP, 1‑D ConvNets, ResNet, Temporal Attention encoders, etc.).
- Classifying whole data cubes, optionally with GPU acceleration via the
torch/luzstack. - 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
torchdetects 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 API –
pysitsmirrors 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
- Select a collection (e.g., Sentinel‑2 L2A on Microsoft Planetary Computer).
- Define a cube with
sits_cube()(tiles, bands, dates). - Regularise the cube with
sits_regularize()to a fixed 60 m / 15‑day grid. - Gather training samples from a CSV or shapefile and retrieve their time‑series via
sits_get_data(). - Train a model, e.g.,
rfor_model <- sits_train(samples, sits_rfor()). - Classify either individual series (
sits_classify()) or the whole cube, producing probability rasters. - Smooth the result (
sits_smooth()) and convert to a labelled map (sits_label_classification()). - Visualise with
plot()or interactivesits_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
arrowR package):pip install pysits # Python 3.10+ required - GPU support is automatic when the
torchR package detects a CUDA‑enabled device.
Ecosystem & Interoperability
- Data sources – STAC‑compatible cloud catalogs (AWS, MPC, BDC, CDSE, DEAFRICA, DEAUSTRALIA, SDC, etc.).
- Underlying libraries –
gdalcubesfor cube regularisation,torch/luzfor deep learning,sf,stars,terra,tidyversefor data handling,kohonenfor SOM QC,RcppArmadillofor 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-liblifecycle 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 line – sits 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