diff --git a/Testing/Code/Projections/CMakeLists.txt b/Testing/Code/Projections/CMakeLists.txt
index 749b03674402d844d126785aae54fb2316fe608c..609a8ffc86cd8031b26606fa8c0b993b82daec77 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 0041185ff63af71a2f4b20f41a43ff6aed1c812e..ffdb58408bcabf18d9367fbf719293749cf2ae02 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 0000000000000000000000000000000000000000..0e3d8bc63a6325b855a49e9a3e6ef38725146923
--- /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 0000000000000000000000000000000000000000..91c927db4f93d28dffcbf843d0ebd3d6d223e103
--- /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 0000000000000000000000000000000000000000..d7814d6275d1bdabd266ab096c56f71dd41d3901
--- /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 0000000000000000000000000000000000000000..ff578f526cfc21aed17161cdf54cf3bb3f3a43e2
--- /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 298607bcc6d96e86f7efb49ef863b4fdb2e5c6fa..3ddbb05d764469cb5b1eaaa267bf03112d492b58 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);
 
 }