Releases: sertit/eoreader
Releases · sertit/eoreader
v0.24.0
0.24.0 (2026-05-05)
🚀 Major Changes
- New Feature: Added support for Satellogic (Aleph-1) constellation (#229).
✨ Enhancements
- Added fallback for TSX/TDX extent when
SUPPORT/GEARTH_POLY.kmlis missing (#290). - Handle windows when loading DEM bands.
- Better error reporting for faulty HTML responses with STAC links.
🐛 Fixes
- SAR Data:
- Fixed buffer issues in geographic CRS when subsetting.
- Resolved SNAP fallback and calibration polarization issues.
- Fixed conflicts between resolution and window names in orthorectified data.
- Corrected pixel size management in despeckling.
- Sentinel-2 STAC products:
- Added missing
_has_maskmethod. - Fixed
get_mean_sun_anglesand MPC product imports/names.
- Added missing
- General:
- Fixed quicklook path output (now always strings).
- Fixed regression for despeckle bands (raw band output).
- Handled missing
product.kmlin RS2 products. - Corrected pixel size propagation in band filenames.
⚡ Optimizations
- Improved window management for SAR data (e.g., no window name if it matches band extent).
- Avoid unnecessary raster modifications when computing SAR product extents.
- SNAP-GPT: Subset now uses the read operator instead of adding a subset operator.
📦 Dependencies
- Breaking Change: Switched from
dicttoxmltodict2xml(#292).
v0.23.0
0.23.0 (2026-01-02)
A massive release to kick off 2026 in style!
🚀 New Features & Enhancements
- New Sensor Support: Added support for the VENUS sensor (@ArthurVincentCS).
- Exogenous Data: Allow loading and stacking of exogenous data (@gsalgues).
- SAR Data: Export local incidence angles (@simone-tilia), improved CSK and TerraSAR-X handling.
- Custom Products: Added gain and offset support for CustomProducts in DN (@oscarn2); disambiguate condensed name
- Maxar/Vantor:
- Fix corrupted Maxar products with incoherent width between .IMD and .TIL files
- Transitioned from Maxar to Vantor
- Added calibration parameters for Worldview-Legion 03 to 06.
- Plotting: Enhanced plotting features, removed PIL dependency, and improved nodata handling.
- Dependencies: Dropped Python 3.9, added support for Python 3.13 & 3.14 and SNAP 12 & 13.
✅ Bug Fixes
- Orthorectification: Corrected DEM management with RPC and CRS issues.
- Data Handling: Planetscope custom names, PNEO and RADARSAT-2 regexes, WV Legion band order, improved CSK handling and other fixes.
- Fallbacks: Added fallbacks for KML errors and SNAP calibration regressions
💖 Notable Contributors
@remi-braun, @ArthurVincentCS, @gsalgues, @simone-tilia, @oscarn2
🗒️ Full Changelog
Details
- ENH: Adding the support of
VENUSsensor #235 - by @ArthurVincentCS - ENH: Desambiguate condensed name of Custom stack in case of creation of several objects with the same datetime and same constellation and product type
- ENH: Fix corrupted Maxar products with incoherent width between .IMD and .TIL files #242
- ENH: Add TerraSAR-X management of default resolution and pixel size for RE data
- ENH: Add gain and offset for CustomProducts to cope with custom stacks in DN - by @oscarn2
- ENH: Allow exogenous data in load and stack #273 - by @gsalgues
- ENH: Export local incidence angles for SAR data - by @simone-tilia
- ENH: Enhance plotting feature (remove PIL usage, manage nodata and pass kwargs to plotting functions)
- ENH: Switch from Maxar to Vantor #280
- ENH: Add Worldview-Legion calibration parameters for satellite 03 to 06 included
- FIX: Write intermediate data for loaded bands also for Custom stacks
- FIX: Fix regression when stacking with a custom nodata value with VHR data to be reprojected
- FIX: Fix an unprecedented case with a PNEO having different name than usual (
DIM_PNEO3_STD_2025...instead ofDIM_PNEO3_2025...) - FIX: Fix WV Legion wrong band order in Multi Spectral 1 mode #246
- FIX: Collocate Planet spectral bands with masks for some rare cases where it fails
- FIX: Loosen the constraints on PlanetScope stack name as it may change, from
Analytictocomposite, etc. #244 - FIX: Add a fallback in case of impossibleness of reading ICEYE
QUICKLOOK.kmlfile - FIX: Manage the case of Maxar data with negative absolute calibration factor: don't compute the reflectance and leave it as is.
- FIX: Fix DEM management with RPC orthorectification: handle correctly the vertical CRS (see DEM notebook and
EOREADER_DEM_VCRSenvironment variable). #53 - FIX: Add
DISPLAYas DIMAP-V2 radiometric processings #249 - FIX: Change RADARSAT-2 file regex to identify the product, to avoid confusion with others #250
- FIX: Add
SGFproduct type forSCNsensor mode for RADARSAT-2 #251 - FIX: Precise metadata regex for SuperView data #253
- FIX: Handle old DIMAP V1 data #234
- FIX: Handle GCPs in VHR data
- FIX: Fix raw CRS exported as string rather than CRS object for Maxar data #255
- FIX: Use only the number of range looks to derive the resolution and pixel_size of CSG data #256
- FIX: Return an empty
lxml.Elementas metadata for S1 RTC ASF products instead ofNoneto ensure consistency - FIX: Set
EPSG:4326for rasters with empty CRS to be orthorectified with RPCs - FIX: Fix multi-polarisation SAR data with swaths orthorectified independently (i.e. SAOCOM)
- FIX: Manage more CSK formats - by @simone-tilia
- FIX: Fix STAC product geometry with MPC #277
- FIX: Add fallback behavior with empty KML files for SAR data
- FIX: Fix loss of CRS when loading clouds from Sentinel-2 L2A
- FIX: Force nodata when opening Dimap V2 masks
- FIX: Factorize
extentcode - FIX: Remove useless columns from footprint vectors
- FIX: Add a fallback for COSMO-SkyMed calibration regression in SNAP 13.0.0
- OPTIM: Use raw band path over default band path to speed up the computation of image information (extent, footprint, CRS, transform) of SAR ortho products
- OPTIM: Allow predictor = 3 with LZW compression when saving SAR intermediate data as SNAP handles it properly now. #173
- CI: Filter some warnings in pytest
- CI: Add some exception to coverage and add the report back into artifacts
- CI: Add weekly tests on Python 3.13 and 3.14
- DEPS: Test on SNAP 12 and 13 #213
- DEPS: Drop support for Python 3.9 and add support for Python 3.13 and 3.14 #175
- DEPS: Revamp deps
- DOC: Update documentation, notebooks and docstrings
- DOC: Add a CITATION file #262
v0.22.4
0.22.4 (2025-07-07)
- FIX: Add workaround for
TvsT1+T2abstraction issue in Awesome Spectral Index #214 - FIX: Raise missing file not found exception - by @emmanuel-ferdman
- FIX: Prune also
driverkeyword inutils.read - FIX: Fix potential bug reading Umbra STAC JSON as GeoJSON in
pyogrio(workaround: usefiona) - DOC: Fix jupyter cache for documentation notebook #211
- DOC: Convert gfm admonitions to rst
v0.22.3
0.22.3 (2025-05-05)
- FIX: Fix crash of
reorder_loaded_bands_like_inputwith indices and associated_bands
v0.22.2
0.22.2 (2025-04-18)
- FIX: Fix GPT graphs (mutiple errors, such a lonely
Subset, aLinearToFromdBstep not written, etc.) - FIX: Fixed TSX and TDX Products Regex to properly identify Staring Spotlight products as
TsxProductandTdxProduct- by @guillemc23
v0.22.1
0.22.1 (2025-04-04)
- FIX: Correct the logic behind saving a stack in uint16 in
product.stack - FIX: Fix a regression disallowing to pass a custom nodata to
product.stack - FIX: Fix COSMO GTC reading
v0.22.0
0.22.0 (2025-03-25)
- BREAKING CHANGES: Remove deprecated features (#94, #95, #96)
resolutionkeyword if favor ofpixel_sizeGREEN1band in favor ofGREEN_1utils.stack_dictfunction in favor ofutils.stack(removebandargument)- deprecated spectral indices in favor of awesome spectral index ones).
AFRI_1_6:AFRI1600AFRI_2_1:AFRI2100BSI:BINDGRI:NGRDINDRE1:NDREIRGI:RGRIWV_BI:NHFDWI:WI2015RDI:DSIDSWI:DSWI5GRI:DSWI4WV_SI:NDSIWVPANI:BITM
- BREAKING CHANGES: Pass mask-related functions in private as their exposure is done via
loadnow - BREAKING CHANGES: Update the resolution in band paths:
1000-00minstead of1000m, or0-50minstead of0-5m. SetEOREADER_LEGACY_BAND_NAME_RESOLUTIONto 1 to keep the older behavior - ENH: Adding the support of masks (#101)
- ENH: Adding the support of Sentinel-2 L2A specific bands (
AOT,SCLandWV) (#153) - ENH: Adding the support of WorldView Legion constellation (#183)
- ENH: Adding the support of Umbra constellation (only GEC file) (#114)
- ENH: Add the ability to open a product with a context manager (#133)
- ENH: Use the
windowargument to subset SAR data during SNAP pre-process (#186) - ENH: Add a function computing the centroid of the footprint of the product
- ENH: Write intermediary files as COG by default and add a environment variable
EOREADER_DEFAULT_DRIVERto overload the default driver (#181) - ENH: Add a
pathattribute to the bands, corresponding to their path on disk - ENH: Manage COSMO-SkyMed
GTC(orthorectified) products - ENH: Raise a proper exception in case of non-existing product path
- FIX: Fix toa radiance to toa reflectance computation for VHR data
- FIX: Save Cosmo quicklooks as PNG instead of GeoTiffs as they are not georeferenced
- FIX: Fix
to_strfunction withas_list=False - FIX: Correctly set the stack attributes when already existing on disk
- FIX: Don't convert stack to
uint16in memory withsave_as_intargument (only convert the version written on disk) - FIX: Fix reading bands for Sentinel-2 L1C data from Element-84 which have different AWS endpoints between STAC files and their assets
- FIX: Don't warp multiple times VHR stacks
- INTERNAL: Rationalize band paths and filename functions (still early work) (#31)
- DOC: Add documentation on how EOReader can improve your data handling (#108)
- DEPS: Add
ephemfor computing earth-sun distance (according to Maxar's method from docs)
v0.21.10
0.21.10 (2024-02-18)
- ENH: Allow the user to change the default resampling per product and free the
resolutionkeyword inloadandstack(#103) - ENH: For Sentinel-2 L2A products, use the
MSK_CLDPRB_20mfor computing clouds, as they are more precise than legacy L1CMSK_CLOUDS_B00masks. (#174) - FIX: Fix Sentinel-2 Theia footprints when the nodata area is wider than the data area (#201)
- FIX: Pop
driverkeyword in stack function to only use it for writing, allowing people to save stack as COGs (#181, #202) - FIX: Simplify L7 footprint (#198)
- FIX: Make RPC reprojection work with DEM stored on cloud (#200)
- FIX: Fix DIMAP V2 mask reprojection when all mask values are equal to 1 (resulting in a failure of computing the bands in case of nodata)
- FIX: Fix import of
SaocomSensorModeandTsxProductfromeoreader.product - FIX: Upgrade to v2.0.0 of projection STAC extension
- DEPS: Add
tifffileas a dependency to allow to write COGs withdask(#181, #202)
v0.21.9
0.21.9 (2024-01-22)
- FIX: Better management of temporary directories (name, cleaning, etc)
- FIX: Align
Sentinel-3 SLSTRclean band path creation on optical's method - DOC: Update documentation (intersphinx mapping, ...)
v0.21.8
0.21.8 (2024-01-13)
- ENH: Add a new type (
BandsType) for list of BandType - ENH: Add a new environment variable
EOREADER_NOF_BANDS_IN_CHUNKSto control the number of the bands in chunks when usingdask. (#178) - ENH: Allow
'auto'inEOREADER_TILE_SIZE, to setchunks="auto"when reading data. (#178) - FIX: Fix stack
save_as_intto use updated int values - by @TabeaW - FIX: Fixed PAZ Product Regex to properly indentify PAZ ST products as
PAZProduct- by @guillemc23 - FIX: Fixed PNEO Product Regex to properly indentify PNEO products as
PneoProduct- by @guillemc23 - FIX: Fixed preprocessing graph paths in order to support relative paths in more complex environments or contexts - by @guillemc23
- FIX: Remove useless
_norm_difffunctionindices.py - FIX: Add a fallback in case
map-overlay.kmlis not readable forSentinel-1data (#180,#182) - FIX: Remove warning about Dask's lock and client
- FIX: Don't throw an error in case of missing cloud coverage, only a warning and set the cloud coverage to 0 #159
- FIX: Use the sun elevation angle rather than the sun zenith angle for STAC #158
- FIX: Create comparison operators for
BandNames, removing thexarray RuntimeWarningaboutsort order is undefined for incomparable objects. - FIX: Add some missing
@cachearound time-consuming functions - FIX: Set correctly the SAR product type, with adding two types (
ORTHOandGEOCODED) - FIX: Fix the computation of parametric spectral indices #193
- FIX: Fix retrieval of quicklook path for SAOCOM when already computed
- FIX: Write data using
windowed=Truefor very big rasters (> 50 Go) to avoid core dumps - FIX: Fix management of numpy temporary files saved on disk
- OPTIM: Cache the access to any archived file list, as this operation is expensive when done with large archives stored on the cloud (and thus better done only once).
- CI: Remove useless verbosity in CI
- CI: GDAL performance tuning by tweaking
rasterio's env - INTERNAL: Switch from
setup.pytopyproject.toml#109 - INTERNAL: Use
ruffinstead ofblack+flake8+isort - DOC: Update
conf.py(remove useless hunks and set Sphinx 7 as base) - DOC: Added the PAZ product guide to the PAZ Product documentation instead of the TerraSAR-X one - by @guillemc23
- DEPS: Pin
sertit>=1.44.1