Skip to content

Releases: sertit/eoreader

v0.24.0

05 May 14:43

Choose a tag to compare

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.kml is 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_mask method.
    • Fixed get_mean_sun_angles and MPC product imports/names.
  • General:
    • Fixed quicklook path output (now always strings).
    • Fixed regression for despeckle bands (raw band output).
    • Handled missing product.kml in 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 dicttoxml to dict2xml (#292).

v0.23.0

02 Jan 14:38

Choose a tag to compare

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 VENUS sensor #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 of DIM_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 Analytic to composite, etc. #244
  • FIX: Add a fallback in case of impossibleness of reading ICEYE QUICKLOOK.kml file
  • 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_VCRS environment variable). #53
  • FIX: Add DISPLAY as DIMAP-V2 radiometric processings #249
  • FIX: Change RADARSAT-2 file regex to identify the product, to avoid confusion with others #250
  • FIX: Add SGF product type for SCN sensor 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.Element as metadata for S1 RTC ASF products instead of None to ensure consistency
  • FIX: Set EPSG:4326 for 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 extent code
  • 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

07 Jul 19:28

Choose a tag to compare

0.22.4 (2025-07-07)

  • FIX: Add workaround for T vs T1+T2 abstraction issue in Awesome Spectral Index #214
  • FIX: Raise missing file not found exception - by @emmanuel-ferdman
  • FIX: Prune also driver keyword in utils.read
  • FIX: Fix potential bug reading Umbra STAC JSON as GeoJSON in pyogrio (workaround: use fiona)
  • DOC: Fix jupyter cache for documentation notebook #211
  • DOC: Convert gfm admonitions to rst

v0.22.3

05 May 11:15

Choose a tag to compare

0.22.3 (2025-05-05)

  • FIX: Fix crash of reorder_loaded_bands_like_input with indices and associated_bands

v0.22.2

18 Apr 15:42

Choose a tag to compare

0.22.2 (2025-04-18)

  • FIX: Fix GPT graphs (mutiple errors, such a lonely Subset, a LinearToFromdB step not written, etc.)
  • FIX: Fixed TSX and TDX Products Regex to properly identify Staring Spotlight products as TsxProduct and TdxProduct - by @guillemc23

v0.22.1

04 Apr 12:20

Choose a tag to compare

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

25 Mar 15:14

Choose a tag to compare

0.22.0 (2025-03-25)

  • BREAKING CHANGES: Remove deprecated features (#94, #95, #96)
    • resolution keyword if favor of pixel_size
    • GREEN1 band in favor of GREEN_1
    • utils.stack_dict function in favor of utils.stack (remove band argument)
    • deprecated spectral indices in favor of awesome spectral index ones).
      • AFRI_1_6: AFRI1600
      • AFRI_2_1: AFRI2100
      • BSI: BI
      • NDGRI: NGRDI
      • NDRE1: NDREI
      • RGI: RGRI
      • WV_BI: NHFD
      • WI: WI2015
      • RDI: DSI
      • DSWI: DSWI5
      • GRI: DSWI4
      • WV_SI: NDSIWV
      • PANI: BITM
  • BREAKING CHANGES: Pass mask-related functions in private as their exposure is done via load now
  • BREAKING CHANGES: Update the resolution in band paths: 1000-00m instead of 1000m, or 0-50m instead of 0-5m. Set EOREADER_LEGACY_BAND_NAME_RESOLUTION to 1 to keep the older behavior
  • ENH: Adding the support of masks (#101)
  • ENH: Adding the support of Sentinel-2 L2A specific bands (AOT, SCL and WV) (#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 window argument 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_DRIVER to overload the default driver (#181)
  • ENH: Add a path attribute 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_str function with as_list=False
  • FIX: Correctly set the stack attributes when already existing on disk
  • FIX: Don't convert stack to uint16 in memory with save_as_int argument (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 ephem for computing earth-sun distance (according to Maxar's method from docs)

v0.21.10

18 Feb 07:40

Choose a tag to compare

0.21.10 (2024-02-18)

  • ENH: Allow the user to change the default resampling per product and free the resolution keyword in load and stack (#103)
  • ENH: For Sentinel-2 L2A products, use the MSK_CLDPRB_20m for computing clouds, as they are more precise than legacy L1C MSK_CLOUDS_B00 masks. (#174)
  • FIX: Fix Sentinel-2 Theia footprints when the nodata area is wider than the data area (#201)
  • FIX: Pop driver keyword 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 SaocomSensorMode and TsxProduct from eoreader.product
  • FIX: Upgrade to v2.0.0 of projection STAC extension
  • DEPS: Add tifffile as a dependency to allow to write COGs with dask (#181, #202)

v0.21.9

22 Jan 15:00

Choose a tag to compare

0.21.9 (2024-01-22)

  • FIX: Better management of temporary directories (name, cleaning, etc)
  • FIX: Align Sentinel-3 SLSTR clean band path creation on optical's method
  • DOC: Update documentation (intersphinx mapping, ...)

v0.21.8

13 Jan 12:44

Choose a tag to compare

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_CHUNKS to control the number of the bands in chunks when using dask. (#178)
  • ENH: Allow 'auto' in EOREADER_TILE_SIZE, to set chunks="auto" when reading data. (#178)
  • FIX: Fix stack save_as_int to 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_diff function indices.py
  • FIX: Add a fallback in case map-overlay.kml is not readable for Sentinel-1 data (#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 the xarray RuntimeWarning about sort order is undefined for incomparable objects.
  • FIX: Add some missing @cache around time-consuming functions
  • FIX: Set correctly the SAR product type, with adding two types (ORTHO and GEOCODED)
  • 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=True for 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.py to pyproject.toml #109
  • INTERNAL: Use ruff instead of black + 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