Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
20207a2
aggregate_spatial_window typo fix (#446)
soxofaan Jul 31, 2023
ab36661
clean-up
m-mohr May 25, 2023
ff25e4c
Issue #460 doc crossreferences between filter_bbox/filter_spatial/fil…
soxofaan Sep 30, 2023
67bae80
Move tests to dev
m-mohr Oct 12, 2023
c642d0c
Merge remote-tracking branch 'origin/draft' into draft
m-mohr Oct 12, 2023
03e9fa4
Use x \ y instead of a \ b
m-mohr Oct 25, 2023
4ec0dd4
`sqrt`: Clarified that NaN is returned for negative numbers #474 (#475)
m-mohr Oct 27, 2023
1d97aaa
`clip`: Throw an exception if min > max #472 (#477)
m-mohr Oct 27, 2023
6973154
`array_append`: Added `number` type for labels to be consistent with …
m-mohr Oct 27, 2023
822daf2
`filter_spatial`: Clarify masking (#470)
m-mohr Oct 27, 2023
47cb7a1
`between`: Clarify that `null` is passed through
m-mohr Oct 30, 2023
1802a7a
`eq` and `neq`: Explicitly set the minimum value for the `delta` para…
m-mohr Oct 30, 2023
f4bfc76
Clarify linear_scale_range
m-mohr Oct 31, 2023
5407a04
Math functions: Clarified value ranges and NaN (#476)
m-mohr Dec 8, 2023
a07442f
Added uniqueness contraints and clarified DimensionNotAvailable excep…
m-mohr Dec 22, 2023
e5227f8
Remove unused exception from aggregate_temporal_period, clarified wee…
m-mohr Dec 22, 2023
2dc8aec
Renamed `create_data_cube` to `create_cube`. #68
m-mohr Jan 23, 2024
1d61c46
Update CI
m-mohr Jul 26, 2024
d012046
`apply_polygon`: rename `polygons` parameter to `geometries` (#511) (…
soxofaan Jul 26, 2024
7dea8a7
Fix formatting
m-mohr Aug 23, 2024
72aba78
STAC, Collection and Workspace handling in openEO (#485)
m-mohr Oct 21, 2024
ae95ad3
Fix cum* process descriptions and make ignore_nodata descriptions ali…
m-mohr Nov 21, 2024
ada6252
apply_polygon: datacube instead of raster-cube #524 (#525)
m-mohr Dec 4, 2024
78de225
Simplify some enum types (#529)
soxofaan Feb 5, 2025
c82cd44
Guidelines and processes to run OGC API - Processes / CWL / EOAP (#520)
m-mohr Mar 30, 2025
b9c9bd9
Fix broken epsg href (#539)
manugv May 27, 2025
616ef16
Issue #527 Clarify FeatureCollection geometries in load_collection an…
soxofaan Jul 16, 2025
cd73c5d
`load_collection` and `load_stac`: Clarified that scale and offset ar…
m-mohr Jul 16, 2025
cf7e2f5
Revert "Renamed `create_data_cube` to `create_cube`. #68"
m-mohr Jul 16, 2025
605a7e8
`aggregate_spatial` and `load_geojson`: Dimensions must by of type `g…
m-mohr Jul 17, 2025
c03a7d3
`run_udf`: Simplified and clarified the schema for `data` #515 (#519)
m-mohr Jul 22, 2025
f764311
`mask`: Add missing exception `IncompatibleDataCubes` #538 (#546)
m-mohr Jul 25, 2025
e3fe884
Clarify no-data value / null / NaN / character encoding for most proc…
m-mohr Aug 7, 2025
2f97751
Marked processes as stable: `apply_polygon`, `date_between`, `date_sh…
m-mohr Aug 7, 2025
2a2b57f
date_difference: Add week as unit #506 (#543)
m-mohr Aug 7, 2025
6284307
error => exception
m-mohr Aug 7, 2025
bd3cbb8
`load_stac`: Clarify the `properties` parameter (#547)
m-mohr Aug 7, 2025
083c227
Add text_position (#505)
m-mohr Aug 7, 2025
9f3a866
`add_dimension`: Define behaviour for spatial dimensions better (#496)
m-mohr Aug 7, 2025
7974ff2
`aggregate_spatial`: Clarified that the output geometries are unchang…
m-mohr Aug 8, 2025
65df68e
Clarify handling of workspace paths (#545)
m-mohr Aug 29, 2025
02c5e04
`load_collection` and `load_stac`: Clarify the dimension names and la…
m-mohr Aug 29, 2025
cc0eedc
Tests for the test suite (#468)
m-mohr Sep 8, 2025
92b5f40
`is_nan`: Return `false` instead of `true` for non-numerical data typ…
m-mohr Sep 8, 2025
2cf6c1c
Make all/any more consistent with other programming languages #494 (#…
m-mohr Oct 7, 2025
98ae014
v2.0.0-rc.2 release
m-mohr Jan 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,11 @@ indent_style = spaces
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true

[*.json5]
charset = utf-8
end_of_line = crlf
indent_style = spaces
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
13 changes: 6 additions & 7 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,21 @@ on:
push:
branches:
- draft
- draft-2.0
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Inject env variables
uses: rlespinasse/github-slug-action@v3.x
- uses: actions/setup-node@v3
uses: rlespinasse/github-slug-action@v4
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- run: |
npm install
npm run generate
working-directory: tests
working-directory: dev
- name: clone gh-pages and clean-up
if: ${{ env.GITHUB_REF_SLUG == 'master' }}
run: |
Expand All @@ -32,8 +31,8 @@ jobs:
if: ${{ env.GITHUB_REF_SLUG != 'master' }}
run: mkdir gh-pages
- run: |
cp tests/docs.html index.html
cp tests/processes.json processes.json
cp dev/docs.html index.html
cp dev/processes.json processes.json
rsync -vrm --include='*.json' --include='*.html' --include='meta/***' --include='proposals/***' --exclude='*' . gh-pages
- name: deploy to root (master)
uses: peaceiris/actions-gh-pages@v3
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- uses: actions/checkout@v3
- name: Run tests
- uses: actions/checkout@v4
- name: Run linter
run: |
npm install
npm run test
working-directory: tests
npm test
working-directory: dev
76 changes: 74 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,81 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased / Draft
## [Unreleased] - Draft

### Added

### Changed

### Fixed

## [2.0.0-rc.2] - 2026-02-02

### Added

- Implementation guide for implementing OGC API - Processes in openEO
- Unit Tests (see folder `tests`, moved specification tests and CI tools to `dev`)
- `date_difference`: Allow `week` as a unit [#506](https://github.com/Open-EO/openeo-processes/issues/506)
- `export_collection`: New process
- `export_workspace`: New process
- `run_ogcapi`: New process
- `run_ogcapi_externally`: New process
- `stac_modify`: New process
- `text_find`: New process

### Changed

- Processes that have been marked as stable: `apply_polygon`, `date_between`, `date_shift`, `filter_labels`, `inspect`
- Clarified for various mathematical functions the defined input and output ranges.
Mention that `NaN` is returned outside of the defined input range where possible.
- Clarified for several comparison processes how `NaN` values have to be handled.
- Clarified for various processes the handling of no-data values and `null`, see also the [implementation guide](meta/implementation.md#no-data-value). [#480](https://github.com/Open-EO/openeo-processes/issues/480)
- Added a [section about character encodings to the implementation guide](meta/implementation.md#character-encoding).
Removed any character encoding related wording from the process specifications itself.
- Added a uniqueness contraint to various array-typed parameters (e.g. lists of dimension names or labels)
- `all`: For empty arrays, returns `true` instead of no-data. [#494](https://github.com/Open-EO/openeo-processes/issues/494)
- `any`: For empty arrays, returns `false` instead of no-data. [#494](https://github.com/Open-EO/openeo-processes/issues/494)
- `apply_polygon`: Renamed `polygons` parameter to `geometries` for better alignment with other geometry handling processes. [#511](https://github.com/Open-EO/openeo-processes/issues/511)
- `clip`: Throw an exception if min > max [#472](https://github.com/Open-EO/openeo-processes/issues/472)
- `is_nan`: Return `false` instead of `true` for non-numerical data types. [#486](https://github.com/Open-EO/openeo-processes/issues/486)
- `save_results`: Returns the STAC resource instead of boolean `true` [API#376](https://github.com/Open-EO/openeo-api/issues/376)

### Fixed

- Clarified for various mathematical functions the defined input and output ranges. Mention that `NaN` is returned outside of the defined input range where possible.
- Clarified for various processes the handling of no-data values and null, see also the [implementation guide](meta/implementation.md). [#480](https://github.com/Open-EO/openeo-processes/issues/480)
- `add_dimension`: Clearly define behaviour for adding spatial dimensions
- `apply_polygon`: Replaced outdated usage of `raster-cube` subtype with `datacube` and dimensions. [#524](https://github.com/Open-EO/openeo-processes/issues/524)
- `aggregate_spatial` and `load_geojson`: Dimensions must by of type `geometry`, not `geometries`
- `aggregate_spatial`: Clarified that the output geometries are unchanged compared to the input geometries. [#499](https://github.com/Open-EO/openeo-processes/issues/499)
- `aggregate_temporal` and `aggregate_temporal_period`: Clarified that the process throws a `DimensionNotAvailable` exception when no temporal dimension exists.
- `aggregate_temporal_period`: Removed unused exception `DistinctDimensionLabelsRequired`.
- `aggregate_temporal_period`: Clarified that the definition of weeks follows ISO 8601.
- `apply_polygon`: Replaced outdated usage of `raster-cube` subtype with `datacube` and dimensions. [#524](https://github.com/Open-EO/openeo-processes/issues/524)
- `array_interpolate_linear`: Apply interpolation to NaN and no-data values.
- `cummax`, `cummin`, `cumproduct`, `cumsum`: Clarified the descriptions around the `ignore_nodata` parameter.
- `divide`: Clarified behavior for division by 0
- `between`: Clarify that `null` is passed through.
- `eq` and `neq`: Explicitly set the minimum value for the `delta` parameter.
- `filter_bbox`, `load_collection`, `load_stac`: Clarified that the bounding box is reprojected to the CRS of the spatial data cube dimensions if required.
- `filter_spatial`: Clarified that masking is applied using the given geometries. [#469](https://github.com/Open-EO/openeo-processes/issues/469)
- `load_collection` and `load_stac`:
- Clarified that scale and offset are not applied automatically when loading the data. [#503](https://github.com/Open-EO/openeo-processes/issues/503)
- Clarify the dimension naming and the order of dimension labels for nominal labels. [#488](https://github.com/Open-EO/openeo-processes/issues/488), [#489](https://github.com/Open-EO/openeo-processes/issues/489)
- `load_stac`: Clarify handling of the `properties` parameter in the context of STAC APIs and static catalogs. [#536](https://github.com/Open-EO/openeo-processes/issues/536)
- `load_uploaded_files` and `run_udf`: Clarify handling of file paths and added `FileNotFound` exception. [#461](https://github.com/Open-EO/openeo-processes/issues/461)
- `mask`: Add missing exception `IncompatibleDataCubes` [#538](https://github.com/Open-EO/openeo-processes/issues/538)
- `mod`: Clarified behavior for y = 0
- `run_udf`: Simplified and clarified the schema for `data` - no functional change.
- `sqrt`: Clarified that NaN is returned for negative numbers.
- Clarify allowed `FeatureCollection` geometries in `load_collection`, `mask_polygon`, `apply_polygon`, and `load_stac` [#527](https://github.com/Open-EO/openeo-processes/issues/527)

## [2.0.0-rc.1] - 2023-05-25

### Fixed

- `array_append`: Added `number` type for labels to be consistent with other processes. Default to numerical index instead of string. Clarify that the `label` parameter only applies to labeled arrays.

### Added

- New processes in proposal state:
Expand Down Expand Up @@ -365,7 +436,8 @@ First version which is separated from the openEO API. Complete rework of all pro
Older versions of the processes were released as part of the openEO API, see the corresponding changelog for more information.


[Unreleased]: <https://github.com/Open-EO/openeo-processes/compare/2.0.0-rc.1...HEAD>
[Unreleased]: <https://github.com/Open-EO/openeo-processes/compare/2.0.0-rc.2...HEAD>
[2.0.0-rc.2]: <https://github.com/Open-EO/openeo-processes/compare/2.0.0-rc.1...2.0.0-rc.2>
[2.0.0-rc.1]: <https://github.com/Open-EO/openeo-processes/compare/1.2.0...2.0.0-rc.1>
[1.2.0]: <https://github.com/Open-EO/openeo-processes/compare/1.1.0...1.2.0>
[1.1.0]: <https://github.com/Open-EO/openeo-processes/compare/1.0.0...1.1.0>
Expand Down
31 changes: 16 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,20 @@ openEO develops interoperable processes for big Earth observation cloud processi

The [master branch](https://github.com/Open-EO/openeo-processes/tree/master) is the 'stable' version of the openEO processes specification. An exception is the [`proposals`](proposals/) folder, which provides experimental new processes currently under discussion. They may still change, but everyone is encouraged to implement them and give feedback.

The latest release is version **2.0.0-rc.1**. The [draft branch](https://github.com/Open-EO/openeo-processes/tree/draft) is where active development takes place. PRs should be made against the draft branch.

| Version / Branch | Status | openEO API versions |
| ------------------------------------------------------------ | ------------------------- | ------------------- |
| [unreleased / draft](https://processes.openeo.org/draft) | in development | 1.x.x |
| [**2.0.0 RC1** / master](https://processes.openeo.org/2.0.0-rc.1/) | **upcoming version (RC)** | 1.x.x |
| [1.2.0](https://processes.openeo.org/1.2.0/) | **latest stable version** | 1.x.x |
| [1.1.0](https://processes.openeo.org/1.1.0/) | legacy version | 1.x.x |
| [1.0.0](https://processes.openeo.org/1.0.0/) | legacy version | 1.x.x |
| [1.0.0 RC1](https://processes.openeo.org/1.0.0-rc.1/) | legacy version | 1.x.x |
| [0.4.2](https://processes.openeo.org/0.4.2/) | legacy version | 0.4.x |
| [0.4.1](https://processes.openeo.org/0.4.1/) | legacy version | 0.4.x |
| [0.4.0](https://processes.openeo.org/0.4.0/) | legacy version | 0.4.x |
The latest release is version **2.0.0-rc.2**. The [draft branch](https://github.com/Open-EO/openeo-processes/tree/draft) is where active development takes place. PRs should be made against the draft branch.

| Version / Branch | Status | openEO API versions |
| ------------------------------------------------------------------ | ------------------------- | ------------------- |
| [unreleased / draft](https://processes.openeo.org/draft) | in development | >= 1.2.0 |
| [**2.0.0 RC2** / master](https://processes.openeo.org/2.0.0-rc.2/) | **upcoming version (RC)** | >= 1.2.0 |
| [2.0.0 RC1](https://processes.openeo.org/2.0.0-rc.1/) | previous RC | >= 1.2.0 |
| [1.2.0](https://processes.openeo.org/1.2.0/) | **latest stable version** | >= 1.0.0 & < 1.2.0 |
| [1.1.0](https://processes.openeo.org/1.1.0/) | legacy version | >= 1.0.0 & < 1.2.0 |
| [1.0.0](https://processes.openeo.org/1.0.0/) | legacy version | >= 1.0.0 & < 1.2.0 |
| [1.0.0 RC1](https://processes.openeo.org/1.0.0-rc.1/) | legacy version | > 0.4.2 & < 1.2.0 |
| [0.4.2](https://processes.openeo.org/0.4.2/) | legacy version | 0.4.x |
| [0.4.1](https://processes.openeo.org/0.4.1/) | legacy version | 0.4.x |
| [0.4.0](https://processes.openeo.org/0.4.0/) | legacy version | 0.4.x |

**Note:** [https://processes.openeo.org](https://processes.openeo.org) always points to the latest released version.

Expand All @@ -35,12 +36,12 @@ This repository contains a set of files formally describing the openEO Processes
* [implementation.md](meta/implementation.md) in the `meta` folder provide some additional implementation details for back-ends. For back-end implementors, it's highly recommended to read them.
* [subtype-schemas.json](meta/subtype-schemas.json) in the `meta` folder defines common data types (`subtype`s) for JSON Schema used in openEO processes.
* Previously, an `examples` folder contained examples of user-defined processes. These have been migrated to the [openEO Community Examples](https://github.com/Open-EO/openeo-community-examples/tree/main/processes) repository.
* The [`tests`](tests/) folder can be used to test the process specification for validity and consistent "style". It also allows rendering the processes in a web browser. Check the [tests documentation](tests/README.md) for details.
* The [`dev`](dev/) folder can be used to test the process specification for validity and consistent "style". It also allows rendering the processes in a web browser. Check the [development documentation](dev/README.md) for details.

## Process

* All new processes must be added to the [`proposals`](proposals/) folder.
* Processes will only be moved from proposals to the stable process specifications once there are at least two implementations and an example process in the [`openEO community examples`](https://github.com/Open-EO/openeo-community-examples/) showing it in a use case. This doesn't require a PSC vote individually as it's not a breaking change, just an addition.
* Processes will only be moved from proposals to the stable process specifications once there are at least two implementations and an example process in the [`openEO community examples`](https://github.com/Open-EO/openeo-community-examples/) showing it in a use case. Ideally, there are also no open issues. The move doesn't require a PSC vote individually as it's not a breaking change, just an addition.
* The [`proposals`](proposals/) folder allows breaking changes without a PSC vote and without increasing the major version number (i.e. a breaking change in the proposals doesn't require us to make the next version number 2.0.0).
* The proposals are released as experimental processes with the other processes.
* Each release and all breaking changes in the stable process specifications must go through PSC vote.
16 changes: 2 additions & 14 deletions absolute.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "absolute",
"summary": "Absolute value",
"description": "Computes the absolute value of a real number `x`, which is the \"unsigned\" portion of x and often denoted as *|x|*.\n\nThe no-data value `null` is passed through and therefore gets propagated.",
"description": "Computes the absolute value of a real number `x`, which is the \"unsigned\" portion of `x` and often denoted as *|x|*.\n\nNo-data values are passed through.",
"categories": [
"math"
],
Expand All @@ -28,12 +28,6 @@
}
},
"examples": [
{
"arguments": {
"x": 0
},
"returns": 0
},
{
"arguments": {
"x": 3.5
Expand All @@ -45,12 +39,6 @@
"x": -0.4
},
"returns": 0.4
},
{
"arguments": {
"x": -3.5
},
"returns": 3.5
}
],
"links": [
Expand Down Expand Up @@ -95,4 +83,4 @@
"result": true
}
}
}
}
4 changes: 2 additions & 2 deletions add.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "add",
"summary": "Addition of two numbers",
"description": "Sums up the two numbers `x` and `y` (*`x + y`*) and returns the computed sum.\n\nNo-data values are taken into account so that `null` is returned if any element is such a value.\n\nThe computations follow [IEEE Standard 754](https://ieeexplore.ieee.org/document/8766229) whenever the processing environment supports it.",
"description": "Sums up the two numbers `x` and `y` (*`x + y`*) and returns the computed sum.\n\nNo-data values are taken into account so that the no-data value is returned if any element is such a value.\n\nThe computations follow [IEEE Standard 754](https://ieeexplore.ieee.org/document/8766229) whenever the processing environment supports it.",
"categories": [
"math"
],
Expand Down Expand Up @@ -88,4 +88,4 @@
"result": true
}
}
}
}
2 changes: 1 addition & 1 deletion add_dimension.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
},
{
"name": "type",
"description": "The type of dimension, defaults to `other`.",
"description": "The type of dimension, defaults to `other`.\n\nIf the type is `spatial`, the axis is the first option that does not exist yet from `x`, `y`, and `z`. This refers to the axis of the dimension, not the name of the dimension. Throws a `DimensionExists` exception if dimensions for all axes exist.",
"schema": {
"type": "string",
"enum": [
Expand Down
Loading