From 2dd473c1c66987f5e8e3fbdac2f28abfea90feec Mon Sep 17 00:00:00 2001
From: Emmanuel Christophe <emmanuel.christophe@orfeo-toolbox.org>
Date: Thu, 21 May 2009 10:57:37 +0800
Subject: [PATCH] TEST: add tests for sensor models

---
 Testing/Code/Projections/CMakeLists.txt       | 92 +++++++++++++++++++
 .../Code/Projections/otbProjectionsTests1.cxx |  1 +
 Testing/Code/Projections/otbSensorModel.cxx   | 85 +++++++++++++++++
 3 files changed, 178 insertions(+)
 create mode 100644 Testing/Code/Projections/otbSensorModel.cxx

diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt
index 7f78f45c66..ce39edf824 100644
--- a/Testing/Code/Projections/CMakeLists.txt
+++ b/Testing/Code/Projections/CMakeLists.txt
@@ -93,6 +93,97 @@ ADD_TEST(prTvRegionProjectionResamplerCevennes ${PROJECTIONS_TESTS1}
 				0.00001
 				-0.00001
         )
+
+ADD_TEST(prTvSensorModelSpot5 ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelSpot5.txt
+         ${TEMP}/prTvSensorModelQuickbird.txt
+    otbSensorModel
+         ${LARGEINPUT}/SPOT5_SCENE01/IMAGERY.TIF
+         ${TEMP}/prTvSensorModelSpot5.txt
+)
+
+ADD_TEST(prTvSensorModelQuickbird ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelQuickbird.txt
+         ${TEMP}/prTvSensorModelQuickbird.txt
+    otbSensorModel
+         ${LARGEINPUT}/TOULOUSE/QuickBird/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF
+         ${TEMP}/prTvSensorModelQuickbird.txt
+)
+
+ADD_TEST(prTvSensorModelIkonos ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelIkonos.txt
+         ${TEMP}/prTvSensorModelIkonos.txt
+    otbSensorModel
+         ${LARGEINPUT}/IKONOS_BLOSSEVILLE/po_2619900_pan_0000000.tif
+         ${TEMP}/prTvSensorModelIkonos.txt
+)
+
+ADD_TEST(prTvSensorModelRapidEye ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelRapidEye.txt
+         ${TEMP}/prTvSensorModelRapidEye.txt
+    otbSensorModel
+         ${LARGEINPUT}/RAPIDEYE/level1B/2008-12-25T005918_RE3_1B-NAC_397971_12345_band3.ntf
+         ${TEMP}/prTvSensorModelRapidEye.txt
+)
+
+ADD_TEST(prTvSensorModelEnvisatAsar ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelEnvisatAsar.txt
+         ${TEMP}/prTvSensorModelEnvisatAsar.txt
+    otbSensorModel
+         ${LARGEINPUT}/ENVISAT_ASAR_SCENE01/ASA_APS_1PNDPA20030821_7713.N1
+         ${TEMP}/prTvSensorModelEnvisatAsar.txt
+)
+
+ADD_TEST(prTvSensorModelAlosPalsar ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelAlosPalsar.txt
+         ${TEMP}/prTvSensorModelAlosPalsar.txt
+    otbSensorModel
+         ${LARGEINPUT}/PALSAR/200801280007/l1data/VOL-ALPSRP037120700-H1.1__A
+         ${TEMP}/prTvSensorModelAlosPalsar.txt
+)
+
+ADD_TEST(prTvSensorModelRadarSat1 ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelRadarSat1.txt
+         ${TEMP}/prTvSensorModelRadarSat1.txt
+    otbSensorModel
+         ${LARGEINPUT}/RADARSAT1/SCENE01/DAT_01.001
+         ${TEMP}/prTvSensorModelRadarSat1.txt
+)
+
+ADD_TEST(prTvSensorModelRadarSat2 ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelRadarSat2.txt
+         ${TEMP}/prTvSensorModelRadarSat2.txt
+    otbSensorModel
+         ${LARGEINPUT}/RSAT2/Fine_Quad-Pol_Dataset/PK6621_DK406_FQ9_20080405_124900_HH_VV_HV_VH_SLC_Altona/product.xml
+         ${TEMP}/prTvSensorModelRadarSat2.txt
+)
+
+ADD_TEST(prTvSensorModelTerraSarX ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelTerraSarX.txt
+         ${TEMP}/prTvSensorModelTerraSarX.txt
+    otbSensorModel
+         ${LARGEINPUT}/TERRASARX/dims/TSX-1.SAR.L1B/TSX1_SAR__SSC/TSX1_SAR__SSC.xml
+         ${TEMP}/prTvSensorModelTerraSarX.txt
+)
+
+ADD_TEST(prTvSensorModelErs ${PROJECTIONS_TESTS1}
+  --compare-ascii ${NOTOL}
+         ${BASELINE_FILES}/prTvSensorModelErs.txt
+         ${TEMP}/prTvSensorModelErs.txt
+    otbSensorModel
+         ${LARGEINPUT}/SAR_ERS2_SLCI_SCENE1/DAT_01.001
+         ${TEMP}/prTvSensorModelErs.txt
+)
+
 ENDIF(OTB_DATA_USE_LARGEINPUT)
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -352,6 +443,7 @@ otbCreateProjectionWithOSSIM.cxx
 otbCreateProjectionWithOTB.cxx
 otbCreateInverseForwardSensorModel.cxx
 otbRegionProjectionResampler.cxx
