From 3767253431c745d04e50322fbb1f9d4a7343995f Mon Sep 17 00:00:00 2001
From: Luc Hermitte <luc.hermitte@c-s.fr>
Date: Fri, 22 Jun 2012 17:21:49 +0200
Subject: [PATCH] TEST: OTB-151/GeometriesProjectionFilter -- tests for
 VectorData duplicated for OGR geometries

---
 Testing/Code/Projections/CMakeLists.txt       | 45 +++++++++++-
 .../otbGeometriesProjectionFilter.cxx         |  2 +-
 ...GeometriesProjectionFilterFromGeoToMap.cxx | 70 +++++++++++++++++++
 ...GeometriesProjectionFilterFromMapToGeo.cxx | 59 ++++++++++++++++
 ...ometriesProjectionFilterFromMapToImage.cxx | 70 +++++++++++++++++++
 ...metriesProjectionFilterFromMapToSensor.cxx | 70 +++++++++++++++++++
 .../Code/Projections/otbProjectionsTests3.cxx |  6 +-
 7 files changed, 319 insertions(+), 3 deletions(-)
 create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx
 create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx
 create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx
 create mode 100644 Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx

diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt
index 749b036744..609a8ffc86 100644
--- a/Testing/Code/Projections/CMakeLists.txt
+++ b/Testing/Code/Projections/CMakeLists.txt
@@ -1179,6 +1179,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToSensor ${PROJECTIONS_TESTS3}
         ${LARGEINPUT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF
         ${TEMP}/prTvVectorDataProjectionFilterFromMapToSensor.shp
 )
+
+ADD_TEST(prTvGeometriesProjectionFilterFromMapToSensor ${PROJECTIONS_TESTS3}
+        --compare-ogr  ${NOTOL}
+            ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToSensor.shp
+            ${TEMP}/prTvGeometriesProjectionFilterFromMapToSensor.shp
+        otbGeometriesProjectionFilterFromMapToSensor
+        ${INPUTDATA}/ToulousePoints-examples.shp
+        ${LARGEINPUT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToSensor.shp
+)
 ENDIF(OTB_DATA_USE_LARGEINPUT)
 
 ADD_TEST(prTvVectorDataProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3}
@@ -1190,6 +1200,15 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3}
         ${TEMP}/prTvVectorDataProjectionFilterFromMapToGeo.kml
 )
 
+ADD_TEST(prTvGeometriesProjectionFilterFromMapToGeo ${PROJECTIONS_TESTS3}
+        --compare-ascii ${NOTOL}
+        ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToGeo.kml
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml
+        otbGeometriesProjectionFilterFromMapToGeo
+        ${INPUTDATA}/ToulousePoints-examples.shp
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml
+)
+
 ADD_TEST(prTvVectorDataProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3}
         --compare-ascii ${NOTOL}
         ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToImage.shp
@@ -1200,6 +1219,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3}
         ${TEMP}/prTvVectorDataProjectionFilterFromMapToImage.shp
 )
 
+ADD_TEST(prTvGeometriesProjectionFilterFromMapToImage ${PROJECTIONS_TESTS3}
+        --compare-ascii ${NOTOL}
+        ${BASELINE_FILES}/prTvVectorDataProjectionFilterFromMapToImage.shp
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToImage.shp
+        otbGeometriesProjectionFilterFromMapToImage
+        ${INPUTDATA}/ToulousePoints-examples.shp
+        ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToImage.shp
+)
+
 # With QGIS the two vectordata are equal
 ADD_TEST(prTvVectorDataProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3}
         #--compare-ascii ${NOTOL}
@@ -1211,6 +1240,16 @@ ADD_TEST(prTvVectorDataProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3}
         ${TEMP}/prTvVectorDataProjectionFilterFromGeoToMap.shp
 )
 SET_TESTS_PROPERTIES(prTvVectorDataProjectionFilterFromGeoToMap PROPERTIES DEPENDS prTvVectorDataProjectionFilterFromMapToGeo)
