All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to PEP 440 and uses Semantic Versioning.
- The
static-analysis
Github Actions workflow now includesmypy
for type checking.
- The
static-analysis
Github Actions workflow now usesruff
rather thanflake8
for linting.
- Orbit files are now retrieved using the s1-orbits library.
- Removed support for the
--esa-username
and--esa-password
command-line options and theESA_USERNAME
andESA_PASSWORD
environment variables.
- Upgraded to GAMMA software version
20240627
from20230712
- Updated versions for Python and GitHub Actions dependencies.
- Input SLCs for insar jobs are now downloaded in parallel in
__main__.insar()
- Consolidated python dependencies to minimize differences between local, docker, and github environments
- Enabled LZW compression for intermediate GeoTIFFs generated by
hyp3_gamma.water_mask
to reduce required disk space - Additional minor edits to water mask language
- Updated water mask language to reflect switch to OpenStreetMaps/ESA WorldCover based water map.
- Support for a new water masking dataset based off of OpenStreetMaps and ESA WorldCover data.
- Polygon processing functions:
split_geometry_on_antimeridian
andget_envelope_wgs84
fromwater_mask.py
.
- Upgraded to
hyp3lib>=3,<4
from>=2,<3
- All requirements for the conda environment are once again installed via conda in
environment.yml
, eliminating the workaround for #421 implemented in v5.7.2.
- Support for legacy SRTM/NED DEMs in RTC processing. All RTC processing now uses the Copernicus DEM.
legacy
option for the--dem-name
parameter of__main__.rtc()
legacy
option for the--dem-name
parameter ofrtc_sentinel.main()
legacy
option for thedem_name
parameter ofrtc_sentinel.rtc_sentinel_gamma()
EU_DEM_V11
,GIMP
,IFSAR
,NED13
,NED1
,NED2
,REMA
,SRTMGL1
, andSRTMGL3
entries frommetadata.rtc.SUPPORTED_DEMS
- A bug that would cause some INSAR jobs, with
apply-water-mask
set toTrue
to fail with ashapely.errors.TopologicalError
.
- Upgraded
hyp3lib
dependency to version2.x.x
. - As of HyP3-lib v2.0.0, the Copernicus Data Space Ecosystem (CDSE) will now be used for downloading Sentinel-1 orbit files from ESA.
- CDSE credentials must be provided via the
--esa-username
and--esa-password
command-line options or theESA_USERNAME
andESA_PASSWORD
environment variables.
- Incorrect / blank water masks in some areas (primarily Europe), by clipping the water mask to the envelope of the product before rasterization.
- The
--phase-filter-parameter
option now accepts a value of0.0
, which indicates that the adaptive phase filter will be skipped. - Documentation for the adaptive phase filter parameter in product readme and xml files.
- New DEM coverage file which allows for jobs over Armenia and Azerbaijan to use COP90. Fixes #462.
- #491
util.unzip_granule
fails withStopIteration
for recently acquired Sentinel-1 scenes
- Description of the range of the lv_phi to be -Pi to Pi in the readme.txt.j2 and the lv_phi_tif.xml.j2. Fixes #478.
- Phase unwrapping for very large interferograms is now performed in two range patches to keep the total memory requirement under 31,600 MB. Fixes #316.
- The
unwrapping_geocoding
function and CLI for InSAR processing no longer allow specifying the number of range and/or azimuth patches to use when unwrapping. Unwrapping is always done with 1 azimuth patch and 1 or 2 range patches, depending on size.
- Upgraded to GAMMA software version
20230712
from20220630
- Remove the NoData setting in the output dem.tif
- References to the DEM pixel value unit (meters) in the readme.md.txt file for the RTC and InSAR products
- The initial DEM mosaic for RTC processing is now resampled to the desired output pixel spacing so that pixels for 20m products are always aligned to a common grid.
- Updated language in RTC readme files to remove references to standard products
- Added
resolution=20.0
option for__main__.rtc()
- A
--phase-filter-paameter
option has been added to the__main__
(HyP3) andifm_sentinel.py
entry points to specify the adaptive phase filter parameter used when processing InSAR products. The provided value is ultimately passed to thealpha
argument of theadf
GAMMA function, which uses the algorithm with a constant exponent as described in https://doi.org/10.1029/1998GL900033.
- Broken Copernicus DEM links.
- Surface water extent map processing of RTC products, which is now entirely contained in
asf-tools and its associated docker container image. This includes removing:
water_map
entrypoint to create a water map productasf_tools
environment from the hyp3-gamma docker container image
- Information about image pixel spacing to RTC product
README.md.txt
++omp-num-threads
parameter to themain()
entrypoint to limit the number of threads used by GAMMA during multiprocessing.
- Add decibel option in the README.md.txt for the RTC product
- Upgraded to asf-tools v0.4.4 from v0.4.3
- In the conda environment, install
hyp3lib
andlxml
viapip
due to anlibxml2
issue as described in #421
- Upgraded to
importlib.metadata.entry_points()
for loadingconsole_script
entry_point
functions from the deprecatedpkg_resources
package - Upgraded to asf-tools v0.4.3 from v0.4.2
- Upgraded to the base image used for the hyp3-gamma docker image to Ubuntu 22.04 from 20.04. This also changes:
- the GAMMA software
20220630
build - Python to 3.10.6 from 3.8.10
- Numpy to 1.21.5 from 1.17.4
- GDAL to 3.4.1 from 3.0.4
- the GAMMA software
- Removed buffer from water mask during unwrapped_phase calculation
- Updated metadata templates to reflect new water masking approach and link to new resources
- Added information about the end of mission for S1B to all product readme files and xml templates
- Upgraded to GAMMA software version
20220630
from20210701
- Removed the intermediate initial/fuzzy geotiffs from the water_map product package.
insar
now uploads unzipped product files (in addition to the zip archive) when using the--bucket
option
- Upgraded to asf-tools v0.4.2 from v0.4.1
- Increase the window size and ignore pixels near an edge when determining the phase unwrapping reference point for InSAR products.
- Upgraded to asf-tools v0.4.1 from v0.4.0
- Map coordinates for the phase unwrapping reference point are now reported correctly in the output metadata text file for InSAR products. Fixes #380
- Added links to reference material for the Minimum Cost Flow (MCF) phase unwrapping algorithm to the InSAR readme template and unwrapped phase png xml template
- Added language to the InSAR readme template to clarify that the sign convention used for unwrapped phase is opposite to that used for the displacement maps
- Added new HyP3 citation to the InSAR and RTC readme templates
- RTC and InSAR products are now generated using the updated 2021 release of Copernicus GLO-30 Public DEM coverage.
- Added
--include-flood-depth
option forwater_map
to produce a map of estimated flood depths.
- Output the reference point in SAR space in the meta text file. The reference point indexes start form 0.
- The amplitude threshold used for the InSAR phase unwrapping validity mask was changed from 0.2 to 0.0 (in power scale). The coherence threshold remains at 0.1, so the validity mask is now calculated based only on coherence values.
- The InSAR phase unwrapping reference point is now determined using a neighborhood coherence value. The pixels with the highest coherence are examined using a 9-pixel window to find the pixel with the highest neighborhood coherence value, which is then used as the reference point for phase unwrapping.
- Upgraded to asf-tools v0.3.2 from v0.3.1
asf-tools
conda environment, which is used by the water mapping code, is now copied from the latest asf-tools image.
asf-tools
conda environment, which is used by the water mapping code, has been (temporarily) locked to the environment as created in HyP3 GAMMA v5.1.2 to resolve some dependency issues.
- Upgraded to hyp3-lib v1.7.0 from v1.6.8
hyp3_gamma.dem
will now pull the Copernicus DEM from theus-west-2
mirror located ats3://asf-dem-west/v2/COP30
to reduce cross-region traffic
- It is now possible to inject Earthdata username and password using environment variables:
EARTHDATA_USERNAME
andEARTHDATA_PASSWORD
.
Unable to open datasource
error when providingrtc_sentinel.py
with absolute path to SAFE directory. Fixes #332
- Reference point information has been modified for clarity in the
*.txt
parameter file
- Ascending/descending and orbit number information have been added to the
*.txt
parameter file in InSAR products - The reference point coordinate information (in both SAR and map space) has been
added to the
.txt
parameter file in InSAR products
- The highest coherent pixel will be used as the starting point when unwrapping during InSAR processing
- InSAR readme and unwrapped phase png xml templates have been updated to include more information about the fringe pattern in the unwrapped phase browse images
- An
--include-displacement-maps
argument to theinsar
entrypoint which will cause both the line-of-sight and vertical displacement maps to be included.
- The
include_los_displacement
parameter toinsar_sentinel_gamma
inhyp3_gamma.insar.ifm_sentinel
has changed toinclude_displacement_maps
. Now, both the line-of-sight displacement and the vertical displacement maps will be included if this option is set toTrue
. - InSAR README and XML templates have been updated to reflect the change in displacement map options and to include more information on adjusting unwrapped phase and displacement map values relative to a user-selected reference point.
- Updated the URL for the Copernicus DEM information webpage.
- The
--include-los-displacment
argument to theinsar
entrypoint is deprecated and may be removed at any time.--include-displacement-maps
should be used instead as setting either option totrue
will cause both the line-of-sight and vertical displacement maps to be included.
hyp3_metadata
v1.3.0 has been merged into HyP3 GAMMA athyp3_gamma.metadata
generating HyP3 GAMMA products' metadata. See the metadata README for usage.
- Upgraded to the latest available GAMMA software version and related dependencies
- GAMMA software
20210701
from20191209
- Ubuntu 20.04 from 18.04
- Python 3.8.10 from 3.6.9
- GDAL 3.0.4 from 2.2.3
- GAMMA software
- Option to apply water masking to the unwrapped_phase calculation in the gamma processing
apply_water_mask
parameter toifm_sentinel.insar_sentinel_gamma
function--apply-water-mask
parameter toinsar
entrypoint-m
parameter toifm_sentinel.py
script
- InSAR products now include an ellipsoidal incidence angle GeoTIFF (in addition to local incidence angle)
when selecting the
include_inc_map
option
- Upgraded to hyp3-metadata v1.2.5 from v1.2.4
- InSAR products now include a land/water mask GeoTIFF and a corresponding ArcGIS metadata xml file
- Upgraded to hyp3-metadata v1.2.4 from v1.2.3
conda-env.yml
has been renamed toenvironment.yml
in-line with community practice- Upgraded to hyp3-lib v1.6.8 from v1.6.7
water_map
entrypoint to create a water map product- Option to output decibel scaled RTC products
--scale
parameter tortc
entrypoint now acceptsdecibel
scale
parameter tortc_sentinel.rtc_sentinel_gamma
now acceptsdecibel
- Upgraded to hyp3-metadata v1.2.3 from v1.1.0
--include-wrapped-phase
option for theinsar
entrypoint to include the wrapped phase GeoTIFF in the output product
- Updated the description of the Wrapped Interferogram in the InSAR product README, including the optional GeoTIFF
- Option to include DEM file with InSAR products
include_dem
parameter toifm_sentinel.insar_sentinel_gamma
function--include-dem
parameter toinsar
entrypoint-d
parameter toifm_sentinel.py
script
- Parameter metadata file for InSAR products now includes
Slant range near
,Slant range center
andSlant range far
attributes
- Option to include an Incidence Angle GeoTIFF with InSAR products
include_inc_map
parameter toifm_sentinel.insar_sentinel_gamma
function--include-inc-map
parameter toinsar
entrypoint-i
parameter toifm_sentinel.py
script
- Parameter metadata file for InSAR products now includes
Spacecraft height
andEarth radius at nadir
attributes
- InSAR processing via
ifm_sentinel.py
now leverages the Copernicus GLO-30 Public DEM - InSAR GeoTIFF files are now aligned to a common 40m (for 10x2 looks) or 80m (for 20x4 looks) pixel grid
- Option for RTC_GAMMA jobs to use either Copernicus GLO-30 Public DEM or legacy SRTM/NED DEMs for processing:
--dem-name
option tortc
entrypoint andrtc_sentinel.py
scriptdem_name
parameter tohyp3_gamma.rtc_sentinel.rtc_sentinel_gamma()
hyp3_gamma.dem
module for preparing GeoTIFF mosaics of the Copernicus GLO-30 Public DEM
- Upgraded to hyp3-metadata v0.4.2 from v0.2.0
- Reverted change that allows
ifm_sentinel.py
to proceed with processing when no Restituted or Precision orbit file is found. Restituted or Precision orbit files are required.
ifm_sentinel.py
will now proceed with processing when no Restituted or Precision orbit file is found- Upgraded to hyp3lib v1.6.7 from v1.6.6
- Ability to include an RGB decomposition GeoTIFF in RTC output
- an
--include-rgb
option has been added tortc_sentinel.py
- an
include_rgb
keyword argument has been added tohyp3_gamma.rtc.rtc_sentinel.rtc_sentinel_gamma
- an
- Upgraded to hyp3lib v1.6.6 from v1.6.5
rtc
now uploads unzipped product files (in addition to the zip archive) when using the--bucket
option- Upgraded to hyp3lib v1.6.5 from v1.6.4
rtc_sentinel.py
will now proceed with processing when no Restituted or Precision orbit file is found
- Resolved off-by-one error when computing days of separation for InSAR product names in
ifm_sentinel.py
- Upgraded to hyp3lib v1.6.4 from v1.6.3
- Added wrapped phase geotiff via command line option
-m
toifm_sentinel.py
RTC processing via rtc_sentinel.py
has been significantly refactored, and a number of legacy options have been
removed.
rtc.util.unzip_granule()
unzips a S1 zip file and returns the .SAFE directory name
- The parameters to
rtc_sentinel.py
andrtc.rtc_sentinel.rtc_sentinel_gamma()
have been significantly revised. Review the corresponding help for more details:rtc_sentinel.py --help
from hyp3_gamma.rtc.rtc_sentinel import rtc_sentinel_gamma; help(rtc_sentinel_gamma)
- A refactored
rtc.coregistration
module has replacedrtc.check_coreg
. Thecheck_coreg.py
entrypoint has been removed. - Upgraded to hyp3_metadata v0.2.0 from v0.1.4
- Legacy support for the GIMP and REMA DEMs has been removed, including the
rtc.smoothem
module and the correspondingsmoothem.py
entrypoint. - User-provided DEMs in GAMMA format are no longer supported. DEMs in GeoTIFF format are still supported.
- The
output/out_name
options to set the name of the output product have been removed. - The
shape
option to subset to the bounds of a shapefile has been removed. Subsetting to a bounding box or to a user-provided DEM are still supported. - The
terms
option has been removed. DEM matching will always use a one-term offset polynomial. - The
par
option to provide a pre-generateddiff_par
offset file has been removed. - The
fail/dead_flag
options have been removed. Processing will always proceed using dead reckoning whendem_matching
is selected and co-registration fails. hyp3_gamma.util.find_and_remove()
has been removed.
hyp3-insar-gamma
v2.2.1 has been merged into HyP3 GAMMA athyp3_gamma.insar
to provide InSAR processing of Sentinel-1.hyp3_gamma
now provides these additional entrypoints:insar
provides the InSAR process interface to HyP3ifm_sentinel.py
is the InSAR (science code) processorinterf_pwr_s1_lt_tops_proc.py
for coregistering Sentinel-1 SLC data and DEMsunwrapping_geocoding.py
for unwrapping and geocoding Sentinel-1 INSAR products from GAMMA
hyp3-gamma
entrypoint now allows InSAR processing through the++process insar
option
HyP3 RTC GAMMA as been transformed into HyP3 GAMMA; a processor based plugin
-
hyp3_rtc_gamma
has been transformed into ahyp3_gamma
packagehyp3_rtc_gamma.__init__
has moved tohyp3_gamma.__init__
hyp3_rtc_gamma.__main__
has moved tohyp3_gamma.__main__
hyp3_rtc_gamma.check_coreg
has moved tohyp3_gamma.rtc.check_coreg
hyp3_rtc_gamma.rtc_sentinel
has moved tohyp3_gamma.rtc.rtc_sentinel
hyp3_rtc_gamma.smoothem
has moved tohyp3_gamma.rtc.smoothem
-
hyp3_gamma
now provides these entrypoints:hyp3_gamma
is the main HyP3 entrypointrtc
provides the RTC process interface to HyP3rtc_sentinel.py
is the RTC (science code) processorcheck_coreg.py
for checking the results of the GAMMA coregistration processsmoothdem.py
for smoothing and filling holes in DEMs
-
rtc_sentinel.py
now uses GAMMA's updatedmk_geo_radcal2
instead ofmk_geo_radcal
to remove no-data values in lakes and rivers -
Upgraded to hyp3lib v1.6.3 from v1.6.2
HyP3 v1 is no longer supported as of this release.
- A new
--include-scattering-area
option has been added tortc_sentinel.py
andhyp3_rtc_gamma_v2
to include a geotiff of scattering area in the product package. This supports creation of composites of RTC images using Local Resolution Weighting per Small (2012) https://doi.org/10.1109/IGARSS.2012.6350465.
- Upgraded to hyp3_metadata v0.1.4 from v0.1.2
rtc_sentinel.py
no longer creates a flattened backscatter image.- The
hyp3_rtc_gamma
package entrypoint and HyP3 v1 support has been removed. rtc_gamma
package entrypoint will now pass arguments to thehyp3_rtc_gamma_v2
entrypoint by default.
rtc_sentinel.py
now runs successfully when--nocrosspol
is specified (#179)
- Upgraded to hyp3lib v1.6.2 from v1.6.1
- Upgraded to hyp3lib v1.6.1 from v1.6.0
README.txt
has been renamed toREADME.md.txt
README.md.txt
and.xml
files are now generated using hyp3-metadata-templates v0.1.1file_type
tags are now applied to browse and thumbnail images uploaded to S3 to facilitate consistent ordering in HyP3 Api responses
- Removed the all-white placeholder thumbnail from
_ls_map.tif.xml
- Added cursory developer setup instructions in
README.md
- Upgraded to hyp3-lib v1.5.0 from v1.4.1.
- RTC Gamma products no longer include an ISO 19115-2 .iso.xml metadata file.
- ASF MapReady is no longer a dependency and has been removed.
- Files now get uploaded to S3 with a
file_type
in v2 tag indicating what the file is - Files no longer get a prefix based on file type in v2
- Removed
lo_flag
fromrtc_sentinel
since it duplicates the functionality ofresolution
- Input scenes are now downloaded directly from NGAP distribution endpoint rather than ASF's datapool
- Updates the output product README to include usage guidelines with acknowledgment and citation information
- Removes the
ESA_citation.txt
file from the output product as it's included in the README - Drops the "This is an RTc product from ..." blurb from the bottom of product notification emails
- Incompatible granules will fail much earlier in the processing chain
- Non-functional support for non-Sentinel-1 products
- Implemented new naming convention for output products. The names of output zips, folders, and files now all share a common format.
- Revised README content:
- Updated description of product naming scheme
- Removed references to EUDEM, GEMP, and REMA DEMs that are no longer used since v2.0.0.
- Clarified which RTC processing steps are performed when DEM matching is or is not requested.
- Orbit files are now downloaded once at the start of processing, rather than once for each polarization image.
- Orbit search priority is now POEORB from ESA, POEORB from ASF, RESORB from ESA, RESORB from ASF.
main_v2()
now downloads Sentinel-1 data directly from ASF's NGAP distribution endpoint, rather than datapool.- Upgrade to hyp3-lib v1.4.1 from 1.3.0.
- Install hyp3-lib via conda instead of pip
- Resolved issue where thumbnail filenames ended in ..png rather than .png
- The v2 entrypoint will now create and upload thumbnail images to S3 in addition to browse images
- The v2 entrypoint will now upload browse images and thumnail images in addition to the zip file.
- Upgrade to hyp3-lib 1.3.0. In particular, geotiff products no longer include overviews.
- Eliminated seprate "low-res" (1024x) and "high-res" (2048x) browse image resolutions in favor of a single 2048x image.
- Updates the minimum required
hyp3lib
andhyp3proclib
version to bring in theget_dem.py
NoData bugfix and thedefault_rtc_resolution
bugfix, respectively
- The v2 entrypoint will now make up to three retry attempts if it fails to download the input granule from the ASF archive.
- Changed the name of the product README file to
<product_name>.README.txt
, e.g.S1A_IW_RT30_20170708T161200_G_gpn.README.txt
- Calls to mk_geo_radcal will no longer include the
-j do not use layover-shadow map in the calculation of pixel_area
flag. The layover-shadow map will now be consistently applied to all products. - Upgraded to hyp3-lib v1.2.2
- Removed custom blank_bad_data.py from mk_geo_radcal processing. Border pixels for older GRD products
are now cleaned using the default
make_edge
setting ofpar_S1_GRD
.
- hyp3-v2 output products are now packaged in a .zip file similar to hyp3-v1 products
This is a significant refactor of hyp3-gamma
into:
- A
pip
installable package calledhyp3_rtc_gamma
- A stand alone, container-based HyP3 plugin
NOTE: There are significant changes to the overall repository structure and will break all existing HyP3 workflows!
- Python 2. This package now requires Python 3.6+
- A patched version of GAMMA's
mk_geo_radcal
and an associatedblank_bad_data.py
script
- A packaging and testing structure -- now pip installable and testing is done via pytest
- Previous command line scripts are now registered entrypoints and created when the package is
pip
installed:check_coreg.py
rtc_sentinel.py
smooth_dem_tiles.py
- 'xml2meta.py'
- Previous command line scripts are now registered entrypoints and created when the package is
- A Dockerfile to build the HyP3 plugin
- A CI/CD workflow setup, which will build and publish the docker container
- The processing script that used to live in the now depreciated
cloud-proj
repository has been moved into the package ashyp3_rtc_gamma.__main__
and also registered as ahyp3_rtc_gamma
entrypoint - A second, in development, entrypoint for HyP3 v2 has been added to
hyp3_rtc_gamma.__main__
- All of
src/
is now contained in thehyp3_rtc_gamma
package - All of
etc/
is now contained inhyp3_rtc_gamma.etc
- The version number is now tracked automatically via git tags instead of in
etc/version.txt