+otbSensorModel.cxx
 )
 SET(Projections_SRCS2
 otbOrthoRectificationFilterNew.cxx
diff --git a/Testing/Code/Projections/otbProjectionsTests1.cxx b/Testing/Code/Projections/otbProjectionsTests1.cxx
index 08a16fbd2f..c82c27aed3 100644
--- a/Testing/Code/Projections/otbProjectionsTests1.cxx
+++ b/Testing/Code/Projections/otbProjectionsTests1.cxx
@@ -35,4 +35,5 @@ void RegisterTests()
   REGISTER_TEST(otbCreateProjectionWithOTB);
   REGISTER_TEST(otbCreateInverseForwardSensorModel);
   REGISTER_TEST(otbRegionProjectionResampler);
+  REGISTER_TEST(otbSensorModel);
 }
diff --git a/Testing/Code/Projections/otbSensorModel.cxx b/Testing/Code/Projections/otbSensorModel.cxx
new file mode 100644
index 0000000000..625bb1d0ad
--- /dev/null
+++ b/Testing/Code/Projections/otbSensorModel.cxx
@@ -0,0 +1,85 @@
+/*=========================================================================
+
+Program:   ORFEO Toolbox
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+
+
+Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+See OTBCopyright.txt for details.
+
+
+This software is distributed WITHOUT ANY WARRANTY; without even
+the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#if defined(_MSC_VER)
+#pragma warning ( disable : 4786 )
+#endif
+
+#include <iostream>
+
+#include "otbVectorImage.h"
+#include "otbImageFileReader.h"
+#include "otbForwardSensorModel.h"
+#include "otbInverseSensorModel.h"
+
+int otbSensorModel( int argc, char* argv[] )
+{
+  if (argc!=3)
+  {
+    std::cout << argv[0] <<" <input filename> <output filename>"
+    << std::endl;
+
+    return EXIT_FAILURE;
+  }
+
+  char * filename = argv[1];
+  char * outFilename = argv[2];
+
+  std::ofstream file;
+  file.open(outFilename);
+  file << std::setprecision(15);
+
+
+  typedef otb::VectorImage<double, 2> ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  ReaderType::Pointer reader = ReaderType::New();
+  reader->SetFileName(filename);
+  reader->UpdateOutputInformation();
+
+  file << "*** KEYWORD LIST ***\n";
+  file << reader->GetOutput()->GetImageKeywordlist();
+
+  file << "\n*** TRANSFORM ***\n";
+
+  typedef otb::ForwardSensorModel<double> ForwardSensorModelType;
+  ForwardSensorModelType::Pointer forwardSensorModel = ForwardSensorModelType::New();
+  forwardSensorModel->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
+
+
+  itk::Point<double,2> imagePoint;
+  imagePoint[0]=10;
+  imagePoint[1]=10;
+
+  itk::Point<double,2> geoPoint;
+  geoPoint = forwardSensorModel->TransformPoint(imagePoint);
+
+  file << "Image to geo: " << imagePoint << " -> " << geoPoint << "\n";
+  typedef otb::InverseSensorModel<double> InverseSensorModelType;
+  InverseSensorModelType::Pointer inverseSensorModel = InverseSensorModelType::New();
+  inverseSensorModel->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
+
+
+  itk::Point<double,2> reversedImagePoint;
+  reversedImagePoint = inverseSensorModel->TransformPoint(geoPoint);
+
+  file << "Geo to image: " << geoPoint << " -> " << reversedImagePoint << "\n";
+
+  file.close();
+  return EXIT_SUCCESS;
+}
+
+
-- 
GitLab