Releases: xcube-dev/xcube
1.7.1
Changes in 1.7.1
Enhancements
- Level creation now supports aggregation method
mode
to aggregate to the value which is most frequent. (#913)
Fixes
- The
time
query parameter of the/statistics
endpoint of xcube server has now been made optional. (#1066) - The
/statistics
endpoint now supports datasets using non-WGS84 grid systems, expanding its compatibility with a wider range of geospatial datasets. (#1069) - Bug fix in
resampling_in_space
when projecting from geographic to non-geographic projection. (#1073) - Bug fix of the
extent
field in the single item collection published by the xcube server STAC API so that it follows the collection STAC specifications. (#1077)
New Contributors
Full Changelog: v1.7.0...v1.7.1
1.7.1.dev0
What's Changed
- Adjustments to
resample_in_time()
so that xcube now supportsxarray=2024.7
by @konstntokas in #1068
Full Changelog: v1.7.0...v1.7.1.dev0
1.7.0
Changes in 1.7.0
Full Changelog: v1.6.0...v1.7.0
Enhancements
-
Bundled xcube-viewer 1.3.0.
-
xcube server can now deal with "user-defined" variables. Endpoints
that accept a{varName}
path parameter in their URL path can now be
called with assignment expressions of the form<var_name>=<var_expr>
where<var_name>
is the name user defined variable and<var_expr>
is an arbitrary band-math expression,
see xcube-dev/xcube-viewer#371. -
xcube server now allows for configuring new dataset properties
GroupTitle
andTags
. This feature has been added in order to support
grouping and filtering of datasets in UIs,
see xcube-dev/xcube-viewer#385. -
Added server endpoint
GET /statistics/{varName}
with query parameters
lon
,lat
,time
which is used to extract single point data.
This feature has been added in order to support
xcube-dev/xcube-viewer#404. -
The xcube server STAC API now publishes all fields available via the
/datasets
endpoint. This includes colormap information for each asset such as
colorBarName, colorBarNorm, colorBarMin, colorBarMax, tileLevelMin, tileLevelMax.
(#935, #940) -
xcube server now allows for configuring custom color maps via the configuration file.
It supports continuous, stepwise and categorical colormaps, which may be
configured as shown in the section CustomColorMaps of the xcube serve documentation
(#1055)
Fixes
- Migrated the
.github/workflows/xcube_build_docker.yaml
and the corresponding
Dockerfile
fromsetup.py
topyproject.toml
. Additionally, updated the relevant
documentation indoc/source
to reflect this change fromsetup.py
to
pyproject.toml.
(related to #992) - Normalisation with
xcube.core.normalize.normalize_dataset
fails when chunk encoding
must be updated (#1033) - The
open_data
method of xcube's defaultxcube.core.store.DataStore
implementations
now supports a keyword argumentdata_type
, which determines the
data type of the return value. Note thatopener_id
includes thedata_type
at its first position and will override thedata_type
argument.
To preserve backward compatibility, the keyword argumentdata_type
has not yet been literally specified asopen_data()
method argument,
but may be passed as part of**open_params
. (#1030) - The
xcube.core.store.DataDescriptor
class now supports specifying time ranges
using bothdatetime.date
anddatetime.datetime
objects. Previously,
onlydatetime.date
objects were supported. - The xcube server STAC API has been adjusted so that the data store
parameters and data ID, which are needed to open the data referred to by a STAC item,
are now included with the item'sanalytic
asset.
Furthermore, a second assert calledanalytic_multires
will be published
referring to the multi-resolution data format levels (#1020). - Improved the way color mapping works in xcube server to support simplified
color bar management in xcube viewer,
see xcube-dev/xcube-viewer#390. (#1043) - The xcube server's dataset configuration extraction methodology has been updated.
When the data resource ID is provided in the Path field, xcube will attempt to
access the dataset using the given ID. If wildcard patterns are used, the server
will crawl through the data store to find matching data IDs. This process may
result in a long setup time if the data store contains numerous data IDs.
A UserWarning will be issued for the "stac" data store. - Corrected extent object of a STAC collection issued by xcube server, following the
collection STAC specifications
(#1053) - When opening a GeoTIFF file using a file system data store, the default return value
is changed fromMultiLevelDataset
toxr.Dataset
, if nodata_type
is assigned
in theopen_params
of thestore.open_data()
method. (#1054)
xcube server has been adapted to always openMultiLevelDataset
s from
a specified data store, if that data type is supported.
Other changes
- Renamed internal color mapping types from
"node"
,"bound"
,"key"
into"continuous"
,"stepwise"
,"categorical"
.
1.7.0.dev4
What's Changed
- Bug fix of xcube server config colormaps schema by @konstntokas in #1063
- bundled xcube viewer 1.3.0 by @TejasMorbagal in #1064
Full Changelog: v1.7.0.dev3...v1.7.0.dev4
1.7.0.dev3
What's Changed
- configuring custom color maps via the configuration file by @konstntokas in #1055 #1057 #1059
Full Changelog: v1.7.0.dev2...v1.7.0.dev3
1.7.0.dev2
What's Changed
Full Changelog: v1.7.0.dev1...v1.7.0.dev2
1.7.0.dev1
What's Changed
- Bundled xcube-viewer 1.3.0-dev.1
- Updated xcube server's dataset configuration extraction methodology by @konstntokas in #1048
- Renamed internal color mapping types by @forman in #1049
- A few fixes/updates to AppVeyor/micromamba config by @pont-us in #1051
- Further fields added to the STAC API by @konstntokas in #1047
- Support xcube viewer's pixel info box by @forman in #1052
- Correct the extent object of a STAC collection issued by xcube server by @konstntokas in #1053
- Default return value of open geotiffs from mldataset to dataset by @konstntokas in #1054
Full Changelog: v1.7.0.dev0...v1.7.0.dev1
1.7.0.dev0
What's Changed
- Migrate docker image build from
setup.py
topyproject.toml
by @konstntokas in #1026 - Add ServerTestCase docstring by @pont-us in #1028
- User-defined variables by @forman in #1021
- User-defined variables, part 2 by @forman in #1032
- Normalisation fails when chunk encoding must be updated (#1033) by @TonioF in #1034
- Enhance expression capabilities by @forman in #1035
- Add
data_type
toopen_data
method inDataStore
class by @konstntokas in #1037 - The
xcube.core.store.DataDescriptor
class now supports specifying time ranges using bothdatetime.date
anddatetime.datetime
objects by @konstntokas in #1036 - Add data store parameters and data ID to the assets in the STAC published by xcube server by @konstntokas in #1029
- Cleanup in module
xcube.core.varexpr
by @forman in #1040 - Allow for grouping datasets by @forman in #1039
- The xcube server STAC API now publishes all fields available via the
/datasets
endpoint. by @konstntokas in #1045 - Revise new color bar features by @forman in #1044
Full Changelog: v1.6.0...v1.7.0.dev0
1.6.0
New Contributors
Changes in 1.6.0
Full Changelog: v1.5.1...v1.6.0
Enhancements
-
Includes new xcube Viewer 1.2
-
Added new statistics API to xcube server. The service computes basic
statistical values and a histogram for given data variable, time stamp,
and a GeoJSON geometry. Its endpoint is:
/statistics/{datasetId}/{varName}?time={time}
. Geometry is passed as
request body in form of a GeoJSON geometry object. -
xcube server's tile API can now handle user-defined colormaps from xcube
viewer. Custom color bars are still passed using query parametercmap
to
endpoint/tiles/{datasetId}/{varName}/{z}/{y}/{x}
,
but in the case of custom color bars it is a JSON-encoded object with the
following format:{"name": <str>, "type": <str>, "colors": <list>}
. (#975)
The object properties arename
: a unique name.type
: optional type of control values.colors
: a list of pairs[[<v1>,<c1>], [<v2>,<c2>], [<v3>,<c3>], ...]
that map a control value to a hexadecimal color value using CSS format
"#RRGGBBAA"
.
The
type
values are"node"
: control points are nodes of a continuous color gradient."bound"
: control points form bounds that map to a color, which means
the last color is unused."key"
: control points are keys (integers) that identify a color.
-
xcube server's tile API now allows specifying the data normalisation step
before a color mapping is applied to the variable data to be visualized.
This affects endpoint/tiles/{datasetId}/{varName}/{z}/{y}/{x}
and the WMTS
API. The possible normalisation values arelin
: linear mapping of data values betweenvmin
andvmax
to range 0 to 1
(usesmatplotlib.colors.Normalize(vmin, vmax)
).log
: logarithmic mapping of data values betweenvmin
andvmax
to range 0 to 1
(usesmatplotlib.colors.LogNorm(vmin, vmax)
).cat
: categorical mapping of data values to indices into the color mapping.
(usesmatplotlib.colors.BoundaryNorm(categories)
). This normalisation
currently only works with user-defined colormaps of type
key
orbound
(see above).
The normalisation can be specified in three different ways (in order):
- As query parameter
norm
passed to the tile endpoint. - Property
Norm
in theStyles/ColorMapping
element in xcube server configuration. - Data variable attribute
color_norm
.
-
xcube server can now read SNAP color palette definition files (
*.cpd
) with
alpha values. (#932) -
The class
xcube.webapi.viewer.Viewer
now accepts root paths or URLs that
will each be scanned for datasets. The roots are passed as keyword argument
roots
whose value is a path or URL or an iterable of paths or URLs.
A new keyword argumentmax_depth
defines the maximum subdirectory depths
used to search for datasets in caseroots
is given. It defaults to1
. -
The behaviour of function
resample_in_space()
of module
xcube.core.resampling
changed in this version. (#1001)- A new keyword argument
ref_ds
can now be used to provide
a reference dataset for the reprojection. It can be passed instead
oftarget_rm
. Ifref_ds
is given, it also forces the returned target
dataset to have the same spatial coordinates asref_ds
. - In the case of up-sampling, we no longer recover
NaN
values by default
as it may require considerable CPU overhead.
To enforce the old behaviour, provide thevar_configs
keyword-argument
and setrecover_nan
toTrue
for desired variables.
- A new keyword argument
-
The class
MaskSet()
of modulexcube.core.maskset
now correctly recognises
the variable attributesflag_values
,flag_masks
,flag_meanings
when
their values are lists (ESA CCI LC data encodes them as JSON arrays). (#1002) -
The class
MaskSet()
now provides a methodget_cmap()
which creates
a suitable matplotlib color map for variables that define the
flag_values
CF-attribute and optionally aflag_colors
attribute. (#1011) -
The
Api.route
decorator andApiRoute
constructor in
xcube.server.api
now have aslash
argument which lets a route support an
optional trailing slash.
Fixes
-
When using the
xcube.webapi.viewer.Viewer
class in Jupyter notebooks
multi-level datasets opened from S3 or from deeper subdirectories into
the local filesystem are now fully supported. (#1007) -
Fixed an issue with xcube server
/timeseries
endpoint that returned
status 500 if a given dataset used a CRS other geographic and the
geometry was not a point. (#995) -
Fixed broken table of contents links in dataset convention document.
-
Web API endpoints with an optional trailing slash are no longer listed
twice in the automatically generated OpenAPI documentation (#965) -
Several minor updates to make xcube compatible with NumPy 2.0.0 (#1024)
Incompatible API changes
-
The
get_cmap()
method ofutil.cmaps.ColormapProvider
now returns a
Tuple[matplotlib.colors.Colormap, Colormap]
instead of
Tuple[str, matplotlib.colors.Colormap]
. -
The signatures of functions
resample_in_space()
,rectify_dataset()
, and
affine_transform_dataset()
of modulexcube.core.resampling
changed:- Source dataset must be provided as 1st positional argument.
- Introduced keyword argument
ref_ds
that can be provided instead of
target_gm
. If given, it forces the returned dataset to have the same
coordinates asref_ds
.
-
Removed API deprecated since many releases:
- Removed keyword argument
base
from function
xcube.core.resampling.temporal.resample_in_time()
. - Removed option
base
from CLI commandxcube resample
. - Removed keyword argument
assert_cube
from
xcube.core.timeseries.get_time_series()
. - Removed property
xcube.core.xarray.DatasetAccessor.levels
. - Removed function
xcube.core.tile.parse_non_spatial_labels()
. - Removed keyword argument
tag
from context manager
xcube.util.perf.measure_time()
. - Removed function
xcube.core.geom.convert_geometry()
. - Removed function
xcube.core.geom.is_dataset_y_axis_inverted()
. - Removed function
xcube.util.assertions.assert_condition()
. - Removed function
xcube.util.cmaps.get_cmaps()
. - Removed function
xcube.util.cmaps.get_cmap()
. - Removed function
xcube.util.cmaps.ensure_cmaps_loaded()
. - Removed endpoint
/datasets/{datasetId}/vars/{varName}/tiles2/{z}/{y}/{x}
from xcube server.
- Removed keyword argument
Other changes
-
Make tests compatible with PyTest 8.2.0. (#973)
-
Addressed all warnings from xarray indicating that
Dataset.dims
will
be replaced byDataset.sizes
. (#981) -
NUMBA_DISABLE_JIT set to
0
to enablenumba.jit
in github workflow. (#946) -
Added GitHub workflow to perform an automatic xcube release on PyPI after a GitHub
release. To install xcube via thepip
tool usepip install xcube-core
,
since the name "xcube" is already taken on PyPI by another software. (#982) -
Added project URLs and classifiers to
setup.py
, which will be shown in the
left sidebar on the PyPI xcube-core webpage. -
Refactored xcube workflow to build docker images only on release and deleted the
update xcube tag job. -
Used
pyupgrade
to automatically upgrade
language syntax for Python versions >= 3.9. -
Migrated the xcube project setup from
setup.py
to the modernpyproject.toml
format. -
The functions
mask_dataset_by_geometry()
andclip_dataset_by_geometry()
of modulexcube.core.geom
have a new keyword argument
update_attrs: bool = True
as part of the fix for #995. -
Decreased number of warnings in the xcube workflow step unittest-xcube.
-
Added new data store
"https"
that uses
fsspec.implementations.http.HTTPFileSystem),
so that the upcoming xcube STAC data store will be able to access files from URLs. -
The workflow
.github/workflows/xcube_publish_pypi.yml
changes the line in thepyproject.toml
, where
the package name is defined toname = "xcube-core"
. This allows to release xcube under
the package name "xcube-core" on PyPI where the name "xcube" is already taken. #1010 -
Updated the 'How do I ...' page in the xcube documentation.
v1.6.0.dev4
- Get color mapping for variables with flag_values attribute by @forman in #1012
- Dynamical xcube package name; xcube used for local install, xcube-core used for PyPI by @konstntokas in #1010
- Renamed new target_ds into ref_ds; added missing tests by @forman in #1009; follow up for #1003
- Fix adding ml-datasets from S3 to viewer in JL by @forman in #1008 fixing #1007