Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
7b558ac
clean-up
m-mohr May 25, 2023
7a29378
aggregate_spatial_window typo fix (#446)
soxofaan Jul 31, 2023
0833d4e
Issue #460 doc crossreferences between filter_bbox/filter_spatial/fil…
soxofaan Sep 30, 2023
c130dd7
Move tests to dev
m-mohr Oct 12, 2023
836a84b
Merge remote-tracking branch 'origin/draft' into draft
m-mohr Oct 12, 2023
c2d77e2
Use x \ y instead of a \ b
m-mohr Oct 25, 2023
13c3f85
`sqrt`: Clarified that NaN is returned for negative numbers #474 (#475)
m-mohr Oct 27, 2023
4fd92b2
`clip`: Throw an exception if min > max #472 (#477)
m-mohr Oct 27, 2023
ab4a62e
`array_append`: Added `number` type for labels to be consistent with …
m-mohr Oct 27, 2023
f303adf
`filter_spatial`: Clarify masking (#470)
m-mohr Oct 27, 2023
d8cf96a
`between`: Clarify that `null` is passed through
m-mohr Oct 30, 2023
899b824
`eq` and `neq`: Explicitly set the minimum value for the `delta` para…
m-mohr Oct 30, 2023
ab2e6c2
Clarify linear_scale_range
m-mohr Oct 31, 2023
ad8a2f3
Math functions: Clarified value ranges and NaN (#476)
m-mohr Dec 8, 2023
4274215
Added uniqueness contraints and clarified DimensionNotAvailable excep…
m-mohr Dec 22, 2023
d5d0a18
Remove unused exception from aggregate_temporal_period, clarified wee…
m-mohr Dec 22, 2023
47b45d4
Renamed `create_data_cube` to `create_cube`. #68
m-mohr Jan 23, 2024
9363471
Update docgen
m-mohr Jul 26, 2024
469e06f
Update CI
m-mohr Jul 26, 2024
a2e3780
`apply_polygon`: rename `polygons` parameter to `geometries` (#511) (…
soxofaan Jul 26, 2024
9532cb1
Fix formatting
m-mohr Aug 23, 2024
3744511
STAC, Collection and Workspace handling in openEO (#485)
m-mohr Oct 21, 2024
0390558
Fix cum* process descriptions and make ignore_nodata descriptions ali…
m-mohr Nov 21, 2024
0100f9a
apply_polygon: datacube instead of raster-cube #524 (#525)
m-mohr Dec 4, 2024
4422c60
Simplify some enum types (#529)
soxofaan Feb 5, 2025
fd26251
Guidelines and processes to run OGC API - Processes / CWL / EOAP (#520)
m-mohr Mar 30, 2025
52fa980
Fix broken epsg href (#539)
manugv May 27, 2025
4448756
added combine_cubes proposal
VictorVerhaert Jun 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
40 changes: 40 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,48 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## Unreleased / Draft

### Added

- New processes in proposal state:
- `combine_cubes`

- Implementation guide for implementing OGC API - Processes in openEO
- `export_collection`
- `export_workspace`
- `run_ogcapi`
- `run_ogcapi_externally`
- `stac_modify`

### Changed

- `clip`: Throw an exception if min > max [#472](https://github.com/Open-EO/openeo-processes/issues/472)
- `save_results`: Returns the STAC resource instead of boolean `true` [API#376](https://github.com/Open-EO/openeo-api/issues/376)
- Added a uniqueness contraint to various array-typed parameters (e.g. lists of dimension names or labels)
- Renamed `create_data_cube` to `create_cube`. [#68](https://github.com/Open-EO/openeo-processes/issues/68)
- `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)

### 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.
- `apply_polygon`: Replaced outdated usage of `raster-cube` subtype with `datacube` and dimensions. [#524](https://github.com/Open-EO/openeo-processes/issues/524)
- `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
- `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)
- `mod`: Clarified behavior for y = 0
- `sqrt`: Clarified that NaN is returned for negative numbers.

## [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
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ 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

Expand Down
4 changes: 2 additions & 2 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\nThe no-data value `null` is passed through and therefore gets propagated.",
"categories": [
"math"
],
Expand Down Expand Up @@ -95,4 +95,4 @@
"result": true
}
}
}
}
5 changes: 3 additions & 2 deletions aggregate_temporal.json
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@
"description": "Distinct labels for the intervals, which can contain dates and/or times. Is only required to be specified if the values for the start of the temporal intervals are not distinct and thus the default labels would not be unique. The number of labels and the number of groups need to be equal.",
"schema": {
"type": "array",
"uniqueItems": true,
"items": {
"type": [
"number",
Expand All @@ -140,7 +141,7 @@
},
{
"name": "dimension",
"description": "The name of the temporal dimension for aggregation. All data along the dimension is passed through the specified reducer. If the dimension is not set or set to `null`, the data cube is expected to only have one temporal dimension. Fails with a `TooManyDimensions` exception if it has more dimensions. Fails with a `DimensionNotAvailable` exception if the specified dimension does not exist.",
"description": "The name of the temporal dimension for aggregation. All data along the dimension is passed through the specified reducer. If the dimension is not set or set to `null`, the data cube is expected to only have one temporal dimension. Fails with a `TooManyDimensions` exception if it has more dimensions. Fails with a `DimensionNotAvailable` exception if the specified dimension does not exist or no temporal dimension is available.",
"schema": {
"type": [
"string",
Expand Down Expand Up @@ -228,7 +229,7 @@
"message": "The data cube contains multiple temporal dimensions. The parameter `dimension` must be specified."
},
"DimensionNotAvailable": {
"message": "A dimension with the specified name does not exist."
"message": "A dimension with the specified name does not exist or no temporal dimension is available."
},
"DistinctDimensionLabelsRequired": {
"message": "The dimension labels have duplicate values. Distinct labels must be specified."
Expand Down
9 changes: 3 additions & 6 deletions aggregate_temporal_period.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
},
{
"name": "period",
"description": "The time intervals to aggregate. The following pre-defined values are available:\n\n* `hour`: Hour of the day\n* `day`: Day of the year\n* `week`: Week of the year\n* `dekad`: Ten day periods, counted per year with three periods per month (day 1 - 10, 11 - 20 and 21 - end of month). The third dekad of the month can range from 8 to 11 days. For example, the third dekad of a year spans from January 21 till January 31 (11 days), the fourth dekad spans from February 1 till February 10 (10 days) and the sixth dekad spans from February 21 till February 28 or February 29 in a leap year (8 or 9 days respectively).\n* `month`: Month of the year\n* `season`: Three month periods of the calendar seasons (December - February, March - May, June - August, September - November).\n* `tropical-season`: Six month periods of the tropical seasons (November - April, May - October).\n* `year`: Proleptic years\n* `decade`: Ten year periods ([0-to-9 decade](https://en.wikipedia.org/wiki/Decade#0-to-9_decade)), from a year ending in a 0 to the next year ending in a 9.\n* `decade-ad`: Ten year periods ([1-to-0 decade](https://en.wikipedia.org/wiki/Decade#1-to-0_decade)) better aligned with the anno Domini (AD) calendar era, from a year ending in a 1 to the next year ending in a 0.",
"description": "The time intervals to aggregate. The following pre-defined values are available:\n\n* `hour`: Hour of the day\n* `day`: Day of the year\n* `week`: Week of the year as defined in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Week_dates)\n* `dekad`: Ten day periods, counted per year with three periods per month (day 1 - 10, 11 - 20 and 21 - end of month). The third dekad of the month can range from 8 to 11 days. For example, the third dekad of a year spans from January 21 till January 31 (11 days), the fourth dekad spans from February 1 till February 10 (10 days) and the sixth dekad spans from February 21 till February 28 or February 29 in a leap year (8 or 9 days respectively).\n* `month`: Month of the year\n* `season`: Three month periods of the calendar seasons (December - February, March - May, June - August, September - November).\n* `tropical-season`: Six month periods of the tropical seasons (November - April, May - October).\n* `year`: Proleptic years\n* `decade`: Ten year periods ([0-to-9 decade](https://en.wikipedia.org/wiki/Decade#0-to-9_decade)), from a year ending in a 0 to the next year ending in a 9.\n* `decade-ad`: Ten year periods ([1-to-0 decade](https://en.wikipedia.org/wiki/Decade#1-to-0_decade)) better aligned with the anno Domini (AD) calendar era, from a year ending in a 1 to the next year ending in a 0.",
"schema": {
"type": "string",
"enum": [
Expand Down Expand Up @@ -78,7 +78,7 @@
},
{
"name": "dimension",
"description": "The name of the temporal dimension for aggregation. All data along the dimension is passed through the specified reducer. If the dimension is not set or set to `null`, the source data cube is expected to only have one temporal dimension. Fails with a `TooManyDimensions` exception if it has more dimensions. Fails with a `DimensionNotAvailable` exception if the specified dimension does not exist.",
"description": "The name of the temporal dimension for aggregation. All data along the dimension is passed through the specified reducer. If the dimension is not set or set to `null`, the source data cube is expected to only have one temporal dimension. Fails with a `TooManyDimensions` exception if it has more dimensions. Fails with a `DimensionNotAvailable` exception if the specified dimension does not exist or no temporal dimension is available.",
"schema": {
"type": [
"string",
Expand Down Expand Up @@ -115,10 +115,7 @@
"message": "The data cube contains multiple temporal dimensions. The parameter `dimension` must be specified."
},
"DimensionNotAvailable": {
"message": "A dimension with the specified name does not exist."
},
"DistinctDimensionLabelsRequired": {
"message": "The dimension labels have duplicate values. Distinct labels must be specified."
"message": "A dimension with the specified name does not exist or no temporal dimension is available."
}
},
"links": [
Expand Down
4 changes: 2 additions & 2 deletions and.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "and",
"summary": "Logical AND",
"description": "Checks if **both** values are true.\n\nEvaluates parameter `x` before `y` and stops once the outcome is unambiguous. If any argument is `null`, the result will be `null` if the outcome is ambiguous.\n\n**Truth table:**\n\n```\na \\ b || null | false | true\n----- || ----- | ----- | -----\nnull || null | false | null\nfalse || false | false | false\ntrue || null | false | true\n```",
"description": "Checks if **both** values are true.\n\nEvaluates parameter `x` before `y` and stops once the outcome is unambiguous. If any argument is `null`, the result will be `null` if the outcome is ambiguous.\n\n**Truth table:**\n\n```\nx \\ y || null | false | true\n----- || ----- | ----- | -----\nnull || null | false | null\nfalse || false | false | false\ntrue || null | false | true\n```",
"categories": [
"logic"
],
Expand Down Expand Up @@ -90,4 +90,4 @@
"result": true
}
}
}
}
15 changes: 9 additions & 6 deletions arccos.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
{
"id": "arccos",
"summary": "Inverse cosine",
"description": "Computes the arc cosine of `x`. The arc cosine is the inverse function of the cosine so that *`arccos(cos(x)) = x`*.\n\nWorks on radians only.\nThe no-data value `null` is passed through and therefore gets propagated.",
"description": "Computes the arc cosine of `x`. The arc cosine is the inverse function of the cosine so that *`arccos(cos(x)) = x`*.\n\nWorks on radians only.\nThe no-data value `null` is passed through and therefore gets propagated. `NaN` is returned for values outside of the allowed range.",
"categories": [
"math > trigonometric"
],
"parameters": [
{
"name": "x",
"description": "A number.",
"description": "A number in the range *[-1, 1]*.",
"schema": {
"type": [
"number",
"null"
]
],
"minimum": -1,
"maximum": 1
}
}
],
"returns": {
"description": "The computed angle in radians.",
"description": "The computed angle in radians in the range *[0, π]*.",
"schema": {
"type": [
"number",
"null"
]
],
"minimum": 0
}
},
"examples": [
Expand All @@ -41,4 +44,4 @@
"title": "Inverse cosine explained by Wolfram MathWorld"
}
]
}
}
14 changes: 8 additions & 6 deletions arcosh.json
Original file line number Diff line number Diff line change
@@ -1,29 +1,31 @@
{
"id": "arcosh",
"summary": "Inverse hyperbolic cosine",
"description": "Computes the inverse hyperbolic cosine of `x`. It is the inverse function of the hyperbolic cosine so that *`arcosh(cosh(x)) = x`*.\n\nWorks on radians only.\nThe no-data value `null` is passed through and therefore gets propagated.",
"description": "Computes the inverse hyperbolic cosine of `x`. It is the inverse function of the hyperbolic cosine so that *`arcosh(cosh(x)) = x`*.\n\nThe no-data value `null` is passed through and therefore gets propagated. `NaN` is returned for values outside of the allowed range.",
"categories": [
"math > trigonometric"
],
"parameters": [
{
"name": "x",
"description": "A number.",
"description": "A number in the range *[1, +∞)*.",
"schema": {
"type": [
"number",
"null"
]
}
},
"minimum": 1
}
],
"returns": {
"description": "The computed angle in radians.",
"description": "The computed hyperbolic angle in radians in the range *[0, +∞)*.",
"schema": {
"type": [
"number",
"null"
]
],
"minimum": 0
}
},
"examples": [
Expand All @@ -41,4 +43,4 @@
"title": "Inverse hyperbolic cosine explained by Wolfram MathWorld"
}
]
}
}
12 changes: 7 additions & 5 deletions arcsin.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
{
"id": "arcsin",
"summary": "Inverse sine",
"description": "Computes the arc sine of `x`. The arc sine is the inverse function of the sine so that *`arcsin(sin(x)) = x`*.\n\nWorks on radians only.\nThe no-data value `null` is passed through and therefore gets propagated.",
"description": "Computes the arc sine of `x`. The arc sine is the inverse function of the sine so that *`arcsin(sin(x)) = x`*.\n\nWorks on radians only.\nThe no-data value `null` is passed through and therefore gets propagated. `NaN` is returned for values < -1 and > 1.",
"categories": [
"math > trigonometric"
],
"parameters": [
{
"name": "x",
"description": "A number.",
"description": "A number in the range *[-1, 1]*.",
"schema": {
"type": [
"number",
"null"
]
],
"minimum": -1,
"maximum": 1
}
}
],
"returns": {
"description": "The computed angle in radians.",
"description": "The computed angle in radians in the range *[-π/2, π/2]*.",
"schema": {
"type": [
"number",
Expand All @@ -41,4 +43,4 @@
"title": "Inverse sine explained by Wolfram MathWorld"
}
]
}
}
4 changes: 2 additions & 2 deletions arctan.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
}
],
"returns": {
"description": "The computed angle in radians.",
"description": "The computed angle in radians in the range *(−π/2, π/2)*.",
"schema": {
"type": [
"number",
Expand All @@ -41,4 +41,4 @@
"title": "Inverse tangent explained by Wolfram MathWorld"
}
]
}
}
Loading