+ADD_TEST(prTvGeometriesProjectionFilterFromGeoToMap ${PROJECTIONS_TESTS3}
+        #--compare-ascii ${NOTOL}
+        #${INPUTDATA}/ToulousePoints-examples.shp
+        #${TEMP}/prTvGeometriesProjectionFilterFromGeoToMap.shp
+        otbGeometriesProjectionFilterFromGeoToMap
+        ${TEMP}/prTvGeometriesProjectionFilterFromMapToGeo.kml
+        ${INPUTDATA}/QB_Toulouse_Ortho_PAN.tif
+        ${TEMP}/prTvGeometriesProjectionFilterFromGeoToMap.shp
+)
+SET_TESTS_PROPERTIES(prTvGeometriesProjectionFilterFromGeoToMap PROPERTIES DEPENDS prTvGeometriesProjectionFilterFromMapToGeo)
 
 
 
@@ -1695,13 +1734,17 @@ otbVectorDataProjectionFilterFromMapToGeo.cxx
 otbVectorDataProjectionFilterFromMapToImage.cxx
 otbVectorDataProjectionFilterFromGeoToMap.cxx
 otbVectorDataIntoImageProjectionFilterTest.cxx
-otbGeometriesProjectionFilter.cxx
 otbGeocentricTransformNew.cxx
 otbGeocentricTransform.cxx
 otbTileMapTransform.cxx
 otbVectorDataExtractROIandProjection.cxx
 otbGenericRSTransformGenericConversionCheckingFromGCP.cxx
 otbForwardBackwardProjectionConsistency.cxx
+otbGeometriesProjectionFilter.cxx
+otbGeometriesProjectionFilterFromMapToSensor.cxx
+otbGeometriesProjectionFilterFromMapToGeo.cxx
+otbGeometriesProjectionFilterFromMapToImage.cxx
+otbGeometriesProjectionFilterFromGeoToMap.cxx
 otbGeometriesProjectionFilterFromMapToEPSG.cxx
 )
 
diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx
index 0041185ff6..ffdb58408b 100644
--- a/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx
+++ b/Testing/Code/Projections/otbGeometriesProjectionFilter.cxx
@@ -31,7 +31,7 @@ int otbGeometriesProjectionFilter(int argc, char * argv[])
 {
   if (argc < 3)
     {
-    std::cout << argv[0] << " <input filename> <output filename> [<output text>]\n";
+    std::cerr << argv[0] << " <input filename> <output filename> [<output text>]\n";
     return EXIT_FAILURE;
     }
 
diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx
new file mode 100644
index 0000000000..0e3d8bc63a
--- /dev/null
+++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromGeoToMap.cxx
@@ -0,0 +1,70 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+
+/*===========================================================================*/
+/*===============================[ Includes ]================================*/
+/*===========================================================================*/
+#include "otbGeometriesProjectionFilter.h"
+#include "otbGeometriesSet.h"
+#include "otbImage.h"
+#include "otbImageFileReader.h"
+
+/*===========================================================================*/
+/*==============================[ other stuff ]==============================*/
+/*===========================================================================*/
+int otbGeometriesProjectionFilterFromGeoToMap(int argc, char * argv[])
+{
+  if (argc < 4)
+    {
+    std::cerr << argv[0] << " <input vector filename> <input image filename>"
+              << " <output vector filename>\n";
+    return EXIT_FAILURE;
+    }
+
+  // Input Geometries set
+  typedef otb::GeometriesSet                InputGeometriesType;
+  typedef otb::GeometriesSet                OutputGeometriesType;
+  otb::ogr::DataSource::Pointer input = otb::ogr::DataSource::New(
+    argv[1], otb::ogr::DataSource::Modes::read);
+  InputGeometriesType::Pointer in_set = InputGeometriesType::New(input);
+
+  // Input Keywordlist (from image)
+  typedef otb::Image<unsigned short int, 2> ImageType;
+  typedef otb::ImageFileReader<ImageType>   ImageReaderType;
+  ImageReaderType::Pointer imageReader = ImageReaderType::New();
+  imageReader->SetFileName(argv[2]);
+  imageReader->UpdateOutputInformation();
+
+  // Output Geometries Set
+  otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New(
+    argv[3], otb::ogr::DataSource::Modes::write);
+  OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output);
+
+  // Filter
+  typedef otb::GeometriesProjectionFilter   GeometriesFilterType;
+  GeometriesFilterType::Pointer filter = GeometriesFilterType::New();
+  filter->SetInput(in_set);
+  filter->SetOutput(out_set);
+  filter->SetOutputProjectionRef(imageReader->GetOutput()->GetProjectionRef());
+  filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin());
+  filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing());
+
+  filter->Update();
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx
new file mode 100644
index 0000000000..91c927db4f
--- /dev/null
+++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToGeo.cxx
@@ -0,0 +1,59 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+
+/*===========================================================================*/
+/*===============================[ Includes ]================================*/
+/*===========================================================================*/
+#include "otbGeometriesProjectionFilter.h"
+#include "otbGeometriesSet.h"
+#include "otbImage.h"
+#include "otbImageFileReader.h"
+
+/*===========================================================================*/
+/*==============================[ other stuff ]==============================*/
+/*===========================================================================*/
+int otbGeometriesProjectionFilterFromMapToGeo(int argc, char **argv)
+{
+  if (argc < 2)
+    {
+    std::cerr << argv[0] << " <input vector filename> <output vector filename>\n";
+    return EXIT_FAILURE;
+    }
+
+  // Input Geometries set
+  typedef otb::GeometriesSet                InputGeometriesType;
+  typedef otb::GeometriesSet                OutputGeometriesType;
+  otb::ogr::DataSource::Pointer input = otb::ogr::DataSource::New(
+    argv[1], otb::ogr::DataSource::Modes::read);
+  InputGeometriesType::Pointer in_set = InputGeometriesType::New(input);
+
+  // Output Geometries Set
+  otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New(
+    argv[2], otb::ogr::DataSource::Modes::write);
+  OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output);
+
+  // Filter
+  typedef otb::GeometriesProjectionFilter   GeometriesFilterType;
+  GeometriesFilterType::Pointer filter = GeometriesFilterType::New();
+  filter->SetInput(in_set);
+  filter->SetOutput(out_set);
+
+  filter->Update();
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx
new file mode 100644
index 0000000000..d7814d6275
--- /dev/null
+++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToImage.cxx
@@ -0,0 +1,70 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+
+/*===========================================================================*/
+/*===============================[ Includes ]================================*/
+/*===========================================================================*/
+#include "otbGeometriesProjectionFilter.h"
+#include "otbGeometriesSet.h"
+#include "otbImage.h"
+#include "otbImageFileReader.h"
+
+/*===========================================================================*/
+/*==============================[ other stuff ]==============================*/
+/*===========================================================================*/
+int otbGeometriesProjectionFilterFromMapToImage(int argc, char * argv[])
+{
+  if (argc < 4)
+    {
+    std::cerr << argv[0] << " <input vector filename> <input image filename>"
+              << " <output vector filename>\n";
+    return EXIT_FAILURE;
+    }
+
+  // Input Geometries set
+  typedef otb::GeometriesSet                InputGeometriesType;
+  typedef otb::GeometriesSet                OutputGeometriesType;
+  otb::ogr::DataSource::Pointer input = otb::ogr::DataSource::New(
+    argv[1], otb::ogr::DataSource::Modes::read);
+  InputGeometriesType::Pointer in_set = InputGeometriesType::New(input);
+
+  // Input Keywordlist (from image)
+  typedef otb::Image<unsigned short int, 2> ImageType;
+  typedef otb::ImageFileReader<ImageType>   ImageReaderType;
+  ImageReaderType::Pointer imageReader = ImageReaderType::New();
+  imageReader->SetFileName(argv[2]);
+  imageReader->UpdateOutputInformation();
+
+  // Output Geometries Set
+  otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New(
+    argv[3], otb::ogr::DataSource::Modes::write);
+  OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output);
+
+  // Filter
+  typedef otb::GeometriesProjectionFilter   GeometriesFilterType;
+  GeometriesFilterType::Pointer filter = GeometriesFilterType::New();
+  filter->SetInput(in_set);
+  filter->SetOutput(out_set);
+  filter->SetOutputProjectionRef(imageReader->GetOutput()->GetProjectionRef());
+  filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin());
+  filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing());
+
+  filter->Update();
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx
new file mode 100644
index 0000000000..ff578f526c
--- /dev/null
+++ b/Testing/Code/Projections/otbGeometriesProjectionFilterFromMapToSensor.cxx
@@ -0,0 +1,70 @@
+/*=========================================================================
+
+  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.
+
+=========================================================================*/
+
+/*===========================================================================*/
+/*===============================[ Includes ]================================*/
+/*===========================================================================*/
+#include "otbGeometriesProjectionFilter.h"
+#include "otbGeometriesSet.h"
+#include "otbImage.h"
+#include "otbImageFileReader.h"
+
+/*===========================================================================*/
+/*==============================[ other stuff ]==============================*/
+/*===========================================================================*/
+int otbGeometriesProjectionFilterFromMapToSensor(int argc, char * argv[])
+{
+  if (argc < 4)
+    {
+    std::cerr << argv[0] << " <input vector filename> <input image filename>"
+              << " <output vector filename>\n";
+    return EXIT_FAILURE;
+    }
+
+  // Input Geometries set
+  typedef otb::GeometriesSet                InputGeometriesType;
+  typedef otb::GeometriesSet                OutputGeometriesType;
+  otb::ogr::DataSource::Pointer input = otb::ogr::DataSource::New(
+    argv[1], otb::ogr::DataSource::Modes::read);
+  InputGeometriesType::Pointer in_set = InputGeometriesType::New(input);
+
+  // Input Keywordlist (from image)
+  typedef otb::Image<unsigned short int, 2> ImageType;
+  typedef otb::ImageFileReader<ImageType>   ImageReaderType;
+  ImageReaderType::Pointer imageReader = ImageReaderType::New();
+  imageReader->SetFileName(argv[2]);
+  imageReader->UpdateOutputInformation();
+
+  // Output Geometries Set
+  otb::ogr::DataSource::Pointer output = otb::ogr::DataSource::New(
+    argv[3], otb::ogr::DataSource::Modes::write);
+  OutputGeometriesType::Pointer out_set = OutputGeometriesType::New(output);
+
+  // Filter
+  typedef otb::GeometriesProjectionFilter   GeometriesFilterType;
+  GeometriesFilterType::Pointer filter = GeometriesFilterType::New();
+  filter->SetInput(in_set);
+  filter->SetOutput(out_set);
+  filter->SetOutputKeywordList(imageReader->GetOutput()->GetImageKeywordlist());
+  filter->SetOutputOrigin(imageReader->GetOutput()->GetOrigin());
+  filter->SetOutputSpacing(imageReader->GetOutput()->GetSpacing());
+
+  filter->Update();
+
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/Projections/otbProjectionsTests3.cxx b/Testing/Code/Projections/otbProjectionsTests3.cxx
index 298607bcc6..3ddbb05d76 100644
--- a/Testing/Code/Projections/otbProjectionsTests3.cxx
+++ b/Testing/Code/Projections/otbProjectionsTests3.cxx
@@ -39,7 +39,6 @@ void RegisterTests()
   REGISTER_TEST(otbVectorDataProjectionFilterFromMapToGeo);
   REGISTER_TEST(otbVectorDataProjectionFilterFromMapToImage);
   REGISTER_TEST(otbVectorDataProjectionFilterFromGeoToMap);
-  REGISTER_TEST(otbGeometriesProjectionFilter);
   REGISTER_TEST(otbGeocentricTransformNew);
   REGISTER_TEST(otbGeocentricTransform);
   REGISTER_TEST(otbTileMapTransform);
@@ -47,6 +46,11 @@ void RegisterTests()
   REGISTER_TEST(otbVectorDataIntoImageProjectionFilterTest);
   REGISTER_TEST(otbGenericRSTransformGenericConversionCheckingFromGCP);
   REGISTER_TEST(otbForwardBackwardProjectionConsistency);
+  REGISTER_TEST(otbGeometriesProjectionFilter);
+  REGISTER_TEST(otbGeometriesProjectionFilterFromMapToSensor);
+  REGISTER_TEST(otbGeometriesProjectionFilterFromMapToGeo);
+  REGISTER_TEST(otbGeometriesProjectionFilterFromMapToImage);
+  REGISTER_TEST(otbGeometriesProjectionFilterFromGeoToMap);
   REGISTER_TEST(otbGeometriesProjectionFilterFromMapToEPSG);
 
 }
-- 
GitLab