Version notes
2026.6.0
New features
- Added Sentinel-1 SLC partial-product download from the Copernicus Data Space Ecosystem. The downloader writes SAFE-like
<product-id>.partial.SAFEdirectories containing only the consecutive bursts intersecting an AOI, together with the requiredpartial_download.ymlmanifest andpartial_aoi.geojson. - Existing Sentinel-1 InSAR, SLC geocoding, H-Alpha, and dual-polarimetric covariance processors now recognize valid partial products and automatically use their stored AOI and downloaded burst/subswath/polarization availability.
Documentation and tests
- Added partial-product download and processing tutorials for Docker, conda-forge, and Read the Docs, plus focused partial-product API documentation.
- Added focused unit tests for partial-product core metadata/range behavior and processor selection/error/AOI-propagation contracts.
Maintenance
- Removed all support, configuration, and examples for the legacy Sentinel-1 processor.
2026.3.0
New features
- New function
process_polsar_cov_dualgives access to the geocoded elements of the dual-polarimetric covariance matrix with the same calibration options as the other SLC processors (beta, gamma, radiometric terrain corrected). - New parameter in all processors
orbit_interpolatorallowing to choose beteen cubic Hermite spline (default), barycentric Lagrange and polynomial interpolators.
Bugfixes and improvements
- Dockerfile now uses debian latest
- Fixed Dockerfile related environment issues
- Use pyrosar 0.35 for orbits and compatibility with Sentinel 1C and 1D
- Use
skimage.morphology.erosioninstead ofbinary_erosionthat will be deprecated - Pass chunk sizes using a dict instead of tuple for future compatibility
- Removed some unused imports, change regex to handle S1D burst geometry
- Fix geocoding lookup tables in burst overlap areas, refactored burst stitching and add burst offset computation function for a more robust geocoding implementation
- Updated dependencies
2025.6.1
Minor changes
- Updated dependencies
- Now using pyproj 3.7.1, pre-downloading geoid grids to avoid concurrency issues in converting DEM coordinates to ECEF
- See: https://github.com/pyproj4/pyproj/issues/1499
- Display DEM name in log messages at download
2025.6.0
Minor improvements and fixes
- Added a sample EODAG config file.
- Added an orbit directory parameter to each processing function.
- Fixed some type hints where types were wrong or incomplete
- Updated type hints to adopt a more modern convention
- Fixed some parameter checks at the beginning of processing functions (e.g. replaced
coherencewithwrite_coherence) - Fixed some output paths in test scripts to match the processor outputs
- Upgraded dependencies
2025.4.0
New features
- Introducing the H-Alpha dual-polarimetric decomposition from SLC images.
- Added tutorial notebooks for the docker, conda versions and docs.
- The new examples demonstrate EO-Tools ability to process Sentinel-1C products.
Other (improvements, bugfixes, refactoring, maintenance)
- Adapted the
geocode_and_mergefunction to handle file names without polarimetry such asalpha_iw1.tif - Unit tests for H-Alpha components including a single mechanism simulation.
- Change tooltips to popups in
show_all_s1_on_map.pyallowing copy and paste product names. - Update environment to use the latest
rioxarraysince the bug in0.18.0has been fixed. - Force using
pyroSAR==0.29.0to process Sentinel-1C data.
2025.2.0
This version does not introduce any new features but adds fixes and improvements.
Breaking change
- Improved parameter name consistency. All variable and parameters that had
file,dirandpathin them have been renamed following the modelxxx_{file|dir|path}. This means some function calls have changed. Please refer to the API reference page in the docs to see the updated parameters.
Other
- Use EODAG latest version, changed
outputs_prefixparameter tooutput_dirand remove unpacking from search return. - Force using
rioxarray 0.17.0until the bug with>=0.18.0is fixed. - Docker only: functions using TiTiler now show the error message returned by the endpoint request instead of a
KeyErrorexception. This makes debugging easier. - Test script that checks if EODAG search and download requests work.
- Preparing Sentinel1-C support by changing regex in burst processor (although for now S1C processing is not working due to pyrosar
identifynot recognizing the products).
2025.1.1
New feature
- New
dem_nameparameter for SLC and InSAR processors which allows to choose from a list of publicly available DEMs (nasadem: SRTM,alos-dem: ALOS World 3D,cop-dem-glo-30Copernicus DEM 30m andcop-dem-glo-90Copernicus DEM 90m) - Important note: because of changes in DEM metadata, it is recommended to clean all auto-downloaded DEM files or use
dem_force_download=Truebefore reprocessing any data after upgrading to this version.
Bug fixes and improvements
- Add some more tests for S1.core functions (deramping, burst overlap, phi topo,)
- Test script for
cop-dem-glo-30DEM based insar processing - Test script comparing SLC processing for all available DEMs
- Fix: use
max_burst_instead ofmax_burstin burst geometry filtering (fetch_demfunction) - Remove unused
dem_profileoutput fromgeocode_burst - DEM files now have a special tag
COMPOSITE_CRSencoding both lat-lon and vertical reference coordinate system. This tag is added byfetch_dem, extracted byload_dem_coordsand used bylla_to_ecefto convert the DEM to ECEF coordinates.
2025.1.0-build2
Bug Fix
- Fixed a bug in the shadow detector: an offset needed to be added to indices when projecting in the ground geometry to avoid kernel crash.
Details
- This is the second build of version
2025.1.0. The first build (2025.1.0-1) involved an update to the Conda recipe without code changes.
2025.1.0
New features
- Radiometric terrain correction (or flattening) is now available in the SLC processor
- Our algorithm differs from the SNAP implementation. This is actually a modified version of the radiometric normalization algorithm described in SNAP's terrain correction documentation (see https://step.esa.int/main/wp-content/help/versions/9.0.0/snap-toolboxes/org.esa.s1tbx.s1tbx.op.sar.processing.ui/operators/RangeDopplerGeocodingOp.html). Two things are different:
- Instead of the sine of the projected incidence angle, the tangent is computed to comply with the gamma nought convention (as in Small's algorithm).
- The simulated backscatter is regridded and accumulated in the SAR geometry to account for the many-to-one and one-to-many relationships.
- Shadows are detected and set to NaNs in the normalized image.
- Added tutorial notebooks to demonstrate feature usage.
Bugfixes and improvements
- Add libgdal jpeg dependency to work with the new version of rasterio.
- Temporary fix: latest pyproj version was introducing a bug in the computation of the DEM XYZ coordinates. Force to use the previous version.
- Refactored both InSAR and SLC processors: we do not use child processes anymore and set the GDAL_CACHEMAX value to a small number. Benchmarks showed smaller memory usage than previously and no performance loss.
- Fixed some exceptions in the processors (the raise keyword was missing leading the exception to not be triggered).
- Notebooks for conda-forge and docs now use urls to geojson data instead of file paths, making them usable without cloning the github repo.
2024.10.1
New features
- Better S1 coherence estimator
- Multilooking is performed prior to coherence computation
- It is applied to each individual term in the coherence expression
- This way larger sample sizes can be collected even with small boxcar windows
- It avoids averaging the coherence itself (theoretically sounder)
- Binary erosion is applied to mitigate discontinuities at subswath borders
- Default multilook is still
[1, 4]but coherence window size is now[3, 3]
Bugfixes
- Fixed an error with DEM download due to Planetary Computer now requiring signed urls
Other
- Upgraded dependencies
2024.10.0
New features
- Sentinel-1 zipped products are now handled (updated all notebooks accordingly).
- InSAR processing of partially overlapping products, for instance between S1A and S1B, as long as share the same orbit.
Other
- Refactored block processing utility to handle larger overlap.
- Goldstein filter now uses different block size (32) and overlap results in smaller final block size.
- Added Etna notebook to illustrate partial overlap in InSAR (docker version only)
- Simple script that shows all S1 products located in a directory on a map (not part of the conda package)
2024.9.2
New features
- New function
S1.process.goldstein: the Goldstein interferometric filter is an adaptive method that allows to reduce noise on phase. - Tutorial notebooks on how to use the function
- All file names like
"ifg*"are now treated as interferograms byS1.process.geocode_and_merge_iw. This way users can compare several phase filtering methods easily.
Bugfixes
- Correct options for orbit retrieval
['POE', 'RES']usingpyrosar - In
S2.process_tiles,baseline > 4replaced bybaseline >= 4 - In
S1.process.coherenceoutput is tiled like input
Misc
S1.process.coherencewith manually fixed chunk size is faster.
2024.9.1
New feature -- Sentinel-1 custom pipelines
- New
S1.process.apply_multilookfunction to apply multilook on a tiff in the SAR geometry. - Multilooking may now also be applied in
S1.process.coherence,S1.process.amplitudeandS1.process.interferogramrather than inS1.process.geocode_and_merge_iw. - These functions change the transform in the GeoTIFF files.
S1.process.sar2geois now aware of this and applies automatic rescaling. This allows the user to callS1.process.sar2geoafter multilooking an image and define custom processing chains. - In this spirit, two new helper functions allow to apply any user defined function to all subswaths and polarizations present in the output product directory.
- Therefore, custom processing chains of type
S1.process.prepare_insar-> custom processing ->S1.process.geocode_and_merge_iwcan be easily defined by the user. - The same can be applied to
S1.process.prepare_slcfor single images. - Notebooks showing an example of such custom pipeline implementing both coherent and incoherent change detection have been added to the docs and the example folders.
Bugfixes
- Corrected the
S1.util.presumfunction to avoid overwriting the input array, reformatted docstrings
Other
- Added test script for
S1.process.preprocess_insar_iw - Automatically downloaded DEM (for S1 processing) file names are now based on unique hashes instead of being based on product/subswath/polarization.
- This has several advantages:
- It makes filenames shorter
- A new file is created every time a DEM related parameter changes (e.g.
dem_upsampling) instead of overwriting the old one - It enables re-using DEM files across functions
- When processing both polarizations, the DEM is not downloaded twice under a different name anymore
- The parameter
force_dem_downloadis now set toFalseby default
2024.9.0
New features
- New SLC processor to compute and geocode amplitude from a single SLC product.
- Calibration can now be either set to
sigmaorbetanought in both InSAR and SLC processors. For the InSAR processor it is useful when amplitude is computed. - Both
betaandsigmanought calibration factors are computed by the newS1IWSwath.calibration_factorfunction. Beta normalization is not applied anymore byS1IWSwath.read_burst. - Processing functions
process_*now have acal_typeparameter to control the calibration type. - The docker version can now be built with or without SNAP (connect to the folder with SSH and select
rebuild without cache).
Bug fixes
dem_force_downloadwarning: it is now displayed when the value is set toFalse.- the
warp_kernelparameter is now propagated in all processing functions.
Other
- Unit tests for
S1IWSwath.calibration_factorandS1IWSwath.read_burst. - Test script and example notebook for
process_slc. - More consistent logging messages.
2024.8.1
- Refactored the Sentinel-1
_process_burstsfunction of the InSAR processor - Geocoding lookup tables (LUT) now uses a common DEM
- No more LUT merging after processing, safer handling of burst overlap to avoid gaps
- The processor uses a new function
S1IWSwath.fetch_demthat downloads the DEM for all processed bursts - The DEM is now upsampled after download, not at terrain correction stage
- Burst geometries are computed at
S1IWSwathinitialization and stored as a class member - Burst geometries are now used instead of GCPs
- DEM cropping uses a buffer around the burst geometry
- Fixed a bug in the
load_metadatafunction:rfifiles are filtered out from the metadata file search - Handling of non-float NaNs in DEM (at coordinate reading)
range_dopplerfunction skips NaN values- Optimization: Using
cache=Trueandnogil=Trueincoregister_fastandrange_doppler - Optimization: avoid the creation of multiple small arrays by
coregister_fastresults in speedup - Bug fix: in the s1-core-demo notebooks, burst index testing has been corrected in the interferogram warping cell
- Better test data
- Wrote a test for the insar processor using this data
2024.8.0
This version contains bugfixes. rioxarray was not producing valid output COGs because it required extra options at raster creation.
Rendering of geocoded products on a map should be much faster.
Change list:
- Fix invalid COGs: use COG driver after merging
- Fix the geocoding of real-valued data by also using COG in sar2geo
- Using better COG creation options
- ZSTD compression instead of DEFLATE
- overview and projections with nearest neighbor resampling
- using num_threads="all_cpus" to make compression faster
2024.7.0
Code improvements and some bugfixes:
- Burst Ids are checked only when available in the product metadata
- Improved code clarity by renaming some variables, explicitly naming positional parameters
- Added user friendly exceptions to check product validity
- Cleaned up some old comments
- Added numexpr to environments for upcoming optimizations
- Test data for full processor
- Optional directory for orbit files (default is
\tmp) - Added and improved existing logging messages
- Refactored
resamplingto useremap - Fixed bug in
resampling: using output profile of upsampled DEM instead of original DEM - Changed example notebooks accordingly
2024.6.3
added some parameters for more flexibility
- add iw and pol subsets options to geocoding
- default behaviour of the processor will change:
- insar outputs will only be computed for subsets
- inside the processor, geocoding still looks for any subset
- outside the processor the new options take effect
bugfix
- fix error when
burstIdis not present in the xml and display a warning
2024.6.2
- New InSAR processor for full products
- Processing, geocoding and merging subswaths in one function call
- Computation of coherence and / or interferogram
- Optional computation of amplitudes
- Selection of subswath and polarization subsets
- Optional crop of an area of interest (to save computation, only intersecting bursts are processed)
- Access to intermediate files in the SAR geometry. These can be further processed prior to geocoding (for instance, speckle filtering or incoherent change detection of amplitudes may be applied)
- Standalone functions to geocode and merge any raster in the SAR geometry
- Cloud Optimized GeoTIFF (COG) geocoded output file which can be displayed in GIS software or uploaded to tile servers
- Improved internals
- Some memory intensive functions are now using child processes to ensure memory from large objects will be released after processing. This ensures an overall lower memory footprint.
2024.6.1
build 0 on conda-feedstock:
- removed code that was not supposed to be used in the conda version
- example notebooks can be found in
notebooks-cf
build 1 on conda-feedstock:
- fix missing dependencies causing eodag to crash (uvicorn has missing requirements)
2024.6.0
- initial release