-
Renamed main branch from
master
tomain
. -
Added a data store (
sentinelhub-cdse
) for the Sentinel Hub instance on CDSE with preconfigured auth and API endpoints. (#112)
-
Migrated to Sentinel Hub Catalog API 1.0. (#108)
Thanks to @chorng for PR.
-
Deprecated
api_url
parameter in favour ofinstance_url
, that specifies the URL of the SentinelHub service instance. It defaults tohttps://services.sentinel-hub.com
. For example, to use the SentinelHub instance on CDSE setinstance_url="https://sh.dataspace.copernicus.eu"
. (#107) -
Updated or introduced other parameters that override specific Sentinel Hub API endpoints:
oauth2_url
process_url
catalog_url
configuration_url
collection_url
-
Error messages now contain error details from Sentinel Hub API. (#100)
-
Removed deprecated
instance_id
parameter. -
Deprecated command-line tool
xcube sh_cli
. -
Deprecated utility module
xcube_sh.viewer
.
- Added cloud mask variables
CLM
andCLP
to datasets of typeS2L2A
. See Cloud Masks on SentinelHub. - Reformatted code base using black.
- Updated copyright headers
- Fixed a bug which caused that, when the
four_d
parameter was set to true when opening a dataset, the data of the bands of the resulting cubes could not be accessed. (#101)
- Added support for Landsat-4,5 Level-2 (
"LTML2"
) and Landsat 7 Level-2 ("LETML2"
) collections available through the endpointapi_url="https://services-uswest2.sentinel-hub.com"
. - Adapted to work with Python 3.10
- Fixed default
time_tolerance
used whentime_period
is None. It is now correctly set to ten minutes.
- Fixed problem with that some parameters that were listed as result from
get_open_data_params_schema
caused a TypeError. Removeddataset_name
fromopen_params_schema
(was redundant due todata_id
) and added support for parametersmosaicking_period
,upsampling
,downsampling
, andvariable_fill_values
. (#94)
- Fixed Landsat radiance/reflectance bands to have
sample type
FLOAT32
by default, wasUNIT16
. (#89) - Avoid having
wavelength: NaN
values in band metadata attributes. - Implemented performance optimizations for use of datasets in xcube server. (#88)
- The open parameter
variable_names
in thesentinelhub
data store
is now optional. - Fixed some import statements to be compatible with Python 3.10.
-
If requesting a non-geographic target projection, spatial reference information is now provided in a CF-compliant way. (#85)
-
Now logging when a new Sentinel Hub access token is fetched. Also logging non-recoverable errors when accessing data.
- Avoiding
TokenExpiredError
that occurred after requesting tiles from Sentinel Hub after more than 1h. (#49)
-
Added header
SH-Tag: xcube-sh
to SH API requests. (#80) -
Sometimes a
requests.exceptions.ChunkedEncodingError
was raised when a large number of data cube tiles were requested concurrently. The error occurred in cases where the Sentinel Hub server was no longer able to stream response data. The problem has been mitigated by
applying the same retry strategy as for "normal" HTTP error codes. -
Changed spelling
SENTINEL Hub
intoSentinel Hub
in docs and logs.
-
It is now possible accessing BYOC/BYOD and DEM datasets without providing the
time_period
cube configuration parameter. In case such a dataset has no associated time information,
we assume a single time step (size of dimensiontime
is one) and assign the query time range to this time step. (#75, #67, #35) -
The cube configuration parameter
band_names
can now be omitted also for BYOC collections. In this case, the returned data cube will contain all available using their native sample types. (#76) -
Introduced a new cube configuration parameter
band_fill_values
that can be used to specify the fill value (= no-data value) for either all bands if given as a scalar numbers or for individual bands, if given as list or tuple of numbers. (#34)
- Added resampling parameters to cube configuration (#66) and
made
"NEAREST"
the default forupsampling
anddownsampling
(was"BILINEAR"
):upsampling: str = "NEAREST" # or "BILINEAR", "BICUBIC" downsampling: str = "NEAREST" # or "BILINEAR", "BICUBIC" mosaicking_order: str = "mostRecent" # or "leastRecent", "leastCC"
- Warnings saying
RuntimeWarning: Failed to open Zarr store with consolidated metadata...
are now silenced. (#69) - The xcube
sentinelhub
data store now correctly retrieves available dataset time ranges from Sentinel Hub catalog (#70)
- Version 0.9 now requires xcube 0.9 because of incompatible API changes
in the xcube data store framework. However, most user code should not
be affected. - If the requested CRS is not geographic, the returned dataset will
now contain a variable named
crs
whose attributes encode the dataset's spatial CRS in a CF-compliant way. (#64) - Providing a
collection_id
and omittingtime_period
inCubeConfig
raised a confusing exception. We now provide a better problem description. (#35) - Added two new constructor parameters to
SentinelHub
class that override default SH API URLs derived from endpoint URL api_url:catalog_url
: Overrides default SH process API URL.process_url
: Overrides default SH catalog API URL.
- Fixed coordinate transformation into geographic CRS e.g. EPSG 4326. In this case (lon, lat) pairs were expected, but (lat, lon) pairs were received. (#60)
- Now supporting Landsat-8 Level-1 (
"LOTL1"
) and Level-2 ("LOTL2"
) collections (#53, thanks @maximlamare for PR #54) - Now works for
bbox
coordinates using a CRS other than CRS84, WGS84, EPSG:4326. (#55) - Provided xcube data store framework interface compatibility with breaking changes in xcube 0.8.0 (see xcube-dev/xcube#420).
- Fixed a bug that occurred when writing datasets obtained from Sentinel Hub to NetCDF file.
In this case an error
TypeError: Invalid value for attr 'processing_level': None must be a number, a string, an ndarray or a list/tuple of numbers/strings for serialization to netCDF files
was raised. (#44) - Cube configuration parameter
time_range
acceptsNone
as start and end date values. For example, iftime_range=[None,'2021-02-01']
is provided, then the start date is '1970-01-01'; iftime_range=['2021-02-01', None]
is provided, then the end date is the current date (today). - Changed the cube configuration parameter
crs
(spatial coordinate reference system) so users can pass"WGS84"
,"CRS84"
or"EPSG:{code}"
, where{code}
is an EPSG code e.g."EPSG:4326"
. The old URI notation is still supported, e.g."http://www.opengis.net/def/crs/EPSG/0/4326"
. - Fixed a bug that caused all band attributes to be included in each band's attributes. This resulted in three times larger JSON metadata exports.
- Fixed a bug in coordinate metadata: value of latitude
long_name
attribute should be"latitude"
(thanks to Matthew Fung / @mattfung). - Implemented error handling policy when Sentinel Hub API returns an HTTP error status
for a requested data chunk (#39).
Behaviour is controlled by the
error_policy
argument:- for value
"fail"
, aSentinelHubError
is raised with complete error information; - for value
"warn"
, a warning is issued with complete error information, and a fill-value chunk is generated.
- for value
- Removed module
xcube_sh.geodb
entirely. Also delete example notebookDemo1-xcube-sh.ipynb
as it referred to the removed package. Its other content is covered by remaining notebooks.
-
Fixed problem with the encoding of a dataset's coordinate variables that occurs when using
xcube_xh
with xcube 0.6.1. (#27) -
Fixed issue with
crs
parameter in cube configuration. Ifcrs='http://www.opengis.net/def/crs/OGC/1.3/CRS84'
was used,x
,y
coordinate variables where produced instead of expectedlon
,lat
. (#26)
-
Fixed following issues regarding datasets' band metadata:
- Renamed misspelled band attribute
bandwith
intobandwidth
. - Values of band attributes
wavelength
andbandwidth
, if any, are now always numeric. For Sentinel A and B datasets, values ofwavelength
andbandwidth
are averages. Individual wavelengths and bandwidths for Sentinel A and B, if any, are available in attributeswavelength_a
,wavelength_b
andbandwidth_a
,bandwidth_b
.
- Renamed misspelled band attribute
-
Removed outdated module
xcube_sh.geodb
, removed unusedgeodb
folder, and added a deprecation notice in NotebookEx4-DCFS-GeoDB.ipynb
.
-
Enhanced band metadata and added flag encodings for Sentinel-3 OCLI L1B datasets. Additional band metadata and flag encodings for Sentinel-3 SLSTR L1B datasets will follow soon.
-
Now using Sentinel Hub's Catalogue API instead of the WFS (#14)
- to determine actual observations within given bounding box and time range;
- to determine time range of available data collections.
-
The keyword argument
instance_id
of theSentinelHub
andSentinelHubStore
constructors has been deprecated. It is no longer required
Note, this version has been accidentally released as v0.5.0.
- Documented store open parameters. Store open parameter
variable_names
and
CubeConfig
parameterband_names
may now beNone
. In this case all variables/bands are included. (#12) CubeConfig
now accepts parameterbbox
instead of parametergeometry
.geometry
is currently deprecated, but may be supported again later. It may then also be a WKT Geometry string or GeoJSON object. (#4)xcube-sh
now implements the newxcube.core.store.DataStore
interface.- Fixed
KeyError
exception when opening cube from dataset "DEM".
- Added support for BYOD (#1): To utilize, create new
CubeConfig
withdataset_name="CUSTOM"
and provide value for new keyword argumentcollection_id
. - Added
CubeConfig
parameterband_sample_type
which may be one of"INT8"
,"INT16"
,"UINT8"
,"UINT16"
,"FLOAT32"
,"FLOAT64"
or a sequence of those. (#2) - If
CubeConfig.time_period
is not given, we now use the SentinelHub WFS to identify overpass time of scenes that intersect the given bounding box byCubeConfig.bbox
. (#3) - Renamed
xcube-dcfs
toxcube-sh
. Made thexcube-sh
environment dependent onxcube
.SentinelhubStore
now inherits fromxcube.api.CubeStore
. (#4) - Added class SentinelOAuth2Session to allow proper pickling of the oauth session
- The
ViewerServer
constructor will now try killing any running server on same port number, before a new server instance is started. Style parsing has been fixed. Settingserver_url=None
will make it default tohttp://localhost:8080
.
Initial version for ESA Demo 1.