otb issueshttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues2021-10-07T07:26:35Zhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2214Implement the SARParam::ToJSON function2021-10-07T07:26:35ZJulien OsmanImplement the SARParam::ToJSON functionThe SARParam::ToJSON function still needs to be implemented.
We also need to implement a function to read from a JSON file (SARParam::FromJSON ?)The SARParam::ToJSON function still needs to be implemented.
We also need to implement a function to read from a JSON file (SARParam::FromJSON ?)8.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2209Release 7.42022-01-07T10:02:14ZCédric TraizetRelease 7.4[[_TOC_]]
We are ready to release OTB version 7.4.0. The following steps need to be done:
## Scope of the release:
* [x] !828: New TerraSarX sensor model, based on the unfinished work of !553
* [x] !833: Add deprecate tags in preparat...[[_TOC_]]
We are ready to release OTB version 7.4.0. The following steps need to be done:
## Scope of the release:
* [x] !828: New TerraSarX sensor model, based on the unfinished work of !553
* [x] !833: Add deprecate tags in preparation for release 8.0.0
* [x] !838: ExtractROI: Test points inversion on index instead of coordinate
* [x] !840: Remove the "working around a kernel bug" warning during OTB binary package installation
* [x] !839: Rename the noise parameter in SARCalibration
* [x] !831: bug fixes in Sentinel 1 calibration
* [x] !836: Use Horner method for polynomial evaluation in SAR calibration
* [x] !835: Update geotiff in the Superbuild
* [x] !837: Fix Superbuild compilation with gcc-8
* [x] backport of !821: update expat
* [x] backport of !788: Fix build issue when libSVM is OFF or libsiftfast is OFF and Testing ON
* [x] backport of !822: Update openCV version to 4.5.1 for the SuperBuild
## Release Candidate
### 1. Branches
* [x] **(if major or minor release)** Feature freeze: [create the new release branch](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#create-release-branch)
* [x] **(if patch release)** Work on the already existing branch `release-7-4`
* [x] Make sure the version number in `CMakeLists.txt` is 7.4.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release candidate](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag)
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive)
* [x] Release Candidate announcement on the forum
## Release
### 1. Branches
* [x] Make sure the version number in `CMakeLists.txt` is 7.4.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Fix compilation warnings on CI
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag)
* [x] **(if major or minor release)**: Merge the release into develop
* [x] **(if it's the latest release)**: Merge the release into master
* [x] **(if patch release)**: Backport fixes
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] WordPress page "Home" and "Download" pages
* [x] Upload OTB source archive to [Zenodo](https://zenodo.org/) to create a unique Digital Object Identifier (DOI)
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive)
* [x] Release announcement
* [x] On the [forum](https://forum.orfeo-toolbox.org/)
* [x] On the [blog](https://www.orfeo-toolbox.org/blog/)
* [x] On [Twitter](https://twitter.com/orfeotoolbox)
* [x] Forward announcement to news_item@osgeo.org ([OSGeo news](https://www.osgeo.org/foundation-news/))
* [ ] Remove public branches related to MR or bugfix merged before the release7.4.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2207Fix Sentinel-1 SAR Calibration with noise removal2021-09-30T13:44:00ZMickael SavinaudFix Sentinel-1 SAR Calibration with noise removal### Description
SAR Calibration output a wrong results when thermal noise removal is activated :
- wrong noise lut is used (VV is used for VV and VH
- interpolation formula is buggy (cas issue)
### Steps to reproduce
Run SAR Calibrati...### Description
SAR Calibration output a wrong results when thermal noise removal is activated :
- wrong noise lut is used (VV is used for VV and VH
- interpolation formula is buggy (cas issue)
### Steps to reproduce
Run SAR Calibration with noise parameter set to False and compare to SNAP and manual computation.
### Configuration information
- OS: All
- OTB: 7.37.4.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2200Cannot set RAM parameter with SetParameters() function2021-07-06T13:47:50ZNicolas NarçonCannot set RAM parameter with SetParameters() functionIn Python, I want to set the RAM parameter (available memory for processing), using `SetParameters()` but it fails.
Small piece of code for reproducing the error :
```python
import otbApplication
app = otbApplication.Registry.CreateApp...In Python, I want to set the RAM parameter (available memory for processing), using `SetParameters()` but it fails.
Small piece of code for reproducing the error :
```python
import otbApplication
app = otbApplication.Registry.CreateApplication('BandMath')
app.SetParameters({'il': ['any_image.tif'], 'exp': 'im1b1', 'out': 'output.tif', 'ram': 512})
```
Error raised :
> NotImplementedError: Wrong number or type of arguments for overloaded function 'Application_SetParameterString'.
>
> Possible C/C++ prototypes are:
>
> Application::SetParameterString(std::string,std::string,bool)
>
> Application::SetParameterString(std::string,std::string)
It seems to fail in the `SetParameterValue()` function. Indeed, when looking at the code of `SetParameterValue` inside **otbApplication.py**, ParameterType_RAM is handled as a string whereas it should be handled as an int.
### Configuration information
OTB version 7.28.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2192Release 7.3.02021-07-06T13:49:22ZThibaut ROMAINRelease 7.3.0We are ready to release OTB version 7.3.0. The following steps need to be done:
## Release Candidate
### 1. Branches
* [x] **(if major or minor release)** Feature freeze: [create the new release branch](https://gitlab.orfeo-toolbox.or...We are ready to release OTB version 7.3.0. The following steps need to be done:
## Release Candidate
### 1. Branches
* [x] **(if major or minor release)** Feature freeze: [create the new release branch](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#create-release-branch)
* [x] Make sure the version number in `CMakeLists.txt` is 7.3.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release candidate](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag)
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive)
* [x] Release Candidate announcement on the forum
## Release
### 1. Branches
* [x] Make sure the version number in `CMakeLists.txt` is 7.3.0
### 2. Housekeeping
* [x] In this story, make a list of blocking issues for the release (if any)
* [x] Fix compilation warnings on CI
* [x] Update release notes (walk the GitLab MR merged history and log all improvements)
* [x] Update the date in RELEASE_NOTES.txt
* [x] Check [SonarQube](https://sonar.orfeo-toolbox.org/dashboard?id=orfeotoolbox-otb)
* [x] Run Debian [spelling](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#spelling-check) checker
* [x] Run shellcheck script from [OTB-Devutils/Scripts/](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb-devutils/blob/master/Scripts/run_shellcheck.sh)
* [x] [Update translation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#translation-for-monteverdi-mapla) for Monteverdi and Mapla
* [x] [Sanity check the binary packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#standalone-packages-sanity-check)
* [x] Windows
* [x] Linux
* [x] Mac
* [x] Test QGIS on qgis docker image
### 3. Actual release
Once all blocking issues are closed, and the previous steps are done:
* [x] [Tag the release](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#release-tag)
* [ ] **(if major or minor release)**: Merge the release into develop
* [ ] **(if it's the latest release)**: Merge the release into master
* [ ] **(if patch release)**: Backport fixes
* [x] Update GIT_TAG for all official remote modules (if needed)
### 4. Publish and plan next release
* [x] [Prepare and upload source packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#prepare-and-upload-source-packages)
* [x] [Promote staging packages](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#promote-staging-packages)
* [x] [Update documentation](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#update-documentation)
* [x] Cookbook
* [x] Doxygen
* [x] WordPress page "Home" and "Download" pages
* [x] Upload OTB source archive to [Zenodo](https://zenodo.org/) to create a unique Digital Object Identifier (DOI)
* [x] [Update the SuperBuild archive](https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/wikis/Help-for-release-actions#superbuild-archive)
* [x] Release announcement
* [x] On the [forum](https://forum.orfeo-toolbox.org/)
* [x] On the [blog](https://www.orfeo-toolbox.org/blog/)
* [x] On [Twitter](https://twitter.com/orfeotoolbox)
* [x] Forward announcement to news_item@osgeo.org ([OSGeo news](https://www.osgeo.org/foundation-news/))
* [ ] Remove public branches related to MR or bugfix merged before the release7.3.0Thibaut ROMAINThibaut ROMAINhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2188Update Superbuild dependencies (major version)2022-01-07T11:15:51ZMickael SavinaudUpdate Superbuild dependencies (major version)Several dependencies can be updated at major level:
- [ ] glew from 1.13.0 to 2.1.0
- [ ] freeglut from 2.8.1 to 3.2.1
- [ ] libjpeg-turbo from 1.4.1 to 2.0.6
- [x] proj from 6.2.1 to 8.0.0
- [ ] qt from 5.11.3 to 6
- [x] swig from 3.0.7...Several dependencies can be updated at major level:
- [ ] glew from 1.13.0 to 2.1.0
- [ ] freeglut from 2.8.1 to 3.2.1
- [ ] libjpeg-turbo from 1.4.1 to 2.0.6
- [x] proj from 6.2.1 to 8.0.0
- [ ] qt from 5.11.3 to 6
- [x] swig from 3.0.7 to 4.0.28.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2187Update Superbuild dependencies (minor version)2022-01-07T11:15:36ZMickael SavinaudUpdate Superbuild dependencies (minor version)Several dependencies can be updated at minor level :
- [ ] Boost from 1.69 to 1.76
- [ ] CURL from 7.54.1 to 7.76.1
- [x] EXPAT from 2.1.0 (or 2.1.1) to 2.3.0 done in release-7.3 and develop
- [x] GEOS from 3.6.1 (or 3.6.5) to 3.9.1
- [...Several dependencies can be updated at minor level :
- [ ] Boost from 1.69 to 1.76
- [ ] CURL from 7.54.1 to 7.76.1
- [x] EXPAT from 2.1.0 (or 2.1.1) to 2.3.0 done in release-7.3 and develop
- [x] GEOS from 3.6.1 (or 3.6.5) to 3.9.1
- [x] geotiff from 1.5.1 to 1.6.0
- [ ] gsl from 2.3.0 to 2.6.0
- [ ] hdf5 from 1.10.1 (1.10.7) to 1.12
- [ ] libjpeg-turbo from 1.4.1 (or 1.4.2) to 1.5.3
- [ ] netcdf-c from 4.7.3 (4.7.4) to 4.8.0
- [x] OPENCV from 4.1.1 (4.1.2) to 4.5.2
- [x] OPENSSL from 1.0.1 to 1.1.1 done in release-7.3 for security reasons
- [ ] OpenSceneGraph from 3.4.0 (3.4.1) to 3.6.5
- [ ] proj from 6.2.1 to 6.3.2.tar.gz
- [x] qt from 5.11.3 to 5.15.2
- [ ] tiff from 4.2.0 to 4.3.0
- [ ] OpenJPEG from 2.3.0 to 2.4.08.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2186Update superbuild dependencies (patch version)2021-04-29T12:44:32ZMickael SavinaudUpdate superbuild dependencies (patch version)Several dependencies can be updated at patch level :
- [x] EXPAT from 2.1.0 to 2.1.1 Upated to 2.3 due to security issue : !815
- [x] fftw from 3.3.8 to 3.3.9 #2189
- [x] GEOS from 3.6.1 to 3.6.5 #2190
- [ ] hdf5 from 1.10.1 to 1.10.7...Several dependencies can be updated at patch level :
- [x] EXPAT from 2.1.0 to 2.1.1 Upated to 2.3 due to security issue : !815
- [x] fftw from 3.3.8 to 3.3.9 #2189
- [x] GEOS from 3.6.1 to 3.6.5 #2190
- [ ] hdf5 from 1.10.1 to 1.10.7
- [x] libjpeg-turbo from 1.4.1 to 1.4.2
- [x] MUPARSERX from 4.0.7 to 4.0.8
- [x] netcdf-cfrom 4.7.3 to 4.7.4
- [x] OPENCV from 4.1.1 to 4.1.2
- [x] OpenSceneGraph /OpenThreads from 3.4.0 to 3.4.1
- [x] libpng 1.6.16 to 1.6.37
- [x] qwt from 6.1.5 to 6.1.6
- [x] swig from 3.0.7 to 3.0.12
- [x] zlib from 1.2.8 to 1.2.11
- [x] GDAL cf. #2183
- [x] OpenJPEG cf. #2184
These updates has been done in release-7.3 branch, they will be backported to develop7.3.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2182Take into account AREA_OR_POINT metadata for GeoTIFF images2021-11-08T10:03:05ZThibaut ROMAINTake into account AREA_OR_POINT metadata for GeoTIFF imagesThe geoTIFF format provides 2 ways of describing the raster space : http://geotiff.maptools.org/spec/geotiff2.5.html
GDAL correctly handles those two ways since 3.2.0. (see : https://github.com/opengeospatial/ogcapi-coverages/issues/92)...The geoTIFF format provides 2 ways of describing the raster space : http://geotiff.maptools.org/spec/geotiff2.5.html
GDAL correctly handles those two ways since 3.2.0. (see : https://github.com/opengeospatial/ogcapi-coverages/issues/92)
In OTB 7.x, the metadata key AREA_OR_POINT was read in the keywordlist allowing GDAL to determine if a shift has to be applied on the GCP position. This metadata key was written on the output image, so input and output images had the same raster space.
In OTB 8.0, this metadata is not read, thus the output images always have a default value for AREA_OR_POINT (Area, as described in gdal documentation), instead of taking the value from the input image. This causes problems because GDAL now makes a differences between the two modes, which results failing tests due to a difference of AREA_OR_POINT between the baseline and the tests, leading to shifted GCPs.
Actions :
- Add "AREA_OR_POINT" key in otbMetadataKey
- Read it in GDALImageIO
- Write it in GDALImageIO
- Update the baseline => cherry-pick the commit d20ac1c13dc14c2be4cc14c965709d2e6e648957 from release-7.38.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2181K parameter has no effect in KNN classifier2021-05-05T07:43:51ZCédric TraizetK parameter has no effect in KNN classifierBug reported by users on [the forum](https://forum.orfeo-toolbox.org/t/problem-with-input-k-in-knn-trainvectorclassifier/956)
When using the KNN classifier, for example in `TrainVectorClassifier` or `TrainImageClassifier`, the input num...Bug reported by users on [the forum](https://forum.orfeo-toolbox.org/t/problem-with-input-k-in-knn-trainvectorclassifier/956)
When using the KNN classifier, for example in `TrainVectorClassifier` or `TrainImageClassifier`, the input number of neighbor has no impact on the trained classifier.
Step to reproduce: (OTB 7.2.0)
``` bash
otbcli_TrainVectorClassifier -io.vd trainExtract.shp -io.out knn.txt -cfield classlabel -feat value_0 value_1 -classifier knn -valid.vd validExtract.shp -classifier.knn.k 10
[...]
2021-04-16 11:43:46 (INFO) TrainVectorClassifier: Confusion matrix (rows = reference labels, columns = produced labels):
[0] [1] [2] [3]
[0] 25 0 1 0
[1] 0 296 0 0
[2] 9 0 76 7
[3] 0 21 0 593
[...]
otbcli_TrainVectorClassifier -io.vd trainExtract.shp -io.out knn.txt -cfield classlabel -feat value_0 value_1 -classifier knn -valid.vd validExtract.shp -classifier.knn.k 1
[...]
2021-04-16 11:43:46 (INFO) TrainVectorClassifier: Confusion matrix (rows = reference labels, columns = produced labels):
[0] [1] [2] [3]
[0] 25 0 1 0
[1] 0 296 0 0
[2] 9 0 76 7
[3] 0 21 0 593
[...]
```7.3.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2177Document the supported sensors2021-12-01T07:17:10ZJulien OsmanDocument the supported sensors### Target documentation resources
Either the CookBook or the websites. Or both (a complete description on the cookbook and a summary on the webpage)?
### Change requested
Describe precisely the sensors supported by OTB. "All sensor s...### Target documentation resources
Either the CookBook or the websites. Or both (a complete description on the cookbook and a summary on the webpage)?
### Change requested
Describe precisely the sensors supported by OTB. "All sensor supported by GDAL" is not accurate. OTB doesn't read the metadata in the same way for all the sensor. Some applications don't work for every sensor. All this subtleties need to be documented.8.0.0Julien OsmanJulien Osmanhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2175Imprecise error messages in Python API for `SetParameters`2022-01-20T14:51:10ZLuc HermitteImprecise error messages in Python API for `SetParameters`When we pass data of the wrong type or even `None` to `otb.Application.SetParams()`, we have no way to know what we did wrong.
In the stack trace we see messages like:
```
File "/path/to/OTB-7.2.0-Linux64/lib/python/otbApplication.p...When we pass data of the wrong type or even `None` to `otb.Application.SetParams()`, we have no way to know what we did wrong.
In the stack trace we see messages like:
```
File "/path/to/OTB-7.2.0-Linux64/lib/python/otbApplication.py", line 2920, in SetParameterString
val = _otbApplication.Application_SetParameterString(self, parameter, value, hasUserValueFlag)
TypeError: in method 'Application_SetParameterString', argument 3 of type 'std::string'
```
But, which parameter is it? What is its value?
Instead, we could have
```
File "/home/luc/dev/tests/OTB-7.2.0-Linux64/lib/python/otbApplication.py", line 3239, in SetParameterValue
raise TypeError('Expected a string for %s, got %s for %s' % (paramKey, type(value), value))
TypeError: Expected a string for elev.geoid, got <class 'NoneType'> for None
```
thanks to something like
```python
def SetParameterValue(self, paramKey, value):
paramType = self.GetParameterType(paramKey)
if paramType in [ParameterType_RAM,
ParameterType_String, ParameterType_InputFilename,
ParameterType_OutputImage, ParameterType_OutputVectorData,
ParameterType_OutputFilename,
ParameterType_Directory, ParameterType_InputImage,
ParameterType_InputVectorData]:
if not isinstance(value, str):
raise TypeError('Expected a string for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterString(paramKey, value)
elif paramType in [ParameterType_InputImageList, ParameterType_InputVectorDataList,
ParameterType_InputFilenameList, ParameterType_StringList,
ParameterType_ListView]:
if not isinstance(value, list):
raise TypeError('Expected a list for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterStringList(paramKey, value)
elif paramType in [ParameterType_Int, ParameterType_Radius]:
if not isinstance(value, int):
raise TypeError('Expected an int for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterInt(paramKey, value)
elif paramType in [ParameterType_Float]:
if not isinstance(value, float):
raise TypeError('Expected a float for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterFloat(paramKey, value)
elif paramType in [ParameterType_Double]:
if not isinstance(value, float):
raise TypeError('Expected a float for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterDouble(paramKey, value)
elif paramType in [ParameterType_Bool]:
if not isinstance(value, bool):
raise TypeError('Expected a bool for %s, got %s for %s' % (paramKey, type(value), value))
return self.SetParameterString(paramKey, str(value) )
elif paramType in [ParameterType_Group]:
return ApplicationProxy(self, paramKey)
elif paramType in [ParameterType_Choice]:
return ApplicationProxy(self, paramKey, value)
else:
print ("Unsupported parameter type '%s' with key '%s'" %(self.GetParameterTypeAsString(paramType) ,paramKey))
return
```
All I've added are tests + `raise`. It seems that some implicit conversions work like `string` to `bool` though. A more precise analysis shall be done in order to ignore the implicit conversions which are already supported.8.1.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2170Update python version in binaries package2021-11-05T10:49:26ZMickael SavinaudUpdate python version in binaries packageCurrently the python version used to generate python binding of OTB binaries package is 3.5. It is no more supported cf. [here](https://endoflife.date/python).
A choice could be to move to 3.6 but it will de dropped in December 2021. Ho...Currently the python version used to generate python binding of OTB binaries package is 3.5. It is no more supported cf. [here](https://endoflife.date/python).
A choice could be to move to 3.6 but it will de dropped in December 2021. However it is the package system version of Ubuntu 18.04.8.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2167Sentinel-1 SAR calibration: VH band deviation2021-12-17T09:55:04ZJeroen DriesSentinel-1 SAR calibration: VH band deviationWe successfully integrated Sentinel-1 backscatter computation based on OTB in our openEO backend:
https://github.com/Open-EO/openeo-geopyspark-driver/blob/master/openeogeotrellis/collections/s1backscatter_orfeo.py#L327
The workflow is d...We successfully integrated Sentinel-1 backscatter computation based on OTB in our openEO backend:
https://github.com/Open-EO/openeo-geopyspark-driver/blob/master/openeogeotrellis/collections/s1backscatter_orfeo.py#L327
The workflow is derived from S1Tiling, and uses SARCalibration and Orthorectification to compute Sigma0 for a given area of interest.
We now compared the results to two other implementations. This shows that the correspondence is very good for the VV band, but not entirely exact for VH. This is shown in the figure below. Would it be possible to improve VH to get an equally good result as VV?
OTB version: 7.2.0, running on CentOS 7.
![sigma0_comparison](/uploads/0b6a8c0b52ea485c3758dcc1ea6dd3a1/sigma0_comparison.png)8.0.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2164Broken links in DownloardSRTMTiles2021-12-01T07:17:09ZCédric TraizetBroken links in DownloardSRTMTilesThe [DownloadSRTMTiles](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_DownloadSRTMTiles.html) allows downloading SRTM tiles corresponding to the input images and vectors extent. But the download link used seems broken (...The [DownloadSRTMTiles](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_DownloadSRTMTiles.html) allows downloading SRTM tiles corresponding to the input images and vectors extent. But the download link used seems broken (as of 03/03/2021). It looks like accessing https://dds.cr.usgs.gov/ now requires login, something that is not possible with application.
The links on JPL SRTM page are broken. A similar bug has been reported on the [readhgt Matlab module page](https://ww2.mathworks.cn/matlabcentral/fileexchange/36379-readhgt-import-download-nasa-srtm-data-files-hgt?s_tid=prof_contriblnk)
``` bash
otbcli_DownloadSRTMTiles -il S2ROI.tif -tiledir /tmp/SRTM
2021-03-03 10:27:24 (INFO) DownloadSRTMTiles: Default RAM limit for OTB is 256 MB
2021-03-03 10:27:24 (INFO) DownloadSRTMTiles: GDAL maximum cache size is 794 MB
2021-03-03 10:27:24 (INFO) DownloadSRTMTiles: OTB will use at most 12 threads
2021-03-03 10:27:25 (INFO) DownloadSRTMTiles: Total candidate tiles: 9
2021-03-03 10:27:25 (INFO) DownloadSRTMTiles: --> 0 missing tiles in SRTM (coverage ratio is 100%)
2021-03-03 10:27:25 (INFO) DownloadSRTMTiles: --> 0 tiles already in the directory
2021-03-03 10:27:25 (INFO) DownloadSRTMTiles: --> 9 tiles to download
2021-03-03 10:27:25 (INFO) DownloadSRTMTiles: Downloading tile N41W005 ...
2021-03-03 10:27:26 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N41W005.hgt.zip
2021-03-03 10:27:26 (INFO) DownloadSRTMTiles: Downloading tile N41W004 ...
2021-03-03 10:27:27 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N41W004.hgt.zip
2021-03-03 10:27:27 (INFO) DownloadSRTMTiles: Downloading tile N41W003 ...
2021-03-03 10:27:28 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N41W003.hgt.zip
2021-03-03 10:27:28 (INFO) DownloadSRTMTiles: Downloading tile N42W005 ...
2021-03-03 10:27:29 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N42W005.hgt.zip
2021-03-03 10:27:29 (INFO) DownloadSRTMTiles: Downloading tile N42W004 ...
2021-03-03 10:27:29 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N42W004.hgt.zip
2021-03-03 10:27:29 (INFO) DownloadSRTMTiles: Downloading tile N42W003 ...
2021-03-03 10:27:30 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N42W003.hgt.zip
2021-03-03 10:27:30 (INFO) DownloadSRTMTiles: Downloading tile N43W005 ...
2021-03-03 10:27:31 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N43W005.hgt.zip
2021-03-03 10:27:31 (INFO) DownloadSRTMTiles: Downloading tile N43W004 ...
2021-03-03 10:27:32 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N43W004.hgt.zip
2021-03-03 10:27:32 (INFO) DownloadSRTMTiles: Downloading tile N43W003 ...
2021-03-03 10:27:33 (WARNING) DownloadSRTMTiles: Can't access tile : https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N43W003.hgt.zip
```8.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2161Pleiades : improve input DIMAP support2021-04-06T20:32:40ZThibaut ROMAINPleiades : improve input DIMAP support### Description
When a user provides a DIMAP as an input of an OTB application (instead of a jp2/tif), the metadata read by OTB are not correct which leads to issues in the application's output. This is due to GDAL's DIMAP driver not gi...### Description
When a user provides a DIMAP as an input of an OTB application (instead of a jp2/tif), the metadata read by OTB are not correct which leads to issues in the application's output. This is due to GDAL's DIMAP driver not giving the same metadata as the JP2. In OTB 7.x, the dimap metadata reading was done using OSSIM, which has been removed in OTB 8.x
### Steps to reproduce
In OTB 8.x , calling `OpticalCalibration -in DIM_PHR.XML` leads to the following error : `Unknown sensor, Additional parameters are necessary, please provide them`
The same kind of error happens in Orthorectification for example
### Configuration information
Reproduced on Ubuntu 18.04, OTB 8.0-alpha8.0.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2160Implements otb::SARSensorModel2021-09-06T21:39:55ZCédric TraizetImplements otb::SARSensorModelThis issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
Implements a new class `otb::SarSensorModel`, that provides the same services as `otb::SARSensorModelAdapters` without relying on Ossim.
#### A...This issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
Implements a new class `otb::SarSensorModel`, that provides the same services as `otb::SARSensorModelAdapters` without relying on Ossim.
#### Analysis
The following methods should be implemented
- [x] WorldToLineSample, WorldToLineSampleYZ, WorldToSatPositionAndVelocity: inverse sar geolocation, algorithm reference: Guide to ASAR geocoding (ref RSL-ASAR-GC-AD).
- [x] LineSampleToWorld: direct sar geolocation (iterative use of WorldToLineSample).
- [ ] Deburst: perform a deburst operation, and return a vector of lines range of lines to keep in the image file.
- [x] BurstExtraction: extration of one burst.
- [x] DeburstAndConcatenate: perform a deburst and concatenation operation, and return the vector of lines and the vector of samples to keep in the image file.
- [ ] Overlap: estime the overlap area between two bursts and return the vector of lines and the vector of samples.
This can be done in different merge requests.
#### Acceptance criterions
- [x] All re-implemented functionalities should be compared to the results of `otb::SARSensorModelAdapters` in tests. Note that at this point otb::SarSensorModel is not used in high level classes.
- [x] The documentation is up to date.
#### Risk management
| Risk | Likelihood | Impact | Action |
| ---- | ---------- | ------ | ------ |
| Some functionalities of OSSIM are not easily re-implemented with GDAL or PROJ | medium | medium | |
| There is a significant difference between OSSIM's and OTB's results | low | high | |8.0.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2159Use SAR metadata in SAR calibration filters2021-06-09T05:03:56ZCédric TraizetUse SAR metadata in SAR calibration filtersThis issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
SAR metadata parsing has been implemented in https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/761 and https://gitlab.orfeo-toolb...This issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
SAR metadata parsing has been implemented in https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/761 and https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/707, but SAR calibration filters (`SarRadiometricCalibrationToImageFilter` `SarBrightnessFilter`) still uses metadata parsed by Ossim. These filters should be refactored to use the metadata contained in the metadata dictionary to become independent of Ossim.
#### Analysis
Using the metadata dictionary contained in the input image will allow some simplification of the code of these filters. They currently need to instantiate a `SarImageMetadataInterface` from the SarImageMetadataInterfaceFactory using the input keywordlist to retrieve the metadata. With the refactoring all required data will be contained in the image metadata.
### Acceptance criterions
Verify non regression on the tests of these filters and of the `SARCalibration` application
#### Risk management
| Risk | Likelihood | Impact | Action |
| ---- | ---------- | ------ | ------ |8.0.0Julien OsmanJulien Osmanhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2158TerraSar-X noise removal does not work as expected2022-01-07T10:56:10ZCédric TraizetTerraSar-X noise removal does not work as expected[SARCalibration](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_SARCalibration.html?highlight=sarcalibration) has a boolean parameter `noise` that can be used to take into account the noise contribution to the signal. Th...[SARCalibration](https://www.orfeo-toolbox.org/CookBook-develop/Applications/app_SARCalibration.html?highlight=sarcalibration) has a boolean parameter `noise` that can be used to take into account the noise contribution to the signal. This parameter is only used for TerraSAR-X products
Setting this parameter to `true` actually deactivate noise compensation, which is a bit weird in my opinion. The SAR recipe is actually wrong when this parameter is introduced: https://www.orfeo-toolbox.org/CookBook-develop/recipes/sarprocessing.html#calibration
I don't think this parameter works as expected, in fact, SARCalibration of TerraSar-X products with noise=true seems to always lead to a black image (there is no hyperparameter to set, everything should be automatic). Maybe something is wrong in the implementation. I didn't find a reference in the code source, but the algorithm implemented in probably the one described in [this document](https://www.intelligence-airbusds.com/en/9315-radiometric-calibration-of-terrasar-x-data)
This actually not tested. There is no TerraSAR test for the application. There are several test for `SarRadiometricCalibrationToImageFilter`, the associated filter, but none of them use the noise parameter. I think this was not intended, because some test specifically deactivate the noise parameter, while other use the default value (`false`).
**Update 08/11/21:** The `noise` parameter has been renamed to `remove_noise`. The problem with TerraSAR-X noise removal remains. The issue has been renamed accordingly8.1.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/issues/2154Implement SAR metadata parsing from geom files2021-04-06T20:30:31ZJulien OsmanImplement SAR metadata parsing from geom filesThis issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
In !761, the parsing of SAR metadata from raw products has been refactored to use the new metadata framework introduced in !707. To ensure backwar...This issue is part of the **SAR sensor models refactoring story** (#2142)
#### Rationale
In !761, the parsing of SAR metadata from raw products has been refactored to use the new metadata framework introduced in !707. To ensure backward compatibility, OTB should also be able to read metadata from geom files. Generic metadata parsing from geom has been added in !759, but metadata specific to SAR products were not parsed in the ImageMetadataInterface classes. The purpose of this issue is to adds parsing from geom in SAR products.
#### Analysis
We need to upgrade the `parse` method of the SAR ImageMetadataInterfaces, in the same way it was done in !770.
Sensors to update:
- [x] CosmoSkyMed
- [x] Radarsat2
- [x] Sentinel1
- [x] TerraSar
This is the list of metadata parsed in geom by ossimSarSensorModel and the corresponding paths:
| Name | Type | Path |
|----- | ---- | ---- |
| theOrbitRecords | `std::vector<OrbitRecordType>` | orbitList.nb_orbits orbitList.orbit[i].{time, x_pos, x_vel, y_pos,y_vel, z_pos, z_vel} |
| theGCPRecords | `std::vector<GCPRecordType>` | support_data.geom.gcp.number support_data.geom.gcp[i].{azimuthTime, im_pt.{x,y}, slant_range_time, world_pt.{hgt, lon, la} } |
| theBurstRecords | `std::vector<BurstRecordType>` | support_data.geom.bursts.number support_data.geom.bursts.urst[i].{ azimuth_start_time,azimut_stop_time,end_line,start_line} |
| theSlantRangeToGroundRangeRecords | `std::vector<CoordinateConversionRecordType>` | isGRD get(kwl, SR_PREFIX, keySr0, theSlantRangeToGroundRangeRecords); |
| theGroundRangeToSlantRangeRecords | `std::vector<CoordinateConversionRecordType>` | IsGRD get(kwl, GR_PREFIX, keyGr0, theGroundRangeToSlantRangeRecords); |
| theRadarFrequency | `double` | support_data,radar_frequency |
| theAzimuthTimeInterval | `DurationType` | support_data,line_time_interval |
| theNearRangeTime | `double` | support_data,slant_range_to_first_pixel |
| theRangeSamplingRate | `double` | support_data,range_sampling_rate |
| theRangeResolution | `double` | support_data,range_spacing |
| theBistaticCorrectionNeeded | `Bool` | Always false when reading geom ??????? |
| theProductType | `ProductType` | support_data,product_type |
| theAzimuthTimeOffset | `DurationType` | optimizeTimeOffsetsFromGcps() |
| theRangeTimeOffset | `double` | optimizeTimeOffsetsFromGcps() Always 0 ????? |
| theRightLookingFlag | `bool` | true in ossimSarSensorModel constructor |
| theFirstLineTime | `TimeType ` | Not read ? Set in deburst() |
| theLastLineTime | `TimeType` | Not read ? Set in deburst() |
| theGeomVersion | `unsigned int` | header.version |
| theNumberOfLinesPerBurst | `unsigned long` | if(theBurstRecords.size() > 1) support_data.geom.bursts.number_lines_per_burst |
| theNumberOfSamplesPerBurst | `unsigned long` | if(theBurstRecords.size() > 1) support_data.geom.bursts.number_samples_per_burst |
| redaptMedataAfterDeburst | `bool` | false in ossimSarSensorModel constructor ; set to true in deburst() |
| thePluginVersion | `unsigned int` | const int = 4 |
| thePluginVersionMin | `unsigned int` | const int = 2 |
TODO: add metadata specific to sensors.
#### Acceptance criterions
One test per product type should be added: the metadata from a product is compared with the metadata read from a geom file using the `--compare-metadata` utility refactored in !763.
#### Risk management
| Risk | Likelihood | Impact | Action |
| ---- | ---------- | ------ | ------ |8.0.0Julien OsmanJulien Osman