Skip to content

Releases: xcube-dev/xcube

1.7.1

14 Oct 12:08
45a53ad
Compare
Choose a tag to compare

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

12 Sep 09:24
Compare
Choose a tag to compare
1.7.1.dev0 Pre-release
Pre-release

What's Changed

  • Adjustments to resample_in_time() so that xcube now supports xarray=2024.7 by @konstntokas in #1068

Full Changelog: v1.7.0...v1.7.1.dev0

1.7.0

28 Aug 14:12
Compare
Choose a tag to compare

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 and Tags . 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 from setup.py to pyproject.toml. Additionally, updated the relevant
    documentation in doc/source to reflect this change from setup.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 default xcube.core.store.DataStore implementations
    now supports a keyword argument data_type, which determines the
    data type of the return value. Note that opener_id includes the data_type
    at its first position and will override the data_type argument.
    To preserve backward compatibility, the keyword argument data_type
    has not yet been literally specified as open_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 both datetime.date and datetime.datetime objects. Previously,
    only datetime.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's analytic asset.
    Furthermore, a second assert called analytic_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 from MultiLevelDataset to xr.Dataset, if no data_type is assigned
    in the open_params of the store.open_data() method. (#1054)
    xcube server has been adapted to always open MultiLevelDatasets 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

27 Aug 13:46
Compare
Choose a tag to compare
1.7.0.dev4 Pre-release
Pre-release

What's Changed

Full Changelog: v1.7.0.dev3...v1.7.0.dev4

1.7.0.dev3

20 Aug 09:36
cc5fd92
Compare
Choose a tag to compare
1.7.0.dev3 Pre-release
Pre-release

What's Changed

Full Changelog: v1.7.0.dev2...v1.7.0.dev3

1.7.0.dev2

07 Aug 07:46
06e46b0
Compare
Choose a tag to compare
1.7.0.dev2 Pre-release
Pre-release

What's Changed

  • Force xcube Server to open multi-level datasets by @forman in #1056

Full Changelog: v1.7.0.dev1...v1.7.0.dev2

1.7.0.dev1

05 Aug 12:50
Compare
Choose a tag to compare
1.7.0.dev1 Pre-release
Pre-release

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

19 Jul 10:59
Compare
Choose a tag to compare
1.7.0.dev0 Pre-release
Pre-release

What's Changed

  • Migrate docker image build from setup.py to pyproject.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 to open_data method in DataStore class by @konstntokas in #1037
  • The xcube.core.store.DataDescriptor class now supports specifying time ranges using both datetime.date and datetime.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

24 Jun 10:10
Compare
Choose a tag to compare

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 parameter cmap 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 are

    • name: 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 are

    • lin: linear mapping of data values between vmin and vmax to range 0 to 1
      (uses matplotlib.colors.Normalize(vmin, vmax)).
    • log: logarithmic mapping of data values between vmin and vmax to range 0 to 1
      (uses matplotlib.colors.LogNorm(vmin, vmax)).
    • cat: categorical mapping of data values to indices into the color mapping.
      (uses matplotlib.colors.BoundaryNorm(categories)). This normalisation
      currently only works with user-defined colormaps of type
      key or bound (see above).

    The normalisation can be specified in three different ways (in order):

    1. As query parameter norm passed to the tile endpoint.
    2. Property Norm in the Styles/ColorMapping element in xcube server configuration.
    3. 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 argument max_depth defines the maximum subdirectory depths
    used to search for datasets in case roots is given. It defaults to 1.

  • The behaviour of function resample_in_space() of module
    xcube.core.resampling changed in this version. (#1001)

    1. A new keyword argument ref_ds can now be used to provide
      a reference dataset for the reprojection. It can be passed instead
      of target_rm. If ref_ds is given, it also forces the returned target
      dataset to have the same spatial coordinates as ref_ds.
    2. 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 the var_configs keyword-argument
      and set recover_nan to True for desired variables.
  • The class MaskSet() of module xcube.core.maskset now correctly recognises
    the variable attributes flag_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 method get_cmap() which creates
    a suitable matplotlib color map for variables that define the
    flag_values CF-attribute and optionally a flag_colors attribute. (#1011)

  • The Api.route decorator and ApiRoute constructor in
    xcube.server.api now have a slash 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 of util.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 module xcube.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 as ref_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 command xcube 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.

Other changes

  • Make tests compatible with PyTest 8.2.0. (#973)

  • Addressed all warnings from xarray indicating that Dataset.dims will
    be replaced by Dataset.sizes. (#981)

  • NUMBA_DISABLE_JIT set to 0 to enable numba.jit in github workflow. (#946)

  • Added GitHub workflow to perform an automatic xcube release on PyPI after a GitHub
    release. To install xcube via the pip tool use pip 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 modern pyproject.toml format.

  • The functions mask_dataset_by_geometry() and clip_dataset_by_geometry()
    of module xcube.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 the pyproject.toml, where
    the package name is defined to name = "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

10 Jun 06:55
Compare
Choose a tag to compare
v1.6.0.dev4 Pre-release
Pre-release
  • 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