Difference between revisions of "Request for Changes-48: Add geometric correction to S1 Sensor Model"

From OTBWiki
Jump to: navigation, search
(+RfCh S1 Sar Sensor Model (draft))
 
(RfCh. Classes and files: S1 Sar Sensor Model)
Line 24: Line 24:
 
==== Classes and files ====
 
==== Classes and files ====
  
''List impacted modules, classes and files, and explain the changes that were made.''
+
===== misc =====
 +
 
 +
M      Modules/Core/Metadata/src/otbSarImageMetadataInterface.cxx
 +
M      Modules/Core/Metadata/src/otbSentinel1ImageMetadataInterface.cxx
 +
M      Modules/IO/ImageIO/include/otbImageFileReader.txx
 +
 
 +
===== Boost dependencies =====
 +
 
 +
M      .travis.yml
 +
M      Modules/ThirdParty/Boost/otb-module-init.cmake
 +
M      SuperBuild/CMake/External_boost.cmake
 +
 
 +
Several issues have been fixed here:
 +
* First, travis needs to know that boost is required to compile
 +
* Then, it's important to '''never''' call <code>find_package(boost)</code> several times. The later calls will clear everything that was found initially. If an initial call was searching for a given mandatory boost module (like date-time), and a second and optional call searches for an optional module (like tests), then the first module found is lost.
 +
 
 +
===== OSSIMAdapters =====
 +
 
 +
M      Modules/Adapters/OSSIMAdapters/include/otbImageKeywordlist.h
 +
M      Modules/Adapters/OSSIMAdapters/include/otbSensorModelAdapter.h
 +
M      Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx
 +
M      Modules/Adapters/OSSIMAdapters/src/otbSensorModelAdapter.cxx
 +
 
 +
As some keywords have been moved around, and as dates are now always stored as ISO UTC time stamps, OTB code has been upgraded to reflect the changes in ossim plugins.
 +
 
 +
===== OssimPlugins =====
 +
 
 +
M      Modules/ThirdParty/OssimPlugins/otb-module.cmake
 +
M      Modules/ThirdParty/OssimPlugins/src/CMakeLists.txt
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimKeyWordListUtilities.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimOperatorUtilities.h
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimPluginProjectionFactory.cpp
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimPluginProjectionFactory.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimRangeUtilities.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModel.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModel.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModelPathsAndKeys.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModelPathsAndKeys.h
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1Model.cpp
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1Model.h
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1ProductDoc.cpp
 +
M      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1ProductDoc.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1SarSensorModel.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1SarSensorModel.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimStringUtilities.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimTerraSarXSarSensorModel.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimTerraSarXSarSensorModel.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimTimeUtilities.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimTimeUtilities.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimTraceHelpers.h
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimXmlTools.cpp
 +
A      Modules/ThirdParty/OssimPlugins/src/ossim/ossimXmlTools.h
 +
 
 +
A      Modules/ThirdParty/OssimPlugins/test/CMakeLists.txt
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-ew-grd-hh-20160117t204113-20160117t204213-009539-00ddc4-001.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-ew-grd-hv-20160117t204113-20160117t204213-009539-00ddc4-002.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw-grd-vh-20151215t050546-20151215t050615-009048-00cfc7-002.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw-grd-vv-20151215t050546-20151215t050615-009048-00cfc7-001.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw1-slc-vh-20160114t054006-20160114t054031-009486-00dc3c-001.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw1-slc-vv-20160114t054006-20160114t054031-009486-00dc3c-004.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw2-slc-vh-20160114t054007-20160114t054032-009486-00dc3c-002.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw2-slc-vv-20160114t054007-20160114t054032-009486-00dc3c-005.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw3-slc-vh-20160114t054005-20160114t054030-009486-00dc3c-003.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw3-slc-vv-20160114t054005-20160114t054030-009486-00dc3c-006.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s4-grd-vh-20150812t014643-20150812t014708-007223-009e1a-002.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s4-grd-vv-20150812t014643-20150812t014708-007223-009e1a-001.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s6-slc-vv-20150619t195043-20150619t195101-006447-00887d-001.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/tsx/PANGKALANBUUN/GEOREF.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/tsx/PANGKALANBUUN/TSX1_SAR__SSC______SM_D_SRA_20080313T221955_20080313T222003.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/tsx/UPSALA_GLACIER/GEOREF.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/data/tsx/UPSALA_GLACIER/TSX1_SAR__MGD.xml
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimSarSensorModelTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimSentinel1ModelTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimSentinel1SarSensorModelTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimStringUtilitiesTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimTerraSarXSarSensorModelTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimTimeUtilitiesBench.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/ossimTimeUtilitiesTest.cpp
 +
A      Modules/ThirdParty/OssimPlugins/test/s1_inversemodel.cpp
 +
 
 +
Several utilities has been added to prevent code repeats, and to be as fast as possible.
 +
* new <code>string_view</code> class inspired by C++17 one
 +
* new overloads for a generic and type safe (de)serialization to/from keyword lists
 +
* new overloads for a generic and type safe deserialization to/from XML docs
 +
* new <code>ModifiedJulianDate</code> class + an efficient and simplified implementation of <code>strptime</code>
 +
* Helper classes to define arithmetic types (inspired from boost.operators, but ''specialized'' for times and durations)
 +
 
 +
''TODO: tests''
 +
 
 +
''TODO: changes in SensorModel classes''
  
''Consider grouping changes by module names if several modules are impacted.''
 
  
 
''Give insight on important implementation details, and on all API changes (add link to specific changesets if possible).''
 
''Give insight on important implementation details, and on all API changes (add link to specific changesets if possible).''

Revision as of 18:55, 28 June 2016

[Request for Changes - 48] Add geometric correction to S1 Sensor Model

Status

  • Author: Luc Hermitte, Julien Michel
  • Additional Contributors
  • Submitted on 26.06.2016
  • Proposed target release: 5.6
  • Status: [ ] Adopted, [ ] Rejected, [ ] Merged in OTB x.y
  • See:

Summary

Add support for geometric ortho-rectification to SAR Sensor for Sentinel-1.

Rationale

This task continues efforts started in RfCh-4. Only the radiometric calibration was done, geometric calibration has been added to conform to inverse SAR geolocation method found in ESA document "Guide to ASAR geocoding" (ref RSL-ASAR-GC-AD).

Implementation details

Classes and files

misc
M       Modules/Core/Metadata/src/otbSarImageMetadataInterface.cxx
M       Modules/Core/Metadata/src/otbSentinel1ImageMetadataInterface.cxx
M       Modules/IO/ImageIO/include/otbImageFileReader.txx
Boost dependencies
M       .travis.yml
M       Modules/ThirdParty/Boost/otb-module-init.cmake
M       SuperBuild/CMake/External_boost.cmake

Several issues have been fixed here:

  • First, travis needs to know that boost is required to compile
  • Then, it's important to never call find_package(boost) several times. The later calls will clear everything that was found initially. If an initial call was searching for a given mandatory boost module (like date-time), and a second and optional call searches for an optional module (like tests), then the first module found is lost.
OSSIMAdapters
M       Modules/Adapters/OSSIMAdapters/include/otbImageKeywordlist.h
M       Modules/Adapters/OSSIMAdapters/include/otbSensorModelAdapter.h
M       Modules/Adapters/OSSIMAdapters/src/otbImageKeywordlist.cxx
M       Modules/Adapters/OSSIMAdapters/src/otbSensorModelAdapter.cxx

As some keywords have been moved around, and as dates are now always stored as ISO UTC time stamps, OTB code has been upgraded to reflect the changes in ossim plugins.

OssimPlugins
M       Modules/ThirdParty/OssimPlugins/otb-module.cmake
M       Modules/ThirdParty/OssimPlugins/src/CMakeLists.txt
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimKeyWordListUtilities.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimOperatorUtilities.h
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimPluginProjectionFactory.cpp
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimPluginProjectionFactory.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimRangeUtilities.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModel.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModel.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModelPathsAndKeys.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSarSensorModelPathsAndKeys.h
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1Model.cpp
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1Model.h
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1ProductDoc.cpp
M       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1ProductDoc.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1SarSensorModel.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimSentinel1SarSensorModel.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimStringUtilities.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimTerraSarXSarSensorModel.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimTerraSarXSarSensorModel.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimTimeUtilities.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimTimeUtilities.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimTraceHelpers.h
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimXmlTools.cpp
A       Modules/ThirdParty/OssimPlugins/src/ossim/ossimXmlTools.h
A       Modules/ThirdParty/OssimPlugins/test/CMakeLists.txt
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-ew-grd-hh-20160117t204113-20160117t204213-009539-00ddc4-001.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-ew-grd-hv-20160117t204113-20160117t204213-009539-00ddc4-002.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw-grd-vh-20151215t050546-20151215t050615-009048-00cfc7-002.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw-grd-vv-20151215t050546-20151215t050615-009048-00cfc7-001.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw1-slc-vh-20160114t054006-20160114t054031-009486-00dc3c-001.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw1-slc-vv-20160114t054006-20160114t054031-009486-00dc3c-004.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw2-slc-vh-20160114t054007-20160114t054032-009486-00dc3c-002.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw2-slc-vv-20160114t054007-20160114t054032-009486-00dc3c-005.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw3-slc-vh-20160114t054005-20160114t054030-009486-00dc3c-003.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-iw3-slc-vv-20160114t054005-20160114t054030-009486-00dc3c-006.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s4-grd-vh-20150812t014643-20150812t014708-007223-009e1a-002.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s4-grd-vv-20150812t014643-20150812t014708-007223-009e1a-001.xml
A       Modules/ThirdParty/OssimPlugins/test/data/s1/s1a-s6-slc-vv-20150619t195043-20150619t195101-006447-00887d-001.xml
A       Modules/ThirdParty/OssimPlugins/test/data/tsx/PANGKALANBUUN/GEOREF.xml
A       Modules/ThirdParty/OssimPlugins/test/data/tsx/PANGKALANBUUN/TSX1_SAR__SSC______SM_D_SRA_20080313T221955_20080313T222003.xml
A       Modules/ThirdParty/OssimPlugins/test/data/tsx/UPSALA_GLACIER/GEOREF.xml
A       Modules/ThirdParty/OssimPlugins/test/data/tsx/UPSALA_GLACIER/TSX1_SAR__MGD.xml
A       Modules/ThirdParty/OssimPlugins/test/ossimSarSensorModelTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimSentinel1ModelTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimSentinel1SarSensorModelTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimStringUtilitiesTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimTerraSarXSarSensorModelTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimTimeUtilitiesBench.cpp
A       Modules/ThirdParty/OssimPlugins/test/ossimTimeUtilitiesTest.cpp
A       Modules/ThirdParty/OssimPlugins/test/s1_inversemodel.cpp

Several utilities has been added to prevent code repeats, and to be as fast as possible.

  • new string_view class inspired by C++17 one
  • new overloads for a generic and type safe (de)serialization to/from keyword lists
  • new overloads for a generic and type safe deserialization to/from XML docs
  • new ModifiedJulianDate class + an efficient and simplified implementation of strptime
  • Helper classes to define arithmetic types (inspired from boost.operators, but specialized for times and durations)

TODO: tests

TODO: changes in SensorModel classes


Give insight on important implementation details, and on all API changes (add link to specific changesets if possible).

Applications

List impacted applications, and explain the changes that were made.

Consider grouping changes by module names if several modules are impacted.

Give insight on important implementation details, and on all API changes (add link to specific changesets if possible).

Tests

List impacted tests, and explain the changes that were made.

Consider grouping changes by module names if several modules are impacted.

Link to dashboard pages of impacted if possible.

Documentation

List documentation modification that were made (doxygen, example, software guide, application documentation, cookbook).

Additional notes

List remaining open issues if any, and additional notes.

  • TerraSarX needs to be updated to the new SarSensorModel classes.