otb merge requestshttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests2022-01-06T13:39:38Zhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/884ENH: Update vs2019 to latest build tools version2022-01-06T13:39:38ZThibaut ROMAINENH: Update vs2019 to latest build tools versionIn the windows 10 build VM, vs 2019 version was from April 2019 and need update to fix several CVEsIn the windows 10 build VM, vs 2019 version was from April 2019 and need update to fix several CVEs8.0.0Thibaut ROMAINThibaut ROMAINhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/830Resolve "Implement otb::SarTransformBase, otb::SarForwardTransform and otb::S...2021-09-06T18:55:00ZJulien OsmanResolve "Implement otb::SarTransformBase, otb::SarForwardTransform and otb::SarInverseTransform"#### Summary
Implement otb::SarTransformBase, otb::SarForwardTransform and otb::SarInverseTransform. Add them to the Sensor Transform Factory.
#### Rationale
Fix #2151
#### Implementation Details
##### Classes and files
- Implement...#### Summary
Implement otb::SarTransformBase, otb::SarForwardTransform and otb::SarInverseTransform. Add them to the Sensor Transform Factory.
#### Rationale
Fix #2151
#### Implementation Details
##### Classes and files
- Implement otb::SarTransformBase, otb::SarForwardTransform and otb::SarInverseTransform with the same patern used for otb::RPCTransformBase, otb::RPCForwardTransform and otb::RPCInverseTransform
- Implement factories for them in otbTransformFactories.h
- Add the new factories to otb::SensorTransformFactory
##### Tests
- Generate new GCPs (for Sentinel1, CosmoSkyNet, TerrasarX and RadarSat2), using OTB7.3 and OSSIM.
- Use this GCP to test forward and inverse transform, as well as GenericRSTransform
##### Documentation
Update the page Sensor Model with the SAR sensor model.
#### Acceptance criterions
* [x] The new classes are correctly tested with there respective unitary tests.
* [x] The documentation is up to date.
#### Copyright
The copyright owner is *CNES* and has signed the ORFEO ToolBox Contributor License Agreement.
<hr>
***Check before merging:***
- All discussions are resolved
- At least 2 :thumbsup: votes from core developers, no :thumbsdown: vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run `git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i` on latest changes and commit8.0.0Julien OsmanJulien Osmanhttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/823Implements Deburst algorithms2021-09-06T18:54:59ZCédric TraizetImplements Deburst algorithms#### Summary
Part of #2160
This merge request implements a date time framework and the `deburst`, `burstExtraction` and `deburstAndConcatenate` algorithms in the `otb::SarSensorModel` class. The corresponding applications now use `Sar...#### Summary
Part of #2160
This merge request implements a date time framework and the `deburst`, `burstExtraction` and `deburstAndConcatenate` algorithms in the `otb::SarSensorModel` class. The corresponding applications now use `SarSensorModel` instead of `SarSensorModelAdapter` (the adapter of ossimSarSensorModel in ossimPlugins).
##### OTB Date Time framework
A new date time framework has been implemented to replace the functionalities provided by `ossimTimeUtilities` from ossimPlugins. The framework adds two classes:
* otb::MetaData::TimePoint that represents a point in time
* otb::MetaData::Duration that represents a duration
These classes are adapters built around boost::posix_time::ptime and boost::posix_time::time_duration respectively. The classes are compiled with a nanosecond precision to match the precision requirement of SAR algorithms. The API also provide utility methods:
* arithmetic: addition and difference of two durations, product and ratio of a duration by a scalar, ratio of two duration, difference between two dates, sum of a date and a duration.
* io: operators `<<` and `>>` based on `boost::posix_time` io functionalities
##### Deburst algorithms
The code has been adapted from ossim plugins, the main differences between the two implementations is the use of `otb::ImageMetadata` instead of ossim keywordlists, and the use of the new date time framework instead of ossim time utilites.
#### Copyright
The copyright owner is *CNES* and has signed the ORFEO ToolBox Contributor License Agreement.
<hr>
***Check before merging:***
- All discussions are resolved
- At least 2 :thumbsup: votes from core developers, no :thumbsdown: vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run `git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i` on latest changes and commit8.0.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/808Implements SARSensorModel forward and inverse transforms2021-05-19T08:24:58ZCédric TraizetImplements SARSensorModel forward and inverse transforms#### Summary
Part of #2160
Implements the transformation between world coordinates and line/sample using SAR metadata
#### Rationale
Creates the SARSensorModel class, which is a port from SARSensorModelAdapter, the adapter class for...#### Summary
Part of #2160
Implements the transformation between world coordinates and line/sample using SAR metadata
#### Rationale
Creates the SARSensorModel class, which is a port from SARSensorModelAdapter, the adapter class for ossimSarSensorModel from OssimPlugins.
#### Implementation Details
Dates and duration are managed using the boost datetime library. The `precise_duration` class defined in OssimPlugins and injected in the boost namespace has been integrated into the OTB
ECEF to/from geographical coordinates are performed using PROJ (instead of Ossim)
<!---
##### Classes and files
Give an overview of the implementation: main changes made to classes, files and modules. Do not paste complete diff, as it is available in the merge request already.
-->
<!---
##### Applications
Describe any changes made to existing applications, or new applications that have been added.
-->
<!---
##### Tests
Describe the testing strategy for new features.
-->
<!---
##### Documentation
List or link documentation modifications that were made (doxygen, example, Software Guide, application documentation, CookBook).
-->
#### Additional notes
<!--- List remaining open issues if any, and additional notes. -->
#### Copyright
The copyright owner is *CNES* and has signed the ORFEO ToolBox Contributor License Agreement.
<hr>
***Check before merging:***
- All discussions are resolved
- At least 2 :thumbsup: votes from core developers, no :thumbsdown: vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run `git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i` on latest changes and commit8.0.0Cédric TraizetCédric Traizethttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/740Resolve "Develop package names"2020-08-27T13:53:36ZJulie BrossardResolve "Develop package names"Closes #2076Closes #20768.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/737Resolve "Develop package names" 22020-08-28T13:07:35ZJulie BrossardResolve "Develop package names" 2Closes #2076Closes #20767.2.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/651Resolve "Move FilterFunctionValues and MetadataKey to OTBMetadata"2020-02-04T12:54:07ZGuillaume PaseroResolve "Move FilterFunctionValues and MetadataKey to OTBMetadata"Moving classes `FilterFunctionValues` and `MetaDataKey` to module OTBMetadata, as they are quite independent from OSSIM.
Closes #1990Moving classes `FilterFunctionValues` and `MetaDataKey` to module OTBMetadata, as they are quite independent from OSSIM.
Closes #19907.1.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/642Resolve "ExtractROI: keep GCPs"2019-12-02T16:05:38ZGuillaume PaseroResolve "ExtractROI: keep GCPs"Due to GDAL limitations, we only save GCP when there is no projectionRef or imageKeywordlist.
Because the geotransform is not saved with the GCPs, the GCP image coordinates are adapted if the image has non-default origin/spacing values....Due to GDAL limitations, we only save GCP when there is no projectionRef or imageKeywordlist.
Because the geotransform is not saved with the GCPs, the GCP image coordinates are adapted if the image has non-default origin/spacing values.
The test `apTvUtQuicklookWithGCP` has been added to check this behaviour.
Closes #19377.1.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/633Added otb_opencv_api.h in packages2019-12-02T16:52:42Zguillaume pernotAdded otb_opencv_api.h in packagesCloses #1986Closes #19867.1.0guillaume pernotguillaume pernothttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/628Added 'double' application parameter type.2020-11-02T10:56:25Zguillaume pernotAdded 'double' application parameter type.Closes #1971Closes #19717.1.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/612Ice OpenGL refactoring (release)2019-11-04T16:35:18ZGuillaume PaseroIce OpenGL refactoring (release)The rendering library Ice is refactored with modern OpenGL API ("GLSL" mode, shaders + Vertex Aray). A large part of the functions previously used were deprecated since OpenGL 3.0, and removed in OpenGL 4.6.
The compatibility mode is st...The rendering library Ice is refactored with modern OpenGL API ("GLSL" mode, shaders + Vertex Aray). A large part of the functions previously used were deprecated since OpenGL 3.0, and removed in OpenGL 4.6.
The compatibility mode is still there ("OpenGL" mode).
Minimum versions for GLSL mode are: OpenGL 3.0, GLSL 1.30.
Details on the refactoring:
* Shaders now have vertex and fragment programs. `FragmentShader` renamed to `Shader`.
* All GlActors can have a shader. When GLSL is ON, client code should call `actor->CreateShader()` after creating the Actor.
* New shader: `MinimalShader`, it handles the projection and model matrices, and uses a constant color.
* New classes added:
* `GlError` : reporting of OpenGL error codes
* `GlHandle` : handling of OpenGL resources (VA, VBO)
* `GlBufferObject` : handles a Buffer Object (support both VertexBufferObject and IndexBufferObject): creation, binding, deletion
* `GlVertexArray` : handles a Vertex Array Object: creation, binding, deletion
* `GlMesh` : generic structure for a mesh geometry (list of vertices + faces). Used to implement VA/VBO for `GlImageActor` and `GlROIActor`
Related to #19307.0.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/544Cmake 3.10.22019-08-06T14:40:32ZAntoine RegimbeauCmake 3.10.2#### Summary
This MR upgrade CMake to 3.10.2. This version of CMake si the one packaged for Ubuntu 18.04. It is linked to #1905, and #528 (Compatibility with ITK5).
#### Rationale
The main work here was to look at some improve...#### Summary
This MR upgrade CMake to 3.10.2. This version of CMake si the one packaged for Ubuntu 18.04. It is linked to #1905, and #528 (Compatibility with ITK5).
#### Rationale
The main work here was to look at some improvement that could be done on the CMake code. Lots of comments have been made, some modifications at iso-functionalities and some deletion (unused code, commented code).
This MR is the introduction of a bigger work: the CMake code cleaning.
#### Additional notes
See #1940 for more detail of what has been investigated in here.
#### Copyright
The copyright owner is *CNES* and has signed the ORFEO ToolBox Contributor License Agreement.
<hr>
***Check before merging:***
- All discussions are resolved
- At least 2 :thumbsup: votes from core developers, no :thumbsdown: vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement
- Optionally, run `git diff develop... -U0 --no-color | clang-format-diff.py -p1 -i` on latest changes and commit
7.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/274BUG: #1734: warn users when producing an ENVI dataset with positive Y spacing2019-09-19T08:45:49ZGuillaume PaseroBUG: #1734: warn users when producing an ENVI dataset with positive Y spacingWarning for malformed ENVI datasets
Closes #1734Warning for malformed ENVI datasets
Closes #17347.0.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/270BUG: #1691: clarifications on binary packages2019-09-19T08:46:29ZGuillaume PaseroBUG: #1691: clarifications on binary packagesThe LICENSE file in binary package is more inline with the mixed license situation.
The NOTICE file mentions the ITK - FFTW issue, as well as the specific license of remote modules.
Closes #1691The LICENSE file in binary package is more inline with the mixed license situation.
The NOTICE file mentions the ITK - FFTW issue, as well as the specific license of remote modules.
Closes #16917.0.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/266BUG: #1734: replace envi format with TIF2019-09-19T08:46:41ZGuillaume PaseroBUG: #1734: replace envi format with TIFMost of the tests using ENVI format images now use TIF instead. Exceptions are limited to `IOGDAL` and `ImageIO` modules.
This branch should be tested with the corresponding branch on OTB-Data.
Related to #1734Most of the tests using ENVI format images now use TIF instead. Exceptions are limited to `IOGDAL` and `ImageIO` modules.
This branch should be tested with the corresponding branch on OTB-Data.
Related to #17347.0.0Guillaume PaseroGuillaume Paserohttps://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/224Change map projections backend to use Gdal instead of OSSIM2021-04-21T15:40:04ZJulien MichelChange map projections backend to use Gdal instead of OSSIM#### Summary
This Merge Request changes the map projection backend to use Gdal instead of OSSIM. It removes a lot of useless classes on the way, leading to a more compact code and reducing responsibilty spread.
#### Rationale
Se...#### Summary
This Merge Request changes the map projection backend to use Gdal instead of OSSIM. It removes a lot of useless classes on the way, leading to a more compact code and reducing responsibilty spread.
#### Rationale
See #1506 for the big picture.
#### Implementation Details
##### New classes in GdalAdapters
There are two new classes in the GdalAdapters module :
* `SpatialReference`: wraps `OGRSpatialReference` Gdal class
* `CoordinateTransformation` : wraps `OGRCoordinateTransformation` Gdal class
Both classes follow the RAII principle : if the constructor succeeds, it returns a ready to use, almost immutable valid object. Internal instance is handled by `std::unique_ptr`. They are completely tested with a single test covering all methods, without any input or output (though the code of this test could be lighter if we were using a c++ unit test framework).
Example of use (from tests):
```cpp
SpatialReference wgs84sr = SpatialReference::FromWGS84();
SpatialReference sr = SpatialReference::FromDescription("EPSG:32631");
SpatialReference srFromEPSG = SpatialReference::FromEPSG(32631);
SpatialReference srFromUTM = SpatialReference::FromUTM(31,SpatialReference::hemisphere::north);
SpatialReference inSR = SpatialReference::FromDescription("EPSG:4326");
SpatialReference outSR = SpatialReference::FromDescription("EPSG:32631");
CoordinateTransformation transformation(inSR,outSR);
```
##### Removed classes and files
* `otb::MapProjectionAdapter` in `Adapter/OssimAdapters` and its test
* `otb::GeoInformationConversion` in `Core/Transform` : all services offfered by this class are now available in `OGRSpatialSReferenceAdapter`, which is the only entry point for spatial reference related operations
* `otb::*MapProjection` appart from `otb::GenericMapProjection` and their tests: `otb::GenericMapProjection` already covers all possible map projections. We do not need dedicated classes for each projection, and we surely do not need to define ourselves what the parameters for this or that projection should be!
* head file `otbMapProjections.h`
##### Client code update and API change
* `otb::GenericMapProjection` has been updated to use `CoordinateTransformation` and `SpatialReference` internally. The API of the class has been modified to prevent abstraction leak and remove the ability to modify the spatial reference parameters, as it is something that we should not do in OTB. If someone wants a different spatial references, she can provide a new wkt! Appart from code removal, this is the only API change.
* All client code of removed classes have been updated.
#### Additional notes
* As a side benefit, `m_ProjectionRef` in `otb::Image` and `otb::VectorImage`can be any `string`accepted by the `setFromUserInput()` method in Gdal, that is used in `SpatialReference` constructor. "EPSG:xxxx" will work, as well as any proj formatted definition.
* I refrained myself for further refactoring, such as :
* Removing `otb::OrthoRectificationFilter` which does not bring anything valuable on to of `otb::GenericRSResampleImageFilter`
* Refactor `otb::GenericMapProjection` which does not bring anything valuable with respect to `CoordinateTransformation` (apart from the `itk::Transform` polymorphism). At least it could be rewritten as a non-template class.
* Remove the `*TileMap*` classes which frankly are pure legacy code without any viable purpose.
* There is small fork of a few line of OSSIM code regarding the UTM zone lookup in `SpatialReference` class. Not sure how to deal with it properly.
* One remaining task is the clean-up of baselines for all removed tests.
#### Copyright
The copyright owner is *CNES* and has signed the ORFEO ToolBox Contributor License Agreement.
<hr>
***Check before merging:***
- All discussions are resolved
- At least 2 :thumbsup: votes from core developers, no :thumbsdown: vote.
- The feature branch is (reasonably) up-to-date with the base branch
- Dashboard is green
- Copyright owner has signed the ORFEO ToolBox Contributor License Agreement7.0.0https://gitlab.orfeo-toolbox.org/orfeotoolbox/otb/-/merge_requests/104Update SoftwareGuide2018-05-22T15:57:13ZAntoine RegimbeauUpdate SoftwareGuideUpdate SoftwareGuideUpdate SoftwareGuide6.6.0