A Machine Learning API for Earth Observation Data Cubes Based on openEO
Authors: Brian Pondi, Jonas Hurst, Rolf Simoes, Jonas Starke, Marius Appel, Edzer Pebesma
Organizations: Institute for Geoinformatics, University of Münster, Heisenbergstr. 2, Münster, 48149, North-Rhine Westphalia, Germany. · FGV Agro - Center for Agribusiness Studies, Fundação Getulio Vargas, Av. Paulista, 542, São Paulo, 01310-000, São Paulo, Brazil. · Bochum University of Applied Sciences, Am Hochschulcampus 1, Bochum, 44801, North-Rhine Westphalia, Germany.
Earth Observation (EO) data are increasingly organized as spatio-temporal data cubes, while machine learning (ML) methods operate on tabular feature matrices or structured tensor inputs. This mismatch forces platform-specific transformations that are difficult to reproduce or transfer across cloud infrastructures. The openEO specification provides a unified interface for EO data access and processing across heterogeneous backends, but lacks a standardized approach for ML integration. We propose a process-level ML specification for openEO structured into three stages: model initialization, model actions (training, tuning, inference, validation), and model management. It supports classical algorithms such as Random Forest and SVM, as well as deep learning architectures for time-series and spatial patch-based modeling, including TempCNN, Temporal Attention Encoders, and foundation model inference. Three prototype implementations in R and Python demonstrate feasibility across diverse technology stacks. A crop type mapping use case demonstrates cross-backend interoperability by submitting an identical process graph to independent R and Python backends and comparing predictions and evaluation metrics. Two further use cases demonstrate deep learning on time series and foundation model inference, each executed on a dedicated backend. The prototypes reveal, however, that full cross-backend portability requires deeper harmonization of serialization formats and execution semantics than the process level alone can enforce; backend library versions and preprocessing conventions outside the specification's boundary also affect reproducibility. Addressing both through explicit backend conformance profiles represents the most important near-term direction. The specification advances the reproducibility, portability, and accessibility of ML workflows on EO data cubes across cloud platforms.
Figures & tables
Figure 1: Representation transformations between EO data cubes, tabular feature matrices (classical ML), tensor representations (deep learning), and prediction cubes. Each transformation must bridge a structural mismatch between the cube’s named dimensions and the model’s expected input layout.
Figure 2: A workflow for converting image/raster files into a pixel-aligned image/raster data cube (x,y,time,band) . Adapted from Kopp et al. (2019) .
Process Name
Description
mlm_class_catboost
Initializes a CatBoost classification model for later training using ml_fit . Typical tunable parameters include the number of trees, learning rate, tree depth, loss function, and random seed.
mlm_class_mlp
Initializes a Multi-Layer Perceptron classification model. Tunable parameters include the number of hidden layers, units per layer, activation functions, learning rate, batch size, and training epochs.
mlm_class_random_forest
Initializes a Random Forest classification model for later training using ml_fit . Example tunable parameters include the number of trees and the maximum number of variables per split.
mlm_class_svm
Initializes a Support Vector Machine classification model. Tunable parameters include the kernel type, regularization parameter, and kernel coefficient.
mlm_class_xgboost
Initializes an XGBoost classification model for later training using ml_fit . Representative tunable parameters include learning rate, maximum tree depth, subsampling ratio, and regularization terms.
mlm_class_tempcnn
Initializes a Temporal Convolutional Neural Network model for time series classification. Tunable parameters include the number of convolutional layers, kernel sizes, dropout rates, optimizer settings, and learning rate.
Table 1: Examples of ML Initialization Processes (mlm_ prefix) with representative tunable parameters.
Process Name
Description
ml_fit
Fits a machine learning model to a data cube of input features and target values. Trains the model using the provided data and returns a trained model object.
ml_tune_grid
Performs grid-based hyperparameter tuning for an initialized machine learning model using user-defined parameter ranges and evaluation criteria.
ml_tune_random
Performs randomized hyperparameter tuning for an initialized machine learning model by sampling parameter configurations from user-defined distributions.
ml_validate
Evaluates a trained machine learning model against a user-provided validation set and computes user-selected performance metrics.
ml_validate_kfold
Accepts an untrained model and a full training set, performs k -fold cross-validation with internally managed fold assignment, and returns the model refitted on the full training set enriched with aggregate per-class and overall cross-validation scores.
ml_predict
Applies a trained machine learning model to a data cube of input features and returns the predicted values.
Table 2: ML Action Processes (ml_ prefix), including training, tuning, validation, and inference.
Process Name
Description
load_ml_model
Loads a machine learning model from the current backend by its ID and returns it for use in subsequent processes.
load_stac_ml
Loads a machine learning model from a STAC MLM Item into the current session, enabling reuse of externally catalogued models.
save_ml_model
Saves a trained machine learning model and produces an accompanying STAC Item compliant with the STAC MLM Extension, making the model discoverable and reusable by others.
Table 3: Model Management Processes.
Figure 3: openEO backend interaction with client libraries across languages.
openEOcubes
openEOcraft
openeo-processes-dask-ml
Language of implementation
R
R
Python
Full openEO backend
✓
✓
✗
Data cube engine
gdalcubes
sits
xarray
Supported ML frameworks
R Torch, Caret
R Torch, Caret
PyTorch, Scikit-Learn
Engineered feature vectors
✓
✓
✓
Pixel-wise time series
✓
✓
✓
Table 4: Overview of the three prototype implementations of the proposed ML specification and their respective capabilities. Color coding distinguishes the two R-based backends, openEOcubes and openEOcraft (blue), from the Python-based openeo-processes-dask-ml backend (green). Checkmarks indicate supported features; crosses indicate features not yet implemented.
openEOcubes
openeo-processes-dask-ml
Overall Accuracy
0.82
0.82
Class
Precision
Recall
F1
Precision
Recall
F1
Barley
0.93
0.87
0.90
0.94
0.90
0.92
Corn
0.98
0.98
0.98
0.99
0.96
0.97
Permanent meadows
0.65
0.63
0.64
0.70
0.56
0.62
Rapeseed
0.99
0.97
0.98
1.00
1.00
1.00
Table 5: Per-class precision, recall, and F1 score for the Random Forest crop type classifier on the held-out prediction region.
Figure 5: Crop type maps for the prediction region in Brittany (Breizh), France, produced by applying the trained Random Forest classifier to the Sentinel-2 data cube. The maps show the spatial distribution of the six crop classes included in the BreizhCrops training dataset, as produced by the openeo-processes-dask-ml (top) and openEOcubes (bottom) implementations.
Figure 6: Relative frequency of classes assigned to a pixel in the prediction area for the openEOcubes and openeo-processes-dask-ml implementations.
Run
Learning rate
Epochs
Validation accuracy (%)
1
0.0005
20
89.6
2
0.0005
40
93.1
3
0.0001
20
86.4
4
0.0001
40
88.2
Table 6: TempCNN grid search results on the Rondônia training set. Run 2 was selected for final training.
Figure 8: Land cover classification map for the Rondônia study area, generated by applying the trained TempCNN model to Sentinel-2 time series. The map shows the spatial distribution of the nine land cover classes used in training and demonstrates execution of a deep learning workflow on EO data cubes, from preprocessing and inference to export of a categorical output cube.
Figure 9: Conceptual chaining of load_stac_ml and ml_predict to transform a Sentinel-2 EO data cube into a data cube of embeddings using the TerraMind foundation model.
Jul 27, 2026·Ghjulia Sialelli, Robin Young, Yuchang Jiang +9Remote Sensing
Photogrammetry and Remote Sensing, ETH Zurich, Switzerland · ETH AI Center, Zurich, Switzerland · Dept. of Computer Science and Technology, University of Cambridge, UK +6