- 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]
- Fixed an error with DEM download due to Planetary Computer now requiring signed urls
- Upgraded dependencies
- 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.
- 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)
- 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.
- Correct options for orbit retrieval
['POE', 'RES']
usingpyrosar
- In
S2.process_tiles
,baseline > 4
replaced bybaseline >= 4
- In
S1.process.coherence
output is tiled like input
S1.process.coherence
with manually fixed chunk size is faster.
- New
S1.process.apply_multilook
function to apply multilook on a tiff in the SAR geometry. - Multilooking may now also be applied in
S1.process.coherence
,S1.process.amplitude
andS1.process.interferogram
rather than inS1.process.geocode_and_merge_iw
. - These functions change the transform in the GeoTIFF files.
S1.process.sar2geo
is now aware of this and applies automatic rescaling. This allows the user to callS1.process.sar2geo
after 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_iw
can be easily defined by the user. - The same can be applied to
S1.process.prepare_slc
for 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.
- Corrected the
S1.util.presum
function to avoid overwriting the input array, reformatted docstrings
- 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_download
is now set toFalse
by default
- New SLC processor to compute and geocode amplitude from a single SLC product.
- Calibration can now be either set to
sigma
orbeta
nought in both InSAR and SLC processors. For the InSAR processor it is useful when amplitude is computed. - Both
beta
andsigma
nought calibration factors are computed by the newS1IWSwath.calibration_factor
function. Beta normalization is not applied anymore byS1IWSwath.read_burst
. - Processing functions
process_*
now have acal_type
parameter 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
).
dem_force_download
warning: it is now displayed when the value is set toFalse
.- the
warp_kernel
parameter is now propagated in all processing functions.
- Unit tests for
S1IWSwath.calibration_factor
andS1IWSwath.read_burst
. - Test script and example notebook for
process_slc
. - More consistent logging messages.
- Refactored the Sentinel-1
_process_bursts
function 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_dem
that downloads the DEM for all processed bursts - The DEM is now upsampled after download, not at terrain correction stage
- Burst geometries are computed at
S1IWSwath
initialization 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_metadata
function:rfi
files are filtered out from the metadata file search - Handling of non-float NaNs in DEM (at coordinate reading)
range_doppler
function skips NaN values- Optimization: Using
cache=True
andnogil=True
incoregister_fast
andrange_doppler
- Optimization: avoid the creation of multiple small arrays by
coregister_fast
results 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
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
- 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
resampling
to useremap
- Fixed bug in
resampling
: using output profile of upsampled DEM instead of original DEM - Changed example notebooks accordingly
- 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
- fix error when
burstId
is not present in the xml and display a warning
- 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.
- removed code that was not supposed to be used in the conda version
- example notebooks can be found in
notebooks-cf
- fix missing dependencies causing eodag to crash (uvicorn has missing requirements)
- initial release