Releases: xcube-dev/xcube
1.8.2
1.8.1
1.8.0
Changes in 1.8.0
Enhancements
-
The method
xcube.core.GridMapping.transform
now supports lazy execution. If
computations based on actual data are required—such as determining whether the
grid mapping is regular or estimating the resolution in the x or y direction—only a
single chunk is accessed whenever possible, ensuring faster performance. -
The function
xcube.core.resampling.rectify_dataset
now supportsxarray.Datasets
containing multi-dimensional data variables structured asvar(..., y_dim, x_dim)
.
The two spatial dimensions (y_dim
andx_dim
) must occupy the last two positions
in the variable's dimensions. -
Added a new preload API to xcube data stores:
- Enhanced the
xcube.core.store.DataStore
class to optionally support
preloading of datasets via an API represented by the
newxcube.core.store.DataPreloader
interface. - Added handy default implementations
NullPreloadHandle
andExecutorPreloadHandle
to be returned by implementations of theprepare_data()
method of a
given data store.
- Enhanced the
-
A
xy_res
keyword argument was added to thetransform()
method of
xcube.core.gridmapping.GridMapping
, enabling users to set the grid-mapping
resolution directly, which speeds up the method by avoiding time-consuming
spatial resolution estimation. (#1082) -
The behaviour of the function
xcube.core.resample.resample_in_space()
has
been changed if notile_size
is specified for the target grid mapping. It now
defaults to thetile_size
of the source grid mapping, improving the
user-friendliness of resampling and reprojection. (#1082) -
The
"https"
data store (store = new_data_store("https", ...)
) now allows
for lazily accessing NetCDF files.
Implementation note: For this to work, theDatasetNetcdfFsDataAccessor
class has been adjusted. (#1083) -
Added new endpoint
/viewer/state
to xcube Server that allows for xcube Viewer
state persistence. (#1088)The new viewer API operations are:
GET /viewer/state
to get a keys of stored states or restore a specific state;PUT /viewer/state
to store a state and receive a key for it.
Persistence is configured using new optional
Viewer/Persistence
setting:Viewer: Persistence: # Any filesystem. Can also be relative to base_dir. Path: memory://states # Filesystem-specific storage options # StorageOptions: ...
-
The
get_data_ids()
method inDataStore
has an enhancedinclude_attrs
parameter.
Previously accepting onlyContainer[str]
, it now also supports abool
value.
Settinginclude_attrs
toTrue
retrieves all attributes of the data_ids. -
Updated dependency
urllib3
to be>=2.0
. -
Bundled xcube-viewer 1.4.0
Fixes
- The function
xcube.core.resample.resample_in_space()
now supports the parameter
source_ds_subset=True
when callingrectify_dataset
. This feature enables
performing the reprojection exclusively on the spatially congruent subset of
the dataset. - The function
xcube.core.resample.resample_in_space()
now always operates
lazily and therefore supports chunk-wise, parallel processing. (#1082) - Bug fix in the
has_data
method of the"https"
data store
(store = new_data_store("https", ...)
). (#1084) - Bug fix in the
has_data
method of all filesystem-based data store
("file", "s3", "https"
).data_type
can be any of the supported data types,
e.g. for.tif
file,data_type
can be eitherdataset
ormldataset
. (#1084) - The explanation of the parameter
xy_scale
in the method
xcube.core.gridmapping.GridMapping.scale
has been corrected. (#1086) - The spurious tileserver/viewer warning "no explicit representation of
timezones available…" (formerly "parsing timezone aware datetimes is
deprecated…") is no longer generated. (#807)
Other changes
-
Added experimental feature that allows for extending the xcube Viewer
user interface with server-side panels. For this to work, users can now
configure xcube Server to load one or more Python modules that provide
xcube.webapi.viewer.contrib.Panel
UI-contributions.
Panel instances provide two decoratorslayout()
andcallback()
which are used to implement the UI and the interaction behaviour,
respectively. The functionality is provided by the
Chartlets Python library.
A working example can be found inexamples/serve/panels-demo
. -
The xcube test helper module
test.s3test
has been enhanced to support
testing the experimental server-side panels described above:- added new decorator
@s3_test()
for individual tests withtimeout
arg; - added new context manager
s3_test_server()
withtimeout
arg to be used
within tests function bodies; S3Test
,@s3_test()
, ands3_test_server()
now restore environment
variables modified for the Moto S3 test server.
- added new decorator
Full Changelog: v1.7.1...v1.8.0
1.7.2.dev1
What's Changed
Full Changelog: v1.7.2.dev0...v1.7.2.dev1
1.7.2.dev0
What's Changed
- Allow lazy execution of the reprojection method by @konstntokas in #1082
- Allow to open netcdf file from remote HTTPS server by @konstntokas in #1083
- Error in documentation of
GridMapping.scale
method corrected by @konstntokas in #1087 - Server-side panels by @forman in #1085
- Bug fix in
has_data
method for"https"
data store by @konstntokas in #1084
Full Changelog: v1.7.1...v1.7.2.dev0
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