All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.0.0-rc.1 - 2023-05-25
- New processes in proposal state:
date_between
date_difference
filter_vector
flatten_dimensions
load_geojson
load_url
unflatten_dimension
vector_buffer
vector_reproject
vector_to_random_points
vector_to_regular_points
add_dimension
: Added new dimension typegeometry
. #68
- Moved from proposals to stable processes:
array_append
array_concat
array_create
array_interpolate_linear
resample_cube_temporal
- Added better support for labeled arrays. Labels are not discarded in all cases anymore. Affected processes:
array_append
array_concat
array_modify
array_modify
: Change the default value forlength
from1
to0
. #312- Renamed
text_merge
totext_concat
for better alignment witharray_concat
and existing implementations. apply_neighborhood
:- Allow
null
as default value for units. - Input and Output for the
process
can either be data cubes or arrays (if one-dimensional). #387
- Allow
run_udf
: Allow all data types instead of just objects in thecontext
parameter. #376load_collection
andload_result
/load_stac
:- Require at least one band if not set to
null
. #372 - Added a
NoDataAvailable
exception
- Require at least one band if not set to
aggregate_temporal
,filter_temporal
,load_collection
andload_result
/load_stac
:inspect
: The parametermessage
has been moved to be the second argument. #369mask
andmerge_cubes
: The spatial dimensionsx
andy
can now be resampled implicitly instead of throwing an error. #402save_result
: Added a more concreteDataCubeEmpty
exception.- New definition for
aggregate_spatial
: - Renamed
create_raster_cube
tocreate_data_cube
. #68 - Updated the processes based on the subtypes
raster-cube
orvector-cube
to work with the subtypedatacube
instead. #68 sort
andorder
: The ordering of ties is not defined anymore. #409quantiles
: Parameterprobabilities
provided as array must be in ascending order. #297fit_curve
andpredict_curve
: Heavily modified specifications.fit_curve
works on arrays instead of data cubes,predict_curve
doesn't support gap filling anymore, clarify no-data handling, ... #425climatological_normal
: Theclimatology_period
parameter accepts an array of integers instead of strings. #331
aggregate_spatial
,filter_spatial
,load_collection
,mask_polygon
: GeoJSON input is deprecated in favor ofload_geojson
. #346
- The
examples
folder has been migrated to the openEO Community Examples repository. between
: Support for temporal comparison. Usedate_between
instead. #331- Deprecated
GeometryCollections
are not supported any longer. #389 - Deprecated PROJ definitions for the CRS are not supported any longer.
load_result
:- The comparison processes
eq
,neq
,lt
,lte
,gt
,gte
andarray_contains
:- Removed support for temporal comparison. Instead explicitly use
date_difference
. - Removed support for the input data types array and object. #208
- Removed support for temporal comparison. Instead explicitly use
sort
andorder
: Removed support for time-only values. #331
aggregate_spatial
:- Clarified that feature properties are preserved for vector data cubes and all GeoJSON Features. #270
- Clarified that a
TargetDimensionExists
exception is thrown if the target dimension exists.
apply
andarray_apply
: Fixed broken references to theabsolute
processapply_dimension
: Clarify the behavior for when a dimension gets 'dropped'. #357apply_neighborhood
:array_contains
andarray_find
: Clarify that givingnull
asvalue
always returnsfalse
ornull
respectively, also fixed the incorrect examples. #348array_interpolate_linear
: Return value was incorrectly specified asnumber
ornull
. It must return an array instead. #333is_nan
: Fixed a wrong description of the return value and simplified/clarified the process descriptions overall. #360is_nodata
: Clarified thatNaN
can be considered as a no-data value only if it is explicitly specified as no-data value. #361merge_cubes
: Clarified descriptions to better describe when a merge is possible. #379rename_labels
: Clarified that theLabelsNotEnumerated
exception is thrown ifsource
is empty instead of iftarget
is empty. #321round
: Clarify that the rounding for ties applies not only for integers. #326save_result
: Clarified that the process always returnstrue
(and otherwise throws). #334- Handling of empty geometries is clarified throughout the processes. #404
1.2.0 - 2021-12-13
- New processes in proposal state
apply_polygon
fit_curve
predict_curve
ard_normalized_radar_backscatter
andsar_backscatter
: Addedoptions
parameterarray_find
: Added parameterreverse
. #269load_result
:- Added ability to load by (signed) URL (supported since openEO API v1.1.0).
- Added parameters
spatial_extent
,temporal_extent
andbands
. #220
run_udf
: ExceptionInvalidRuntime
added. #273- A new category "math > statistics" has been added #277
array_labels
: Allow normal arrays to be passed for which the process returns the indices. #243debug
:- Renamed to
inspect
. - The log level
error
does not need to stop execution. - Added proposals for logging several data types to the implementation guide.
- Renamed to
quantiles
: The parameterprobabilities
also accepts an integer value to compute q-quantiles. #293
quantiles
: The parameterq
has been deprecated in favor of the extended parameterprobabilities
. #293
- Removed the explicit schema for
raster-cube
in thedata
parameters and return values ofrun_udf
andrun_udf_externally
. It's still possible to pass raster-cubes via the "any" data type, but it's discouraged due to scalability issues. #285
aggregate_temporal_period
: Clarified which dimension labels are present in the returned data cube. #274ard_surface_reflectance
: The process has been categorized as "optical" instead of "sar".array_modify
: Clarified behavior.save_result
: Clarify how the process works in the different contexts it is used in (e.g. synchronous processing, secondary web service). #288quantiles
:
1.1.0 - 2021-06-29
- New processes in proposal state
ard_normalized_radar_backscatter
ard_surface_relectance
array_append
array_concat
array_create
array_create_labeled
array_find_label
array_interpolate_linear
#173array_modify
atmospheric_correction
cloud_detection
date_shift
is_infinite
nan
reduce_spatial
- Added return value details (property
returns
) for the schemas with the subtypeprocess-graph
. API#350 apply_neighborhood
: Clarify behavior for data cubes returned by the child processes and for that add the exceptionDataCubePropertiesImmutable
.- Added a guide for implementors that describes numerours implementation details for processes that could not be covered in the specifications itself, for example a recommended implementation for the
if
process. #246
- Added
proposals
folder for experimental processes. Experimental processes are not covered by the CHANGELOG and MAY include breaking changes! #196, #207, PSC#8- Moved the experimental process
run_udf_externally
to the proposals. - Moved the rarely used and implemented processes
cummax
,cummin
,cumproduct
,cumsum
,debug
,filter_labels
,load_result
,load_uploaded_files
,resample_cube_temporal
to the proposals.
- Moved the experimental process
- Exception messages have been aligned always use ` instead of '. Tooling could render it with CommonMark.
load_collection
andmask_polygon
: Also support multi polygons instead of just polygons. #237run_udf
andrun_udf_externally
: Specify specific (extensible) protocols for UDF URIs.resample_cube_spatial
andresample_spatial
: Aligned with GDAL and addedrms
andsum
options to methods. Also added better descriptions.resample_cube_temporal
: Process has been simplified and only offers the nearest neighbor method now. Theprocess
parameter has been removed, thedimension
parameter was made less restrictive, the parametervalid_within
was added. #194
GeometryCollection
s are discouraged in all relevant processes.
- Removed the experimental processes
aggregate_spatial_binary
andreduce_dimension_binary
. #258
- Clarify that the user workspace is server-side. #225
- Clarify that the
condition
parameter forarray_filter
works also on indices and labels. - Clarify contradicting statements in
filter_temporal
for the default value of thedimension
parameter. By default all temporal dimensions are affected by the process. #203 - Clarify how the parameters passed to the overlap resolver correspond to the data cubes. #184
- Improve and clarify specifications for
is_nan
,is_nodata
,is_valid
. #189 - Improve and clarify specifications for
all
andany
. #189 array_element
: Clarify thatArrayNotLabeled
exception is thrown when parameterlabel
is specified and the given array is not labeled.array_apply
,array_element
,array_filter
: Added theminimum: 0
constraint to all schemas describing zero-based indices (parameterindex
).array_labels
: Clarified the accepted data type for array elements passed to the parameterdata
.merge_cubes
: Clarified the dimension label order after the merge. #212merge_cubes
: Clarified the fourth example. #266- Fixed typos, grammar issues and other spelling-related issues in many of the processes.
- Fixed the examples
array_contains_nodata
andarray_find_nodata
. - Fixed links to openEO glossary and added links to data cube introduction. #216
- Fixed description of
apply_dimension
with regards to reference systems. Made description easier to understand, too. #234 - Clarified disallowed characters in subtype
file-path
. - Clarified that UDF source code must contain a newline/line-break (affects
run_udf
). aggregate_spatial
,aggregate_spatial_binary
: Clarified that Features, Geometries and GeometryCollections are a single entity in computations. Only FeatureCollections are multiple entities. #252aggregate_spatial
: Clarified that the values have no predefined order and reducers such asfirst
andlast
return unpredictable results. #260load_collection
, parameterspatial_extent
: Clarified that all pixels that are inside the bounding box of the given polygons but do not intersect with any polygon have to be set to no-data (null
). #256load_collection
: Clarified that the parameters are recommended to be used in favor offilter_*
processes.aggregate_temporal
andaggregate_temporal_period
: Clarified that reducers are also executed for intervals/periods with no data. #263dimension_labels
: Clarified that the process fails with aDimensionNotAvailable
exception, if a dimension with the specified name does not exist.
1.0.0 - 2020-07-31
subtype-schemas.json
: A list of predefined subtypes is available as JSON Schema; Moved over from openeo-api.- Processes:
aggregate_temporal_period
anomaly
apply_neighborhood
climatological_normal
constant
- Process graphs added to:
mean
median
apply_kernel
: Added parametersborder
andreplace_invalid
#170- Folder with examples (
examples/
). #136
any
andall
: Renamed parametervalues
todata
. #147load_collection
: Parameterproperties
has subtypemetadata-filter
.- Examples adapted to latest API version for
aggregate_temporal
,array_contains
,array_find
,filter_labels
,load_collection
andrename_labels
. #136, API#285 - Some processes were assigned to different categories.
- Process graph examples from
arccos
,arcsin
,arctan
,arsinh
,artanh
,e
,ln
andpi
. API#285
apply_kernel
:load_collection
: Removed outdatedrequire
property fromvalue
callback parameter in process parameterproperties
.filter_bbox
,load_collection
,resample_spatial
: Fixed invalid EPSG code examples.aggregate_temporal
: Fixed outdated message for exceptionTooManyDimensions
.clip
: Fixed examples.linear_scale_range
: Clarify that the process implicitly clips the values. #159mean
: Clarify behavior for arrays withnull
-values only.mod
: Clarified behavior. #168resample_*
: Clarified behavior.first
,last
,max
,mean
,median
,min
,sd
,variance
: Clarify behavior for arrays withnull
-values only.- Clarified (and fixed if necessary) for all processes in the "cubes" category the descriptions for the returned data cube. #149
1.0.0-rc.1 - 2020-01-31
- Processes:
add
aggregate_spatial
aggregate_spatial_binary
all
any
array_apply
array_contains
array_filter
array_find
array_labels
dimension_labels
drop_dimension
filter_labels
filter_spatial
load_uploaded_files
mask_polygon
reduce_dimension
reduce_dimension_binary
rename_labels
- Support for labeled arrays. API#245
- Process graphs for processes that can be implemented using other pre-defined processes. #137
context
parameters to all processes which support passing process graphs (callbacks) as parameters. #25- Added further examples.
- The JSON Schema keyword
format
has been replaced with the custom keywordsubtype
. - Schema format/subtype
callback
has been renamed toprocess-graph
. - Default values are now specified on the parameter-level, not in the JSON schemas.
- Parameters are now required by default.
- Parameters are defined as array.
parameter_order
is therefore removed and the name is part of the parameter object. API#239 - Callback parameters have a new, more advanced schema, allowing to define more aspects of the callback parameters. API#239
- Processes supporting multiple data types in parameters or return values with
anyOf
are now listing the data types directly as array.anyOf
is discouraged. - Comparison processes
eq
,gt
,gte
,lt
,lte
,neq
andbetween
accept all data types as input for the operands. add_dimension
: Parametervalue
renamed tolabel
.aggregate_polygon
,aggregate_temporal
,apply_dimension
,array_element
andresample_cube_temporal
: Support labeled arrays. API#245aggregate_polygon
: The data cube implicitly gets restricted to the bounds of the polygons as iffilter_polygon
would have been used beforehand. #101aggregate_temporal
: Parameterlabels
is optional. #19apply_dimension
: Replaced with a completely new definition. #73apply_kernel
: Only supported 2D kernels on the horizontal spatial dimensions. #69clip
: Works on a single value instead on arrays (replaced parameterdata
withx
). #75count
: Renamed parameterexpression
tocondition
.debug
: Replaced with a completely new definition. #82, API#100, API#214filter_bands
: Merged parametersbands
andcommon_names
. #77if
:- Doesn't pass through
null
, but insteadnull
leads to rejecting the condition. - Parameter
expression
renamed tovalue
. - Parameter
accept
is required. - Parameter
reject
defaults tonull
.
- Doesn't pass through
load_collection
:- Parameter
bands
accepts common band names. #77 - Parameter
properties
: Callback parametervalue
renamed tox
.
- Parameter
mask
: Clarifies behavior for missing dimensions in the mask. #55merge_cubes
works with binary reduction operators instead of list-based reducers. #94ndvi
andnormalized_difference
: Rewrite of the processes with a completely new behavior. #60not
: Parameterexpression
renamed tox
.resample_spatial
: Default value of parameteralign
changed fromlower-left
toupper-left
. #61- The following operations work on two values instead on a sequence of values:
and
,divide
,multiply
,or
,subtract
,xor
. #85 product
works as before, but is not an alias ofmultiply
any longer. #85text_begins
,text_contains
,text_ends
:null
values are supported and get passed through.trim
: Renamed totrim_cube
.
filter_bbox
,load_collection
,resample_spatial
: PROJ definitions are deprecated in favor of EPSG codes and WKT2. #58
- The following processes don't support
ignore_nodata
any longer:and
,divide
,multiply
,or
,subtract
,xor
. #85 - The following processes don't support
binary
any longer:aggregate_temporal
,merge_cubes
,resample_cube_temporal
. #94 - Support for vector data cubes, except for the processes
aggregate_poylgon
andsave_result
. #68 filter_temporal
andload_collection
: Temporal extents don't support time-only intervals any longer. #88mask
: The mask parameter doesn't accept vectors (polygons) any longer. Use processmask_polygon
instead. #110- Processes:
aggregate_polygon
. Useaggregate_spatial
oraggregate_spatial_binary
instead. #62find_collections
: Useload_collection
and manual data discovery through the clients. API#52filter
: Usefilter_labels
instead.filter_polygon
. Usefilter_spatial
instead. #37output
: Usedebug
instead.property
#84reduce
: Usereduce_dimension
ordrop_dimension
instead.run_process_graph
: Use user-defined processes directly in the process graph instead.
- Several clarifications in written texts. #86
between
may return anull
value.filter_bbox
,load_collection
: The schema for the propertycrs
in the parametersextent
/spatial_extent
contained invalid JSON Schema.merge_cubes
: Clarified merging behavior with several examples.
0.4.2 - 2019-06-11
- Added examples.
- Fixed outdated process examples.
0.4.1 - 2019-05-29
- Added
band-name
format toload_collection
andfilter_bands
properties.
product
: Added exceptions and examples- Clarified error handling related to dimension parameters.
0.4.0 - 2019-03-07
First version which is separated from the openEO API. Complete rework of all processes.
Older versions of the processes were released as part of the openEO API, see the corresponding changelog for more information.