diff --git a/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx b/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx
index 88329ba83c6e8e26ccfd51b0a4f5856ffb521967..180b1ac8158058deb1137292abd5c51e13bbf7e0 100755
--- a/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx
+++ b/Testing/Code/Projections/otbCreateInverseForwardSensorModel.cxx
@@ -45,59 +45,37 @@
 
 int otbCreateInverseForwardSensorModel( int argc, char* argv[] )
 {
-  try
-    {
-        ossimInit::instance()->initialize(argc, argv);
+  ossimInit::instance()->initialize(argc, argv);
 
-        if(argc!=2)
-        {
-                std::cout << argv[0] <<" <input filename>" << std::endl;
-                return EXIT_FAILURE;
-        }
+  if(argc!=2)
+    {
+      std::cout << argv[0] <<" <input filename>" << std::endl;
+      return EXIT_FAILURE;
+    }
    
-        typedef otb::Image<unsigned int, 2>     ImageType;
-        typedef otb::ImageFileReader<ImageType> ReaderType;
-        typedef otb::InverseSensorModel<double> InverseModelType;
-        typedef otb::ForwardSensorModel<double> ForwardModelType;
-
-        //Allocate pointer
-        InverseModelType::Pointer               inverse_model= InverseModelType::New();
-        ForwardModelType::Pointer               forward_model= ForwardModelType::New();
-        ReaderType::Pointer	                reader=ReaderType::New();
+  typedef otb::Image<unsigned int, 2>     ImageType;
+  typedef otb::ImageFileReader<ImageType> ReaderType;
+  typedef otb::InverseSensorModel<double> InverseModelType;
+  typedef otb::ForwardSensorModel<double> ForwardModelType;
+
+  //Allocate pointer
+  InverseModelType::Pointer               inverse_model= InverseModelType::New();
+  ForwardModelType::Pointer               forward_model= ForwardModelType::New();
+  ReaderType::Pointer	                reader=ReaderType::New();
         
-        // Set parameters ...
-        reader->SetFileName(argv[1]);
-
-        // Read meta data (ossimKeywordlist)
-        reader->GenerateOutputInformation();
-        ImageType::Pointer inputImage = reader->GetOutput();
-
-        //Leve une exception si le model n'est pas créé
-        otbGenericMsgDebugMacro(<< "Inverse model creation..." ); 
-        inverse_model->SetImageGeometry(inputImage->GetImageKeywordlist());
-        otbGenericMsgDebugMacro(<< "Foreward model creation..." ); 
-        forward_model->SetImageGeometry(inputImage->GetImageKeywordlist());
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  return EXIT_SUCCESS;
+  // Set parameters ...
+  reader->SetFileName(argv[1]);
 
+  // Read meta data (ossimKeywordlist)
+  reader->GenerateOutputInformation();
+  ImageType::Pointer inputImage = reader->GetOutput();
 
+  //Leve une exception si le model n'est pas créé
+  otbGenericMsgDebugMacro(<< "Inverse model creation..." ); 
+  inverse_model->SetImageGeometry(inputImage->GetImageKeywordlist());
+  otbGenericMsgDebugMacro(<< "Foreward model creation..." ); 
+  forward_model->SetImageGeometry(inputImage->GetImageKeywordlist());
 
-}//Fin main()
-
+ 
+  return EXIT_SUCCESS;
+}
diff --git a/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx b/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx
index 159321c57dd9226d6d6da77f3097a24f812cfce1..2b1bb4c9c2a2ce82a3c60d1571d81c56ebdd943d 100755
--- a/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx
+++ b/Testing/Code/Projections/otbCreateProjectionWithOSSIM.cxx
@@ -57,64 +57,45 @@
 
 int otbCreateProjectionWithOSSIM( int argc, char* argv[] )
 {
-  try 
-    {        
+  ossimInit::instance()->initialize(argc, argv);
 
-        ossimInit::instance()->initialize(argc, argv);
+  if(argc!=2)
+    {
+      std::cout << argv[0] <<" <input filename> " << std::endl;
 
-        if(argc!=2)
-        {
-                std::cout << argv[0] <<" <input filename> " << std::endl;
-
-                return EXIT_FAILURE;
-        }
+      return EXIT_FAILURE;
+    }
    
         
-        otbGenericMsgDebugMacro(<< "Creating handler..." );
-        ossimImageHandler *handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(argv[1]));  
-        if(!handler)
-        {
-                itkGenericExceptionMacro(<<"Unable to open input image "<<argv[1]);
-        }  
+  otbGenericMsgDebugMacro(<< "Creating handler..." );
+  ossimImageHandler *handler = ossimImageHandlerRegistry::instance()->open(ossimFilename(argv[1]));  
+  if(!handler)
+    {
+      itkGenericExceptionMacro(<<"Unable to open input image "<<argv[1]);
+    }  
    
-        ossimKeywordlist geom;
-        otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." );
-        handler->getImageGeometry(geom);
-        ossimGpt ossimGPoint(0,0);
-        ossimDpt ossimDPoint;
-        otbGenericMsgDebugMacro(<< "Creating projection..." );
-        ossimProjection * model = NULL;
-        model = ossimProjectionFactoryRegistry::instance()->createProjection(geom);
-        if( model == NULL)
-        {
-                itkGenericExceptionMacro(<<"Invalid Model * == NULL !");
-        }
-
-        otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." );
-        ossimRefPtr<ossimProjection> ptrmodel = model;
-        if( ptrmodel.valid() == false )
-        {
-                itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !");
-        }
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+  ossimKeywordlist geom;
+  otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." );
+  handler->getImageGeometry(geom);
+  ossimGpt ossimGPoint(0,0);
+  ossimDpt ossimDPoint;
+  otbGenericMsgDebugMacro(<< "Creating projection..." );
+  ossimProjection * model = NULL;
+  model = ossimProjectionFactoryRegistry::instance()->createProjection(geom);
+  if( model == NULL)
+    {
+      itkGenericExceptionMacro(<<"Invalid Model * == NULL !");
+    }
+
+  otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." );
+  ossimRefPtr<ossimProjection> ptrmodel = model;
+  if( ptrmodel.valid() == false )
+    {
+      itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !");
+    }
+
+  
   return EXIT_SUCCESS;
 
- }//Fin main()
+}
 
diff --git a/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx b/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx
index c7bbace709a1b259b9abf187db8034032e990a44..23364b0080377ba2d9a81a067ee96b349a64e023 100755
--- a/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx
+++ b/Testing/Code/Projections/otbCreateProjectionWithOTB.cxx
@@ -57,80 +57,61 @@
 
 int otbCreateProjectionWithOTB( int argc, char* argv[] )
 {
-  try 
-    {        
+  ossimInit::instance()->initialize(argc, argv);
 
-        ossimInit::instance()->initialize(argc, argv);
+  if(argc!=2)
+    {
+      std::cout << argv[0] <<" <input filename> " << std::endl;
 
-        if(argc!=2)
-        {
-                std::cout << argv[0] <<" <input filename> " << std::endl;
-
-                return EXIT_FAILURE;
-        }
+      return EXIT_FAILURE;
+    }
         
-        typedef otb::Image<unsigned int, 2>     ImageType;
-        typedef otb::ImageFileReader<ImageType>  ReaderType;
-        ReaderType::Pointer	                 reader=ReaderType::New();
-        reader->SetFileName(argv[1]);
-
-        //Read meta data (ossimKeywordlist)
-        reader->GenerateOutputInformation();
-
-        otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." );
-        otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist();
-
-        ossimKeywordlist geom;
-        otb_image_keywordlist.convertToOSSIMKeywordlist(geom);
-
-        otbGenericMsgDebugMacro(<< "ossim Keywordlist:"<<geom ); 
-
-/*
-        typedef otb::InverseSensorModel<double>  ModelType;
-        ModelType::Pointer   model= ModelType::New();
-        otbGenericMsgDebugMacro(<< "Model set geometry " ); 
-      model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau.
-         if(!model)
-      {
-       otbGenericMsgDebugMacro(<< "Unable to create a model");
-         return 1;
-      }
-*/
-        ossimGpt ossimGPoint(0,0);
-        ossimDpt ossimDPoint;
-        ossimProjection * model = NULL;
-        otbGenericMsgDebugMacro(<< "Creating projection..." );
-        model = ossimProjectionFactoryRegistry::instance()->createProjection(geom);
-        if( model == NULL)
-        {
-                itkGenericExceptionMacro(<<"Invalid Model * == NULL !");
-        }
-
-        otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." );
-        ossimRefPtr<ossimProjection> ptrmodel = model;
-        if( ptrmodel.valid() == false )
-        {
-                itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !");
-        }
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+  typedef otb::Image<unsigned int, 2>     ImageType;
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  ReaderType::Pointer	                 reader=ReaderType::New();
+  reader->SetFileName(argv[1]);
+
+  //Read meta data (ossimKeywordlist)
+  reader->GenerateOutputInformation();
+
+  otbGenericMsgDebugMacro(<< "Read ossim Keywordlist..." );
+  otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist();
+
+  ossimKeywordlist geom;
+  otb_image_keywordlist.convertToOSSIMKeywordlist(geom);
+
+  otbGenericMsgDebugMacro(<< "ossim Keywordlist:"<<geom ); 
+
+  /*
+    typedef otb::InverseSensorModel<double>  ModelType;
+    ModelType::Pointer   model= ModelType::New();
+    otbGenericMsgDebugMacro(<< "Model set geometry " ); 
+    model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau.
+    if(!model)
+    {
+    otbGenericMsgDebugMacro(<< "Unable to create a model");
+    return 1;
+    }
+  */
+  ossimGpt ossimGPoint(0,0);
+  ossimDpt ossimDPoint;
+  ossimProjection * model = NULL;
+  otbGenericMsgDebugMacro(<< "Creating projection..." );
+  model = ossimProjectionFactoryRegistry::instance()->createProjection(geom);
+  if( model == NULL)
+    {
+      itkGenericExceptionMacro(<<"Invalid Model * == NULL !");
+    }
+
+  otbGenericMsgDebugMacro(<< "Creating RefPtr of projection..." );
+  ossimRefPtr<ossimProjection> ptrmodel = model;
+  if( ptrmodel.valid() == false )
+    {
+      itkGenericExceptionMacro(<<"Invalid Model pointer .valid() == false !");
+    }
+
+  
   return EXIT_SUCCESS;
 
- }//Fin main()
+}
 
diff --git a/Testing/Code/Projections/otbMapProjectionsNew.cxx b/Testing/Code/Projections/otbMapProjectionsNew.cxx
index 1425d7f37af40167e17df18aaddb34dbd4c11294..afe9f9e67f7f218efab47b22f46a64d30ff4c377 100755
--- a/Testing/Code/Projections/otbMapProjectionsNew.cxx
+++ b/Testing/Code/Projections/otbMapProjectionsNew.cxx
@@ -26,85 +26,67 @@
 #include "otbMapProjections.h"
 
 int otbMapProjectionsNew( int argc, char* argv[] )
-{
-  try 
-    {        
-        otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New();
-        otb::AlbersForwardProjection::Pointer lAlbersProjection2 = otb::AlbersForwardProjection::New();
-        otb::AzimEquDistInverseProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistInverseProjection::New();
-        otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection2 = otb::AzimEquDistForwardProjection::New();
-//Comment for OTB 2.2.0 because OSSIM error code -> generate Exception Fault on VS 7.1 only on Debug mode.
-//        otb::BngInverseProjection::Pointer lBngProjection = otb::BngInverseProjection::New();
-//        otb::BngForwardProjection::Pointer lBngProjection2 = otb::BngForwardProjection::New();
-        otb::BonneInverseProjection::Pointer lBonneProjection = otb::BonneInverseProjection::New();
-        otb::BonneForwardProjection::Pointer lBonneProjection2 = otb::BonneForwardProjection::New();
-				otb::CadrgInverseProjection::Pointer lCadrgProjection = otb::CadrgInverseProjection::New();
-				otb::CadrgForwardProjection::Pointer lCadrgProjection2 = otb::CadrgForwardProjection::New();				
-        otb::CassiniInverseProjection::Pointer lCassiniProjection = otb::CassiniInverseProjection::New();
-        otb::CassiniForwardProjection::Pointer lCassiniProjection2 = otb::CassiniForwardProjection::New();
-        otb::CylEquAreaInverseProjection::Pointer lCylEquAreaProjection = otb::CylEquAreaInverseProjection::New();
-        otb::CylEquAreaForwardProjection::Pointer lCylEquAreaProjection2 = otb::CylEquAreaForwardProjection::New();
-        otb::Eckert4InverseProjection::Pointer lEckert4Projection = otb::Eckert4InverseProjection::New();
-        otb::Eckert4ForwardProjection::Pointer lEckert4Projection2 = otb::Eckert4ForwardProjection::New();
-        otb::Eckert6InverseProjection::Pointer lEckert6Projection = otb::Eckert6InverseProjection::New();
-        otb::Eckert6ForwardProjection::Pointer lEckert6Projection2 = otb::Eckert6ForwardProjection::New();
-        otb::GnomonicInverseProjection::Pointer lGnomonicProjection = otb::GnomonicInverseProjection::New();
-        otb::GnomonicForwardProjection::Pointer lGnomonicProjection2 = otb::GnomonicForwardProjection::New();				
-        otb::LambertConformalConicInverseProjection::Pointer lLambertConformalConicProjection = otb::LambertConformalConicInverseProjection::New();
-        otb::LambertConformalConicForwardProjection::Pointer lLambertConformalConicProjection2 = otb::LambertConformalConicForwardProjection::New();
-        otb::LlxyInverseProjection::Pointer lLlxyProjection = otb::LlxyInverseProjection::New();
-        otb::LlxyForwardProjection::Pointer lLlxyProjection2 = otb::LlxyForwardProjection::New();				
-        otb::EquDistCylInverseProjection::Pointer lEquDistCylProjection = otb::EquDistCylInverseProjection::New();
-        otb::EquDistCylForwardProjection::Pointer lEquDistCylProjection2 = otb::EquDistCylForwardProjection::New();				
-        otb::MercatorInverseProjection::Pointer lMercatorProjection = otb::MercatorInverseProjection::New();
-        otb::MercatorForwardProjection::Pointer lMercatorProjection2 = otb::MercatorForwardProjection::New();
-        otb::MillerInverseProjection::Pointer lMillerProjection = otb::MillerInverseProjection::New();
-        otb::MillerForwardProjection::Pointer lMillerProjection2 = otb::MillerForwardProjection::New();				
-        otb::MollweidInverseProjection::Pointer lMollweidProjection = otb::MollweidInverseProjection::New();
-        otb::MollweidForwardProjection::Pointer lMollweidProjection2 = otb::MollweidForwardProjection::New();				
-        otb::NewZealandMapGridInverseProjection::Pointer lNewZealandMapGridProjection = otb::NewZealandMapGridInverseProjection::New();
-        otb::NewZealandMapGridForwardProjection::Pointer lNewZealandMapGridProjection2 = otb::NewZealandMapGridForwardProjection::New();				
-        otb::ObliqueMercatorInverseProjection::Pointer lObliqueMercatorProjection = otb::ObliqueMercatorInverseProjection::New();
-        otb::ObliqueMercatorForwardProjection::Pointer lObliqueMercatorProjection2 = otb::ObliqueMercatorForwardProjection::New();				
-        otb::OrthoGraphicInverseProjection::Pointer lOrthoGraphicProjection = otb::OrthoGraphicInverseProjection::New();
-        otb::OrthoGraphicForwardProjection::Pointer lOrthoGraphicProjection2 = otb::OrthoGraphicForwardProjection::New();
-        otb::PolarStereoInverseProjection::Pointer lPolarStereoProjection = otb::PolarStereoInverseProjection::New();
-        otb::PolarStereoForwardProjection::Pointer lPolarStereoProjection2 = otb::PolarStereoForwardProjection::New();
-        otb::PolyconicInverseProjection::Pointer lPolyconicProjection = otb::PolyconicInverseProjection::New();
-        otb::PolyconicForwardProjection::Pointer lPolyconicProjection2 = otb::PolyconicForwardProjection::New();				
-        otb::SinusoidalInverseProjection::Pointer lSinusoidalProjection = otb::SinusoidalInverseProjection::New();
-        otb::SinusoidalForwardProjection::Pointer lSinusoidalProjection2 = otb::SinusoidalForwardProjection::New();				
-        otb::SpaceObliqueMercatorInverseProjection::Pointer lSpaceObliqueMercatorProjection = otb::SpaceObliqueMercatorInverseProjection::New();
-        otb::SpaceObliqueMercatorForwardProjection::Pointer lSpaceObliqueMercatorProjection2 = otb::SpaceObliqueMercatorForwardProjection::New();				
-        otb::StereographicInverseProjection::Pointer lStereographicProjection = otb::StereographicInverseProjection::New();
-        otb::StereographicForwardProjection::Pointer lStereographicProjection2 = otb::StereographicForwardProjection::New();				
-        otb::TransCylEquAreaInverseProjection::Pointer lTransCylEquAreaProjection = otb::TransCylEquAreaInverseProjection::New();
-        otb::TransCylEquAreaForwardProjection::Pointer lTransCylEquAreaProjection2 = otb::TransCylEquAreaForwardProjection::New();				
-        otb::TransMercatorInverseProjection::Pointer lTransMercatorProjection = otb::TransMercatorInverseProjection::New();
-        otb::TransMercatorForwardProjection::Pointer lTransMercatorProjection2 = otb::TransMercatorForwardProjection::New();				
-        otb::UpsInverseProjection::Pointer lUpsProjection = otb::UpsInverseProjection::New();
-        otb::UpsForwardProjection::Pointer lUpsProjection2 = otb::UpsForwardProjection::New();				
-        otb::UtmInverseProjection::Pointer lUtmProjection = otb::UtmInverseProjection::New();
-        otb::UtmForwardProjection::Pointer lUtmProjection2 = otb::UtmForwardProjection::New();				
-        otb::VanDerGrintenInverseProjection::Pointer lVanDerGrintenProjection = otb::VanDerGrintenInverseProjection::New();
-        otb::VanDerGrintenForwardProjection::Pointer lVanDerGrintenProjection2 = otb::VanDerGrintenForwardProjection::New();				
-
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  // Software Guide : EndCodeSnippet
-
-//#endif
+{ 
+  otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New();
+  otb::AlbersForwardProjection::Pointer lAlbersProjection2 = otb::AlbersForwardProjection::New();
+  otb::AzimEquDistInverseProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistInverseProjection::New();
+  otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection2 = otb::AzimEquDistForwardProjection::New();
+  //Comment for OTB 2.2.0 because OSSIM error code -> generate Exception Fault on VS 7.1 only on Debug mode.
+  //        otb::BngInverseProjection::Pointer lBngProjection = otb::BngInverseProjection::New();
+  //        otb::BngForwardProjection::Pointer lBngProjection2 = otb::BngForwardProjection::New();
+  otb::BonneInverseProjection::Pointer lBonneProjection = otb::BonneInverseProjection::New();
+  otb::BonneForwardProjection::Pointer lBonneProjection2 = otb::BonneForwardProjection::New();
+  otb::CadrgInverseProjection::Pointer lCadrgProjection = otb::CadrgInverseProjection::New();
+  otb::CadrgForwardProjection::Pointer lCadrgProjection2 = otb::CadrgForwardProjection::New();				
+  otb::CassiniInverseProjection::Pointer lCassiniProjection = otb::CassiniInverseProjection::New();
+  otb::CassiniForwardProjection::Pointer lCassiniProjection2 = otb::CassiniForwardProjection::New();
+  otb::CylEquAreaInverseProjection::Pointer lCylEquAreaProjection = otb::CylEquAreaInverseProjection::New();
+  otb::CylEquAreaForwardProjection::Pointer lCylEquAreaProjection2 = otb::CylEquAreaForwardProjection::New();
+  otb::Eckert4InverseProjection::Pointer lEckert4Projection = otb::Eckert4InverseProjection::New();
+  otb::Eckert4ForwardProjection::Pointer lEckert4Projection2 = otb::Eckert4ForwardProjection::New();
+  otb::Eckert6InverseProjection::Pointer lEckert6Projection = otb::Eckert6InverseProjection::New();
+  otb::Eckert6ForwardProjection::Pointer lEckert6Projection2 = otb::Eckert6ForwardProjection::New();
+  otb::GnomonicInverseProjection::Pointer lGnomonicProjection = otb::GnomonicInverseProjection::New();
+  otb::GnomonicForwardProjection::Pointer lGnomonicProjection2 = otb::GnomonicForwardProjection::New();				
+  otb::LambertConformalConicInverseProjection::Pointer lLambertConformalConicProjection = otb::LambertConformalConicInverseProjection::New();
+  otb::LambertConformalConicForwardProjection::Pointer lLambertConformalConicProjection2 = otb::LambertConformalConicForwardProjection::New();
+  otb::LlxyInverseProjection::Pointer lLlxyProjection = otb::LlxyInverseProjection::New();
+  otb::LlxyForwardProjection::Pointer lLlxyProjection2 = otb::LlxyForwardProjection::New();				
+  otb::EquDistCylInverseProjection::Pointer lEquDistCylProjection = otb::EquDistCylInverseProjection::New();
+  otb::EquDistCylForwardProjection::Pointer lEquDistCylProjection2 = otb::EquDistCylForwardProjection::New();				
+  otb::MercatorInverseProjection::Pointer lMercatorProjection = otb::MercatorInverseProjection::New();
+  otb::MercatorForwardProjection::Pointer lMercatorProjection2 = otb::MercatorForwardProjection::New();
+  otb::MillerInverseProjection::Pointer lMillerProjection = otb::MillerInverseProjection::New();
+  otb::MillerForwardProjection::Pointer lMillerProjection2 = otb::MillerForwardProjection::New();				
+  otb::MollweidInverseProjection::Pointer lMollweidProjection = otb::MollweidInverseProjection::New();
+  otb::MollweidForwardProjection::Pointer lMollweidProjection2 = otb::MollweidForwardProjection::New();				
+  otb::NewZealandMapGridInverseProjection::Pointer lNewZealandMapGridProjection = otb::NewZealandMapGridInverseProjection::New();
+  otb::NewZealandMapGridForwardProjection::Pointer lNewZealandMapGridProjection2 = otb::NewZealandMapGridForwardProjection::New();				
+  otb::ObliqueMercatorInverseProjection::Pointer lObliqueMercatorProjection = otb::ObliqueMercatorInverseProjection::New();
+  otb::ObliqueMercatorForwardProjection::Pointer lObliqueMercatorProjection2 = otb::ObliqueMercatorForwardProjection::New();				
+  otb::OrthoGraphicInverseProjection::Pointer lOrthoGraphicProjection = otb::OrthoGraphicInverseProjection::New();
+  otb::OrthoGraphicForwardProjection::Pointer lOrthoGraphicProjection2 = otb::OrthoGraphicForwardProjection::New();
+  otb::PolarStereoInverseProjection::Pointer lPolarStereoProjection = otb::PolarStereoInverseProjection::New();
+  otb::PolarStereoForwardProjection::Pointer lPolarStereoProjection2 = otb::PolarStereoForwardProjection::New();
+  otb::PolyconicInverseProjection::Pointer lPolyconicProjection = otb::PolyconicInverseProjection::New();
+  otb::PolyconicForwardProjection::Pointer lPolyconicProjection2 = otb::PolyconicForwardProjection::New();				
+  otb::SinusoidalInverseProjection::Pointer lSinusoidalProjection = otb::SinusoidalInverseProjection::New();
+  otb::SinusoidalForwardProjection::Pointer lSinusoidalProjection2 = otb::SinusoidalForwardProjection::New();				
+  otb::SpaceObliqueMercatorInverseProjection::Pointer lSpaceObliqueMercatorProjection = otb::SpaceObliqueMercatorInverseProjection::New();
+  otb::SpaceObliqueMercatorForwardProjection::Pointer lSpaceObliqueMercatorProjection2 = otb::SpaceObliqueMercatorForwardProjection::New();				
+  otb::StereographicInverseProjection::Pointer lStereographicProjection = otb::StereographicInverseProjection::New();
+  otb::StereographicForwardProjection::Pointer lStereographicProjection2 = otb::StereographicForwardProjection::New();				
+  otb::TransCylEquAreaInverseProjection::Pointer lTransCylEquAreaProjection = otb::TransCylEquAreaInverseProjection::New();
+  otb::TransCylEquAreaForwardProjection::Pointer lTransCylEquAreaProjection2 = otb::TransCylEquAreaForwardProjection::New();				
+  otb::TransMercatorInverseProjection::Pointer lTransMercatorProjection = otb::TransMercatorInverseProjection::New();
+  otb::TransMercatorForwardProjection::Pointer lTransMercatorProjection2 = otb::TransMercatorForwardProjection::New();				
+  otb::UpsInverseProjection::Pointer lUpsProjection = otb::UpsInverseProjection::New();
+  otb::UpsForwardProjection::Pointer lUpsProjection2 = otb::UpsForwardProjection::New();				
+  otb::UtmInverseProjection::Pointer lUtmProjection = otb::UtmInverseProjection::New();
+  otb::UtmForwardProjection::Pointer lUtmProjection2 = otb::UtmForwardProjection::New();				
+  otb::VanDerGrintenInverseProjection::Pointer lVanDerGrintenProjection = otb::VanDerGrintenInverseProjection::New();
+  otb::VanDerGrintenForwardProjection::Pointer lVanDerGrintenProjection2 = otb::VanDerGrintenForwardProjection::New();				
+  
   return EXIT_SUCCESS;
 }
 
diff --git a/Testing/Code/Projections/otbOrthoRectificationFilter.cxx b/Testing/Code/Projections/otbOrthoRectificationFilter.cxx
index 21dde57a19a022e2de03c8f055950564be0829ba..8daa9c36fff476627e2a657981d8ead81aac8454 100644
--- a/Testing/Code/Projections/otbOrthoRectificationFilter.cxx
+++ b/Testing/Code/Projections/otbOrthoRectificationFilter.cxx
@@ -41,83 +41,66 @@
 int otbOrthoRectificationFilter( int argc, char* argv[] )
 {
   ossimInit::instance()->initialize(argc, argv);
-  try 
-  { 
-    if(argc!=11)
+  if(argc!=11)
     {
       std::cout << argv[0] <<" <input filename> <output filename> <origin easting> <origin northing> <x size> <y size> <x spacing> <y spacing> <UTM zone <UTM hemisphere>" 
-          << std::endl;
+		<< std::endl;
 
       return EXIT_FAILURE;
     }
    
-    typedef otb::Image<double, 2>     ImageType;
-    typedef otb::ImageFileReader<ImageType>  ReaderType;
-    typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
-    typedef otb::UtmInverseProjection UtmMapProjectionType ;
-    typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
+  typedef otb::Image<double, 2>     ImageType;
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
+  typedef otb::UtmInverseProjection UtmMapProjectionType ;
+  typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
               
-        //Allocate pointer
-    ReaderType::Pointer             reader = ReaderType::New();
-    WriterType::Pointer             writer = WriterType::New();
+  //Allocate pointer
+  ReaderType::Pointer             reader = ReaderType::New();
+  WriterType::Pointer             writer = WriterType::New();
 
-    OrthoRectifFilterType::Pointer  orthoRectifFilter = OrthoRectifFilterType::New();
-    UtmMapProjectionType::Pointer   utmMapProjection = UtmMapProjectionType::New();
+  OrthoRectifFilterType::Pointer  orthoRectifFilter = OrthoRectifFilterType::New();
+  UtmMapProjectionType::Pointer   utmMapProjection = UtmMapProjectionType::New();
                                 
-        // Set parameters ...
-    reader->SetFileName(argv[1]);
-    writer->SetFileName(argv[2]);
+  // Set parameters ...
+  reader->SetFileName(argv[1]);
+  writer->SetFileName(argv[2]);
 
-    reader->GenerateOutputInformation();
-    std::cout<<reader->GetOutput()<<std::endl;
+  reader->GenerateOutputInformation();
+  std::cout<<reader->GetOutput()<<std::endl;
         
-    orthoRectifFilter->SetInput(reader->GetOutput());
+  orthoRectifFilter->SetInput(reader->GetOutput());
         
-    ImageType::IndexType start;
-    start[0]=0;
-    start[1]=0;
-    orthoRectifFilter->SetOutputStartIndex(start);
+  ImageType::IndexType start;
+  start[0]=0;
+  start[1]=0;
+  orthoRectifFilter->SetOutputStartIndex(start);
         
-    ImageType::SizeType size;
-    size[0]=atoi(argv[5]);      // X size
-    size[1]=atoi(argv[6]);            //Y size
-    orthoRectifFilter->SetSize(size);
+  ImageType::SizeType size;
+  size[0]=atoi(argv[5]);      // X size
+  size[1]=atoi(argv[6]);            //Y size
+  orthoRectifFilter->SetSize(size);
         
-    ImageType::SpacingType spacing;
-    spacing[0]=atof(argv[7]);
-    spacing[1]=atof(argv[8]);
-    orthoRectifFilter->SetOutputSpacing(spacing);
+  ImageType::SpacingType spacing;
+  spacing[0]=atof(argv[7]);
+  spacing[1]=atof(argv[8]);
+  orthoRectifFilter->SetOutputSpacing(spacing);
         
-    ImageType::PointType origin;
-    origin[0]=strtod(argv[3], NULL);         //Origin easting 
-    origin[1]=strtod(argv[4], NULL);         //Origin northing
-    orthoRectifFilter->SetOutputOrigin(origin);
+  ImageType::PointType origin;
+  origin[0]=strtod(argv[3], NULL);         //Origin easting 
+  origin[1]=strtod(argv[4], NULL);         //Origin northing
+  orthoRectifFilter->SetOutputOrigin(origin);
         
-    utmMapProjection->SetZone(atoi(argv[9]));
-    utmMapProjection->SetHemisphere(argv[10][0]);
-    orthoRectifFilter->SetMapProjection(utmMapProjection);
+  utmMapProjection->SetZone(atoi(argv[9]));
+  utmMapProjection->SetHemisphere(argv[10][0]);
+  orthoRectifFilter->SetMapProjection(utmMapProjection);
 
-    writer->SetInput(orthoRectifFilter->GetOutput());
+  writer->SetInput(orthoRectifFilter->GetOutput());
                           
-    writer->SetTilingStreamDivisions();
-    writer->Update();
-  } 
-  catch( itk::ExceptionObject & err ) 
-  { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( std::bad_alloc & err ) 
-  { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( ... ) 
-  { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-  } 
+  writer->SetTilingStreamDivisions();
+
+  writer->Update();
+
   return EXIT_SUCCESS;
-}//Fin main()
+}
 
diff --git a/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx b/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx
index 41d0e1078a3ca5e2acd82061e80bbb37932a0eef..27c0c893ae298f31c83e6b4423b98dfb36d847dc 100755
--- a/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx
+++ b/Testing/Code/Projections/otbOrthoRectificationFilterNew.cxx
@@ -24,13 +24,13 @@
 
 int otbOrthoRectificationFilterNew( int argc, char* argv[] )
 {
-        typedef otb::Image<double, 2>     ImageType;
-        typedef otb::UtmInverseProjection UtmMapProjectionType ;
-        typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
- 				
-        OrthoRectifFilterType::Pointer          orthoRectifFilter=OrthoRectifFilterType::New();
-				
-        return EXIT_SUCCESS;
-
- }//Fin main()
+  typedef otb::Image<double, 2>     ImageType;
+  typedef otb::UtmInverseProjection UtmMapProjectionType ;
+  typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
+  
+  OrthoRectifFilterType::Pointer          orthoRectifFilter=OrthoRectifFilterType::New();
+  
+  return EXIT_SUCCESS;
+  
+}
 
diff --git a/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx b/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx
index 009ee703ec38220857cbe458f27100114098985f..b4426774ccd93cf6795b5f23cb389d61440c9956 100644
--- a/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx
+++ b/Testing/Code/Projections/otbOrthoRectificationFilterWithDEM.cxx
@@ -50,12 +50,9 @@
 
 int otbOrthoRectificationFilterWithDEM( int argc, char* argv[] )
 {
-  try 
-  {        
+  ossimInit::instance()->initialize(argc, argv);
 
-    ossimInit::instance()->initialize(argc, argv);
-
-    if(argc!=12)
+  if(argc!=12)
     {
       std::cout << argv[0] <<" <input filename> <output filename>	<origin easting>	<origin northing> <x size> <y size>";
       std::cout << "<x_spacing> <y_spacing> <UTM zone> <UTM hemisphere> <DEM directory>" << std::endl;
@@ -64,77 +61,61 @@ int otbOrthoRectificationFilterWithDEM( int argc, char* argv[] )
     }
    
    
-    typedef otb::Image<double, 2>     ImageType;
-    typedef otb::ImageFileReader<ImageType>  ReaderType;
-    typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
+  typedef otb::Image<double, 2>     ImageType;
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
        
-    typedef otb::UtmInverseProjection UtmMapProjectionType ;
-    typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
+  typedef otb::UtmInverseProjection UtmMapProjectionType ;
+  typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
 				
-        //Allocate pointer
-    ReaderType::Pointer     	reader=ReaderType::New();
-    WriterType::Pointer	    	writer=WriterType::New();
+  //Allocate pointer
+  ReaderType::Pointer     	reader=ReaderType::New();
+  WriterType::Pointer	    	writer=WriterType::New();
 
-    OrthoRectifFilterType::Pointer     	orthoRectifFilter=OrthoRectifFilterType::New();
-    UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New();
+  OrthoRectifFilterType::Pointer     	orthoRectifFilter=OrthoRectifFilterType::New();
+  UtmMapProjectionType::Pointer utmMapProjection = UtmMapProjectionType::New();
 				
-        // Set parameters ...
-    reader->SetFileName(argv[1]);
-    writer->SetFileName(argv[2]);
+  // Set parameters ...
+  reader->SetFileName(argv[1]);
+  writer->SetFileName(argv[2]);
    
-    orthoRectifFilter->SetInput(reader->GetOutput());
+  orthoRectifFilter->SetInput(reader->GetOutput());
 				
-    ImageType::IndexType start;
-    start[0]=0;
-    start[1]=0;
-    orthoRectifFilter->SetOutputStartIndex(start);
+  ImageType::IndexType start;
+  start[0]=0;
+  start[1]=0;
+  orthoRectifFilter->SetOutputStartIndex(start);
 				
-    ImageType::SizeType size;
-    size[0]=atoi(argv[5]);      //X size.
-    size[1]=atoi(argv[6]);	    //Y size
-    orthoRectifFilter->SetSize(size);
+  ImageType::SizeType size;
+  size[0]=atoi(argv[5]);      //X size.
+  size[1]=atoi(argv[6]);	    //Y size
+  orthoRectifFilter->SetSize(size);
 				
-    ImageType::SpacingType spacing;
-    spacing[0]=atof(argv[7]);
-    spacing[1]=atof(argv[8]);
-    orthoRectifFilter->SetOutputSpacing(spacing);
+  ImageType::SpacingType spacing;
+  spacing[0]=atof(argv[7]);
+  spacing[1]=atof(argv[8]);
+  orthoRectifFilter->SetOutputSpacing(spacing);
 				
-    ImageType::PointType origin;
-    origin[0]=strtod(argv[3], NULL);         //origin easting
-    origin[1]=strtod(argv[4], NULL);         //origin northing
-    orthoRectifFilter->SetOutputOrigin(origin);
+  ImageType::PointType origin;
+  origin[0]=strtod(argv[3], NULL);         //origin easting
+  origin[1]=strtod(argv[4], NULL);         //origin northing
+  orthoRectifFilter->SetOutputOrigin(origin);
 				
-    utmMapProjection->SetZone(atoi(argv[9]));
-    utmMapProjection->SetHemisphere(argv[10][0]);
-    orthoRectifFilter->SetMapProjection(utmMapProjection);
+  utmMapProjection->SetZone(atoi(argv[9]));
+  utmMapProjection->SetHemisphere(argv[10][0]);
+  orthoRectifFilter->SetMapProjection(utmMapProjection);
 				
-    std::string srtmDirectory(argv[11]);
-    orthoRectifFilter->SetDEMDirectory(srtmDirectory);
+  std::string srtmDirectory(argv[11]);
+  orthoRectifFilter->SetDEMDirectory(srtmDirectory);
 
-    writer->SetInput(orthoRectifFilter->GetOutput());
+  writer->SetInput(orthoRectifFilter->GetOutput());
 				
-    writer->SetTilingStreamDivisions();
-
-    otbGenericMsgDebugMacro(<< "Update writer ..." ); 
-    writer->Update();
-
-  } 
-  catch( itk::ExceptionObject & err ) 
-  { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( std::bad_alloc & err ) 
-  { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( ... ) 
-  { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-  } 
+  writer->SetTilingStreamDivisions();
+
+  otbGenericMsgDebugMacro(<< "Update writer ..." ); 
+  writer->Update();
+
+
   return EXIT_SUCCESS;
 
 } //End main()
diff --git a/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx b/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx
index 2238c5129615dcb270d7b1361ae7d05df0abe7ef..ae7f68e499ab384a584b717181a0362dbc720c4d 100644
--- a/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx
+++ b/Testing/Code/Projections/otbOrthoRectificationMonoThreadFilter.cxx
@@ -41,84 +41,67 @@
 int otbOrthoRectificationMonoThreadFilter( int argc, char* argv[] )
 {
   ossimInit::instance()->initialize(argc, argv);
-  try 
-  { 
-    if(argc!=11)
+  if(argc!=11)
     {
       std::cout << argv[0] <<" <input filename> <output filename> <origin easting> <origin northing> <x size> <y size> <x spacing> <y spacing> <UTM zone <UTM hemisphere>" 
-          << std::endl;
+		<< std::endl;
 
       return EXIT_FAILURE;
     }
    
-    typedef otb::Image<double, 2>     ImageType;
-    typedef otb::ImageFileReader<ImageType>  ReaderType;
-    typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
-    typedef otb::UtmInverseProjection UtmMapProjectionType ;
-    typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
+  typedef otb::Image<double, 2>     ImageType;
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  typedef otb::StreamingImageFileWriter<ImageType>  WriterType;
+  typedef otb::UtmInverseProjection UtmMapProjectionType ;
+  typedef otb::OrthoRectificationFilter<ImageType, ImageType, UtmMapProjectionType> OrthoRectifFilterType ;
               
-        //Allocate pointer
-    ReaderType::Pointer             reader = ReaderType::New();
-    WriterType::Pointer             writer = WriterType::New();
+  //Allocate pointer
+  ReaderType::Pointer             reader = ReaderType::New();
+  WriterType::Pointer             writer = WriterType::New();
 
-    OrthoRectifFilterType::Pointer  orthoRectifFilter = OrthoRectifFilterType::New();
-    UtmMapProjectionType::Pointer   utmMapProjection = UtmMapProjectionType::New();
+  OrthoRectifFilterType::Pointer  orthoRectifFilter = OrthoRectifFilterType::New();
+  UtmMapProjectionType::Pointer   utmMapProjection = UtmMapProjectionType::New();
                                 
-        // Set parameters ...
-    reader->SetFileName(argv[1]);
-    writer->SetFileName(argv[2]);
+  // Set parameters ...
+  reader->SetFileName(argv[1]);
+  writer->SetFileName(argv[2]);
 
-    reader->GenerateOutputInformation();
-    std::cout<<reader->GetOutput()<<std::endl;
+  reader->GenerateOutputInformation();
+  std::cout<<reader->GetOutput()<<std::endl;
   
-    orthoRectifFilter->SetInput(reader->GetOutput());
+  orthoRectifFilter->SetInput(reader->GetOutput());
         
-    ImageType::IndexType start;
-    start[0]=0;
-    start[1]=0;
-    orthoRectifFilter->SetOutputStartIndex(start);
+  ImageType::IndexType start;
+  start[0]=0;
+  start[1]=0;
+  orthoRectifFilter->SetOutputStartIndex(start);
         
-    ImageType::SizeType size;
-    size[0]=atoi(argv[5]);      // X size
-    size[1]=atoi(argv[6]);            //Y size
-    orthoRectifFilter->SetSize(size);
+  ImageType::SizeType size;
+  size[0]=atoi(argv[5]);      // X size
+  size[1]=atoi(argv[6]);            //Y size
+  orthoRectifFilter->SetSize(size);
         
-    ImageType::SpacingType spacing;
-    spacing[0]=atof(argv[7]);
-    spacing[1]=atof(argv[8]);
-    orthoRectifFilter->SetOutputSpacing(spacing);
+  ImageType::SpacingType spacing;
+  spacing[0]=atof(argv[7]);
+  spacing[1]=atof(argv[8]);
+  orthoRectifFilter->SetOutputSpacing(spacing);
         
-    ImageType::PointType origin;
-    origin[0]=strtod(argv[3], NULL);         //Origin easting 
-    origin[1]=strtod(argv[4], NULL);         //Origin northing
-    orthoRectifFilter->SetOutputOrigin(origin);
+  ImageType::PointType origin;
+  origin[0]=strtod(argv[3], NULL);         //Origin easting 
+  origin[1]=strtod(argv[4], NULL);         //Origin northing
+  orthoRectifFilter->SetOutputOrigin(origin);
         
-    utmMapProjection->SetZone(atoi(argv[9]));
-    utmMapProjection->SetHemisphere(argv[10][0]);
-    orthoRectifFilter->SetMapProjection(utmMapProjection);
+  utmMapProjection->SetZone(atoi(argv[9]));
+  utmMapProjection->SetHemisphere(argv[10][0]);
+  orthoRectifFilter->SetMapProjection(utmMapProjection);
 
-    writer->SetInput(orthoRectifFilter->GetOutput());
+  writer->SetInput(orthoRectifFilter->GetOutput());
                           
-    writer->SetTilingStreamDivisions();
-    writer->SetNumberOfThreads(1);
-    writer->Update();
-  } 
-  catch( itk::ExceptionObject & err ) 
-  { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( std::bad_alloc & err ) 
-  { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-  } 
-  catch( ... ) 
-  { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-  } 
+  writer->SetTilingStreamDivisions();
+  writer->SetNumberOfThreads(1);
+  writer->Update();
+
+
   return EXIT_SUCCESS;
 }//Fin main()
 
diff --git a/Testing/Code/Projections/otbProjectionBaseNew.cxx b/Testing/Code/Projections/otbProjectionBaseNew.cxx
index 75c6d7f50d8b3d470f513f5e8fcf0b41e05ef60f..08fbdafd727593c6cd790ebf8148fe7c2227e656 100755
--- a/Testing/Code/Projections/otbProjectionBaseNew.cxx
+++ b/Testing/Code/Projections/otbProjectionBaseNew.cxx
@@ -28,28 +28,12 @@
 
 int otbProjectionBaseNew( int argc, char* argv[] )
 {
-  try 
-    {        
-
-        otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New();
-        otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistForwardProjection::New();
-        typedef otb::MapToMapProjection<otb::AlbersInverseProjection,otb::AzimEquDistForwardProjection> MapToMapProjectionType;
-        MapToMapProjectionType::Pointer lMapToMapProjection = MapToMapProjectionType::New();
+  otb::AlbersInverseProjection::Pointer lAlbersProjection = otb::AlbersInverseProjection::New();
+  otb::AzimEquDistForwardProjection::Pointer lAzimEquDistProjection = otb::AzimEquDistForwardProjection::New();
+  typedef otb::MapToMapProjection<otb::AlbersInverseProjection,otb::AzimEquDistForwardProjection> MapToMapProjectionType;
+  MapToMapProjectionType::Pointer lMapToMapProjection = MapToMapProjectionType::New();
         
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-      std::cout << "Exception itk::ExceptionObject thrown !" << std::endl; 
-      std::cout << err << std::endl; 
-      return EXIT_FAILURE;
-    } 
-
-  catch( ... ) 
-    { 
-      std::cout << "Unknown exception thrown !" << std::endl; 
-      return EXIT_FAILURE;
-    } 
-
+  
   return EXIT_SUCCESS;
 }
 
diff --git a/Testing/Code/Projections/otbRegionProjection.cxx b/Testing/Code/Projections/otbRegionProjection.cxx
index 37f46473878a3c9bb5e50739e59993dc9052be84..08af9e9bb8b053b10c87229d47694795a464affb 100755
--- a/Testing/Code/Projections/otbRegionProjection.cxx
+++ b/Testing/Code/Projections/otbRegionProjection.cxx
@@ -57,372 +57,353 @@
 
 int otbRegionProjection( int argc, char* argv[] )
 {
-  try 
-    {        
+  ossimInit::instance()->initialize(argc, argv);
 
-   ossimInit::instance()->initialize(argc, argv);
-
-   if(argc!=10)
-   {
+  if(argc!=10)
+    {
       std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" 
                 << "<xSpacing> <ySpacing>" << std::endl;
 
       return EXIT_FAILURE;
-   }
+    }
    
    
-typedef itk::Point <double, 2> 		 PointType;
-PointType				 outputpoint; 
-
-/*************************************************/
-/*  Cr�ation de l'image de sortie outputimage    */
-/*************************************************/
-typedef otb::Image<unsigned char, 2>    CharImageType;
-typedef otb::Image<unsigned int, 2>     ImageType;
-typedef otb::Image<unsigned int, 2>     InputImageType;
-ImageType::Pointer 	  	         outputimage = ImageType::New();
-
-ImageType::PixelType			 pixelvalue;
-
-ImageType::IndexType  			 start;
-start[0]=0;     
-start[1]=0;     
-
-ImageType::SizeType  			 size;
-size[0]=atoi(argv[5]);      //Taille en X.
-size[1]=atoi(argv[6]);	    //Taille en Y.
-
-ImageType::SpacingType  		 spacing;
-spacing[0]=atof(argv[8]);
-spacing[1]=atof(argv[9]);
-
-ImageType::PointType			 origin;
-origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
-origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
-
-ImageType::RegionType			 region;
-
-region.SetSize(size);
-region.SetIndex(start);
-
-outputimage->SetOrigin(origin);
-outputimage->SetRegions(region);
-outputimage->SetSpacing(spacing);
-outputimage->Allocate();     //Notre image de sortie est cr��e.
-otbGenericMsgDebugMacro(<< "Output image created!! " ); 
-
-/********************************************************/
-/*                  Cr�ation d'un reader                */
-/********************************************************/
-typedef otb::ImageFileReader<ImageType>  ReaderType;
-ReaderType::Pointer	                 reader=ReaderType::New();
-//ReaderType::Pointer	                 reader1=ReaderType::New();
-reader->SetFileName(argv[1]);
-
-//Read meta data (ossimKeywordlist)
-reader->GenerateOutputInformation();
-
-otbGenericMsgDebugMacro(<< "Original input imagine spacing: "<<reader->GetOutput()->GetSpacing() ); 
-
-/******************************/
-/*  Cr�ation de mon handler   */
-/******************************/
+  typedef itk::Point <double, 2> 		 PointType;
+  PointType				 outputpoint; 
+
+  /*************************************************/
+  /*  Cr�ation de l'image de sortie outputimage    */
+  /*************************************************/
+  typedef otb::Image<unsigned char, 2>    CharImageType;
+  typedef otb::Image<unsigned int, 2>     ImageType;
+  typedef otb::Image<unsigned int, 2>     InputImageType;
+  ImageType::Pointer 	  	         outputimage = ImageType::New();
+
+  ImageType::PixelType			 pixelvalue;
+
+  ImageType::IndexType  			 start;
+  start[0]=0;     
+  start[1]=0;     
+
+  ImageType::SizeType  			 size;
+  size[0]=atoi(argv[5]);      //Taille en X.
+  size[1]=atoi(argv[6]);	    //Taille en Y.
+
+  ImageType::SpacingType  		 spacing;
+  spacing[0]=atof(argv[8]);
+  spacing[1]=atof(argv[9]);
+
+  ImageType::PointType			 origin;
+  origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
+  origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
+
+  ImageType::RegionType			 region;
+
+  region.SetSize(size);
+  region.SetIndex(start);
+
+  outputimage->SetOrigin(origin);
+  outputimage->SetRegions(region);
+  outputimage->SetSpacing(spacing);
+  outputimage->Allocate();     //Notre image de sortie est cr��e.
+  otbGenericMsgDebugMacro(<< "Output image created!! " ); 
+
+  /********************************************************/
+  /*                  Cr�ation d'un reader                */
+  /********************************************************/
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  ReaderType::Pointer	                 reader=ReaderType::New();
+  //ReaderType::Pointer	                 reader1=ReaderType::New();
+  reader->SetFileName(argv[1]);
+
+  //Read meta data (ossimKeywordlist)
+  reader->GenerateOutputInformation();
+
+  otbGenericMsgDebugMacro(<< "Original input imagine spacing: "<<reader->GetOutput()->GetSpacing() ); 
+
+  /******************************/
+  /*  Cr�ation de mon handler   */
+  /******************************/
 	
-/*
-      typedef otb::ImageGeometryHandler  HandlerType;
-      HandlerType::Pointer   handler= HandlerType::New();
-      otbGenericMsgDebugMacro(<< "Handler created " ); 
-      handler->SetFileName(argv[1]);
-      geom_kwl=handler->GetGeometryKeywordlist();*/
-otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist();
-
-ossimKeywordlist geom_kwl;
-otb_image_keywordlist.convertToOSSIMKeywordlist(geom_kwl);
-
-otbGenericMsgDebugMacro(<< "ossimKeywordlist: "<<geom_kwl ); 
-
-/********************************************************/
-/*   Cr�ation de notre mod�le en fonction de l'image    */
-/********************************************************/
-
-      typedef otb::InverseSensorModel<double>  ModelType;
-      ModelType::Pointer   model= ModelType::New();
-      otbGenericMsgDebugMacro(<< "Model set geometry " ); 
-      model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau.
-         if(!model)
-      {
-       otbGenericMsgDebugMacro(<< "Unable to create a model");
-         return 1;
-      }
-      otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); 
+  /*
+    typedef otb::ImageGeometryHandler  HandlerType;
+    HandlerType::Pointer   handler= HandlerType::New();
+    otbGenericMsgDebugMacro(<< "Handler created " ); 
+    handler->SetFileName(argv[1]);
+    geom_kwl=handler->GetGeometryKeywordlist();*/
+  otb::ImageKeywordlist otb_image_keywordlist = reader->GetOutput()->GetImageKeywordlist();
+
+  ossimKeywordlist geom_kwl;
+  otb_image_keywordlist.convertToOSSIMKeywordlist(geom_kwl);
+
+  otbGenericMsgDebugMacro(<< "ossimKeywordlist: "<<geom_kwl ); 
+
+  /********************************************************/
+  /*   Cr�ation de notre mod�le en fonction de l'image    */
+  /********************************************************/
+
+  typedef otb::InverseSensorModel<double>  ModelType;
+  ModelType::Pointer   model= ModelType::New();
+  otbGenericMsgDebugMacro(<< "Model set geometry " ); 
+  model->SetImageGeometry(geom_kwl); //Notre mod�le est cr�� � ce niveau.
+  if(!model)
+    {
+      otbGenericMsgDebugMacro(<< "Unable to create a model");
+      return 1;
+    }
+  otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); 
       
-      ModelType::OutputPointType inputpoint;
+  ModelType::OutputPointType inputpoint;
 			
-			otbGenericMsgDebugMacro(<< "Miary Sensor Model :" << model);
+  otbGenericMsgDebugMacro(<< "Miary Sensor Model :" << model);
  
 
-//reader1->SetFileName(argv[2]);
-//ImageType::Pointer 	  	         image = reader1->GetOutput();
-//reader->Update();
-ImageType::Pointer  			 inputimage= reader->GetOutput();
-ImageType::IndexType 			 currentindex;
-ImageType::IndexType 			 currentindexbis;
-ImageType::IndexType 			 pixelindex;
-ImageType::IndexType 			 pixelindexbis;
-otbGenericMsgDebugMacro(<< "Reader created " ); 
-
-//Stocker les caract�ristiques de notre image capteur:
-// ImageType::SizeType			 inputimagesize;
-// inputimagesize=inputimage->GetLargestPossibleRegion().GetSize();
-// //inputimagesize=inputimage->GetSize();
-// otbGenericMsgDebugMacro(<< "Dimension de notre image capteur:"<<  std::endl
-//                 << "("<<  inputimagesize[0]<< ","<<  inputimagesize[1]<< ")"<<std::endl; 
-
-
-/********************************************************/
-/*            Cr�ation de notre extractor               */
-/********************************************************/
-
-typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
-ExtractType::Pointer			             extract=ExtractType::New();
-otbGenericMsgDebugMacro(<< "Region Extractor created " ); 
-
-/********************************************************/
-/*            Cr�ation de notre interpolator            */
-/********************************************************/
-
-typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
-InterpolatorType::Pointer	interpolator=InterpolatorType::New();
-//InterpolatorType::OutputType	value;
-otbGenericMsgDebugMacro(<< "Interpolator created " ); 
-
-/********************************************************/
-/*            Cr�ation de notre writer                  */
-/********************************************************/
-//typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
-typedef otb::ImageFileWriter<ImageType>  CharWriterType;
-typedef otb::ImageFileWriter<ImageType>  WriterType;
-WriterType::Pointer	                 extractorwriter=WriterType::New();
-CharWriterType::Pointer	                 writer=CharWriterType::New();
-extractorwriter->SetFileName("image_temp.jpeg");
-extractorwriter->SetInput(extract->GetOutput());
-otbGenericMsgDebugMacro(<< "extractorwriter created" ); 
-
-/********************************************************/
-/*            Cr�ation de notre rescaler                */
-/********************************************************/
-
-typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
-RescalerType::Pointer	                 rescaler=RescalerType::New();
-//rescaler->SetOutputMinimum(50);
-//rescaler->SetOutputMaximum(500);
-rescaler->SetOutputMinimum(10);
-rescaler->SetOutputMaximum(255);
-otbGenericMsgDebugMacro(<< "rescaler created" ); 
-
-
-/*************************************************/   
-/*     Cr�ation de RegionIteratorwithIndex       */
-/*************************************************/
-
-typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
-//IteratorType outputIt(outputimage, region); //D�finition de notre it�rateur.
-//otbGenericMsgDebugMacro(<< "Iterator created " ); 
-
-//Donner une valeur par d�faut numberofstreamdivision ou le faire fixer par l'utilisateur.
-unsigned int NumberOfStreamDivisions;
-if (atoi(argv[7])==0)
-{NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage
-else{NumberOfStreamDivisions=atoi(argv[7]);}
-//otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions );
-
-//Boucle pour parcourir chaque r�gion
-unsigned int count=0;
-unsigned int It, j, k;
-int max_x, max_y, min_x, min_y;
-ImageType::IndexType  			 iterationRegionStart;
-ImageType::SizeType  			 iteratorRegionSize;
-ImageType::RegionType			 iteratorRegion;
-
-for(count=0;count<NumberOfStreamDivisions;count++)
-{//d�but boucle principale
-/**Cr�ation de la r�gion pour chaque portion**/
-iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
-if (count==NumberOfStreamDivisions-1)
-{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
-iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
-}
-else
-{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
-iterationRegionStart[1]=count*iteratorRegionSize[1]; 
-}    
-iterationRegionStart[0]=0;//D�but de chaque ligne==>0     
-// otbGenericMsgDebugMacro(<<iteratorRegionSize[1]);  
-// otbGenericMsgDebugMacro(<<iterationRegionStart[0]); 
-iteratorRegion.SetSize(iteratorRegionSize);
-iteratorRegion.SetIndex(iterationRegionStart); 
-
-/**Cr�ation d'un tableau de pixelindex**/
-unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
-int *pixelIndexArray=new int[pixelIndexArrayDimension];
-int *currentIndexArray=new int[pixelIndexArrayDimension];
-
-/**Cr�ation de l'it�rateur pour chaque portion:**/
-IteratorType outputIt(outputimage, iteratorRegion);
-
-std::cout << "Origin : " << outputimage->GetOrigin() << std::endl;
-std::cout << "Spacing : " << outputimage->GetSpacing() << std::endl;
-
-/*PointType ulc;
-ulc[0]=inputimage->GetOrigin()[0];
-ulc[1]=inputimage->GetOrigin()[1]+(inputimage->GetSpacing()[1]*inputimage->GetLargestPossibleRegion().GetSize()[1]);
-model->SetUpperLeftCorner(ulc);*/
-
-
-
-/**On applique l'it�ration sur chaque portion**/
-It=0;
-for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
-{//D�but boucle
-//On get l'index courant
-currentindex=outputIt.GetIndex();
-//On le transforme en Point physique
-outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
-      otbGenericMsgDebugMacro(<< "Pour l'Index Ncurrent:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
-                << "Le point physique correspondant est: ("<<  outputpoint[0]<<	","<<outputpoint[1]<< ")"); 
-
-//On calcule les coordonn�es pixeliques sur l'image capteur
-inputpoint = model->TransformPoint(outputpoint);
-  otbGenericMsgDebugMacro(<< "Les coordonnees en pixel sur l'image capteur correspondant a ce point sont:" << std::endl
-               << inputpoint[0] << ","<< inputpoint[1] );
-inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
-    otbGenericMsgDebugMacro(<< "L'index correspondant a ce point est:" << std::endl
-                 << pixelindex[0] << ","<< pixelindex[1] );
-
-/**On stocke les pixel index dans un tableau pixelindexarray**/
- pixelIndexArray[It]=pixelindex[0];
- pixelIndexArray[It+1]=pixelindex[1];
-//otbMsgDevMacro(<< "La valeur stock�e" << std::endl
-//          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl;
-
-/**On stocke les pixel index dans un tableau currentindexarray**/
- currentIndexArray[It]=currentindex[0];
- currentIndexArray[It+1]=currentindex[1];
-otbMsgDevMacro(<< "La valeur stockee" << std::endl
-          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] );
- It=It+2;
-}//Fin boucle: on a stock� tous les index qui nous interesse
-//otbGenericMsgDebugMacro( << "It= " << It );
-
-/**Calcul des max et min pour pouvoir extraire la bonne r�gion:**/
-max_x=pixelIndexArray[0];
-min_x=pixelIndexArray[0];
-max_y=pixelIndexArray[1];
-min_y=pixelIndexArray[1];
+  //reader1->SetFileName(argv[2]);
+  //ImageType::Pointer 	  	         image = reader1->GetOutput();
+  //reader->Update();
+  ImageType::Pointer  			 inputimage= reader->GetOutput();
+  ImageType::IndexType 			 currentindex;
+  ImageType::IndexType 			 currentindexbis;
+  ImageType::IndexType 			 pixelindex;
+  ImageType::IndexType 			 pixelindexbis;
+  otbGenericMsgDebugMacro(<< "Reader created " ); 
+
+  //Stocker les caract�ristiques de notre image capteur:
+  // ImageType::SizeType			 inputimagesize;
+  // inputimagesize=inputimage->GetLargestPossibleRegion().GetSize();
+  // //inputimagesize=inputimage->GetSize();
+  // otbGenericMsgDebugMacro(<< "Dimension de notre image capteur:"<<  std::endl
+  //                 << "("<<  inputimagesize[0]<< ","<<  inputimagesize[1]<< ")"<<std::endl; 
+
+
+  /********************************************************/
+  /*            Cr�ation de notre extractor               */
+  /********************************************************/
+
+  typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
+  ExtractType::Pointer			             extract=ExtractType::New();
+  otbGenericMsgDebugMacro(<< "Region Extractor created " ); 
+
+  /********************************************************/
+  /*            Cr�ation de notre interpolator            */
+  /********************************************************/
+
+  typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
+  InterpolatorType::Pointer	interpolator=InterpolatorType::New();
+  //InterpolatorType::OutputType	value;
+  otbGenericMsgDebugMacro(<< "Interpolator created " ); 
+
+  /********************************************************/
+  /*            Cr�ation de notre writer                  */
+  /********************************************************/
+  //typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
+  typedef otb::ImageFileWriter<ImageType>  CharWriterType;
+  typedef otb::ImageFileWriter<ImageType>  WriterType;
+  WriterType::Pointer	                 extractorwriter=WriterType::New();
+  CharWriterType::Pointer	                 writer=CharWriterType::New();
+  extractorwriter->SetFileName("image_temp.jpeg");
+  extractorwriter->SetInput(extract->GetOutput());
+  otbGenericMsgDebugMacro(<< "extractorwriter created" ); 
+
+  /********************************************************/
+  /*            Cr�ation de notre rescaler                */
+  /********************************************************/
+
+  typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
+  RescalerType::Pointer	                 rescaler=RescalerType::New();
+  //rescaler->SetOutputMinimum(50);
+  //rescaler->SetOutputMaximum(500);
+  rescaler->SetOutputMinimum(10);
+  rescaler->SetOutputMaximum(255);
+  otbGenericMsgDebugMacro(<< "rescaler created" ); 
+
+
+  /*************************************************/   
+  /*     Cr�ation de RegionIteratorwithIndex       */
+  /*************************************************/
+
+  typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
+  //IteratorType outputIt(outputimage, region); //D�finition de notre it�rateur.
+  //otbGenericMsgDebugMacro(<< "Iterator created " ); 
+
+  //Donner une valeur par d�faut numberofstreamdivision ou le faire fixer par l'utilisateur.
+  unsigned int NumberOfStreamDivisions;
+  if (atoi(argv[7])==0)
+    {NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage
+  else{NumberOfStreamDivisions=atoi(argv[7]);}
+  //otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions );
+
+  //Boucle pour parcourir chaque r�gion
+  unsigned int count=0;
+  unsigned int It, j, k;
+  int max_x, max_y, min_x, min_y;
+  ImageType::IndexType  			 iterationRegionStart;
+  ImageType::SizeType  			 iteratorRegionSize;
+  ImageType::RegionType			 iteratorRegion;
+
+  for(count=0;count<NumberOfStreamDivisions;count++)
+    {//d�but boucle principale
+      /**Cr�ation de la r�gion pour chaque portion**/
+      iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
+      if (count==NumberOfStreamDivisions-1)
+	{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
+	iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
+	}
+      else
+	{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
+	iterationRegionStart[1]=count*iteratorRegionSize[1]; 
+	}    
+      iterationRegionStart[0]=0;//D�but de chaque ligne==>0     
+      // otbGenericMsgDebugMacro(<<iteratorRegionSize[1]);  
+      // otbGenericMsgDebugMacro(<<iterationRegionStart[0]); 
+      iteratorRegion.SetSize(iteratorRegionSize);
+      iteratorRegion.SetIndex(iterationRegionStart); 
+
+      /**Cr�ation d'un tableau de pixelindex**/
+      unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
+      int *pixelIndexArray=new int[pixelIndexArrayDimension];
+      int *currentIndexArray=new int[pixelIndexArrayDimension];
+
+      /**Cr�ation de l'it�rateur pour chaque portion:**/
+      IteratorType outputIt(outputimage, iteratorRegion);
+
+      std::cout << "Origin : " << outputimage->GetOrigin() << std::endl;
+      std::cout << "Spacing : " << outputimage->GetSpacing() << std::endl;
+
+      /*PointType ulc;
+	ulc[0]=inputimage->GetOrigin()[0];
+	ulc[1]=inputimage->GetOrigin()[1]+(inputimage->GetSpacing()[1]*inputimage->GetLargestPossibleRegion().GetSize()[1]);
+	model->SetUpperLeftCorner(ulc);*/
+
+
+
+      /**On applique l'it�ration sur chaque portion**/
+      It=0;
+      for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
+	{//D�but boucle
+	  //On get l'index courant
+	  currentindex=outputIt.GetIndex();
+	  //On le transforme en Point physique
+	  outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
+	  otbGenericMsgDebugMacro(<< "Pour l'Index Ncurrent:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
+				  << "Le point physique correspondant est: ("<<  outputpoint[0]<<	","<<outputpoint[1]<< ")"); 
+
+	  //On calcule les coordonn�es pixeliques sur l'image capteur
+	  inputpoint = model->TransformPoint(outputpoint);
+	  otbGenericMsgDebugMacro(<< "Les coordonnees en pixel sur l'image capteur correspondant a ce point sont:" << std::endl
+				  << inputpoint[0] << ","<< inputpoint[1] );
+	  inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
+	  otbGenericMsgDebugMacro(<< "L'index correspondant a ce point est:" << std::endl
+				  << pixelindex[0] << ","<< pixelindex[1] );
+
+	  /**On stocke les pixel index dans un tableau pixelindexarray**/
+	  pixelIndexArray[It]=pixelindex[0];
+	  pixelIndexArray[It+1]=pixelindex[1];
+	  //otbMsgDevMacro(<< "La valeur stock�e" << std::endl
+	  //          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl;
+
+	  /**On stocke les pixel index dans un tableau currentindexarray**/
+	  currentIndexArray[It]=currentindex[0];
+	  currentIndexArray[It+1]=currentindex[1];
+	  otbMsgDevMacro(<< "La valeur stockee" << std::endl
+			 << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] );
+	  It=It+2;
+	}//Fin boucle: on a stock� tous les index qui nous interesse
+      //otbGenericMsgDebugMacro( << "It= " << It );
+
+      /**Calcul des max et min pour pouvoir extraire la bonne r�gion:**/
+      max_x=pixelIndexArray[0];
+      min_x=pixelIndexArray[0];
+      max_y=pixelIndexArray[1];
+      min_y=pixelIndexArray[1];
  
- otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl
-           << "max_y=" << max_y<< std::endl
-	   << "min_x=" << min_x<< std::endl
-	   << "min_y=" << min_y);
+      otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl
+			      << "max_y=" << max_y<< std::endl
+			      << "min_x=" << min_x<< std::endl
+			      << "min_y=" << min_y);
 
- 	for (j=0;j<It;j++)
+      for (j=0;j<It;j++)
  	{
- 		if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
- 		if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
  	}//Fin while
 
- otbGenericMsgDebugMacro(<< "Mise a jour des max ...\nmax_x=" << max_x<< std::endl
-           << "max_y=" << max_y<< std::endl
-	   << "min_x=" << min_x<< std::endl
-	   << "min_y=" << min_y);
+      otbGenericMsgDebugMacro(<< "Mise a jour des max ...\nmax_x=" << max_x<< std::endl
+			      << "max_y=" << max_y<< std::endl
+			      << "min_x=" << min_x<< std::endl
+			      << "min_y=" << min_y);
 
-/**Cr�er un extractor pour chaque portion:**/
-InputImageType::RegionType	            extractregion;
+      /**Cr�er un extractor pour chaque portion:**/
+      InputImageType::RegionType	            extractregion;
 
-InputImageType::IndexType  		    extractstart;
+      InputImageType::IndexType  		    extractstart;
 
-if (min_x<10 && min_y<10)
+      if (min_x<10 && min_y<10)
 	{
-	extractstart[0]=0;     
-	extractstart[1]=0;
+	  extractstart[0]=0;     
+	  extractstart[1]=0;
 	}
 
-else
+      else
 	{
-	extractstart[0]=min_x-10;     
-	extractstart[1]=min_y-10; 
+	  extractstart[0]=min_x-10;     
+	  extractstart[1]=min_y-10; 
 	} 
 
-InputImageType::SizeType  		    extractsize;
-
-extractsize[0]=(max_x-min_x)+20;      //Taille en X.
-extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
-extractregion.SetSize(extractsize);
-extractregion.SetIndex(extractstart);
-//extractregion=inputimage->GetRequestedRegion();
-extract->SetExtractionRegion(extractregion);
-extract->SetInput(reader->GetOutput());
-extractorwriter->Update();
-
-/**Interpolation:**/
-interpolator->SetInputImage(reader->GetOutput());
-//interpolator->SetDefaultPixelValue(0);
-for ( k=0; k<It/2; k++)
-{
-pixelindexbis[0]= pixelIndexArray[2*k];
-pixelindexbis[1]= pixelIndexArray[2*k+1];
-currentindexbis[0]= currentIndexArray[2*k];
-currentindexbis[1]= currentIndexArray[2*k+1];
-//Test si notre index est dans la r�gion extraite:
-if (interpolator->IsInsideBuffer(pixelindexbis))
-{pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));}
-else {pixelvalue=0;}
-otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl
-           << float(pixelvalue) );
-outputimage->SetPixel(currentindexbis,pixelvalue);
- }
- delete pixelIndexArray;
-otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" );
-delete currentIndexArray; 
-otbGenericMsgDebugMacro(<< "currentIndexArray deleted" );
-}//Fin boucle principale
-
-
-
-writer->SetFileName(argv[2]);
-otbGenericMsgDebugMacro(<< "FilenameSet" );
-//rescaler->SetInput(outputimage);
-CharImageType::Pointer      charoutputimage=CharImageType::New();
-//charoutputimage=rescaler->GetOutput();
-//writer->SetInput(charoutputimage);
-
-std::cout << "Image before Writer" << outputimage->GetOrigin() << std::endl;
-writer->SetInput(outputimage);
-writer->Update();
-otbGenericMsgDebugMacro(<< "Outputimage created" );
-
-
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+      InputImageType::SizeType  		    extractsize;
+
+      extractsize[0]=(max_x-min_x)+20;      //Taille en X.
+      extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
+      extractregion.SetSize(extractsize);
+      extractregion.SetIndex(extractstart);
+      //extractregion=inputimage->GetRequestedRegion();
+      extract->SetExtractionRegion(extractregion);
+      extract->SetInput(reader->GetOutput());
+      extractorwriter->Update();
+
+      /**Interpolation:**/
+      interpolator->SetInputImage(reader->GetOutput());
+      //interpolator->SetDefaultPixelValue(0);
+      for ( k=0; k<It/2; k++)
+	{
+	  pixelindexbis[0]= pixelIndexArray[2*k];
+	  pixelindexbis[1]= pixelIndexArray[2*k+1];
+	  currentindexbis[0]= currentIndexArray[2*k];
+	  currentindexbis[1]= currentIndexArray[2*k+1];
+	  //Test si notre index est dans la r�gion extraite:
+	  if (interpolator->IsInsideBuffer(pixelindexbis))
+	    {pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));}
+	  else {pixelvalue=0;}
+	  otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl
+			 << float(pixelvalue) );
+	  outputimage->SetPixel(currentindexbis,pixelvalue);
+	}
+      delete pixelIndexArray;
+      otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" );
+      delete currentIndexArray; 
+      otbGenericMsgDebugMacro(<< "currentIndexArray deleted" );
+    }//Fin boucle principale
+
+
+
+  writer->SetFileName(argv[2]);
+  otbGenericMsgDebugMacro(<< "FilenameSet" );
+  //rescaler->SetInput(outputimage);
+  CharImageType::Pointer      charoutputimage=CharImageType::New();
+  //charoutputimage=rescaler->GetOutput();
+  //writer->SetInput(charoutputimage);
+
+  std::cout << "Image before Writer" << outputimage->GetOrigin() << std::endl;
+  writer->SetInput(outputimage);
+  writer->Update();
+  otbGenericMsgDebugMacro(<< "Outputimage created" );
+
+
+
+ 
   return EXIT_SUCCESS;
 
- }//Fin main()
+}//Fin main()
 
diff --git a/Testing/Code/Projections/otbRegionProjectionResampler.cxx b/Testing/Code/Projections/otbRegionProjectionResampler.cxx
index c8d2e8d299cdf22aed1ce668a61dad6d95f98eec..b8a7d603b973426996dd6d77d564a7c8120257fc 100755
--- a/Testing/Code/Projections/otbRegionProjectionResampler.cxx
+++ b/Testing/Code/Projections/otbRegionProjectionResampler.cxx
@@ -57,106 +57,88 @@
 
 int otbRegionProjectionResampler( int argc, char* argv[] )
 {
-  try 
-    {        
-      ossimInit::instance()->initialize(argc, argv);
+  ossimInit::instance()->initialize(argc, argv);
       
-      if(argc!=10)
-        {
-	  std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" << std::endl;
+  if(argc!=10)
+    {
+      std::cout << argv[0] <<" <input filename> <output filename> <latitude de l'origine> <longitude de l'origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" << std::endl;
 
-	  return EXIT_FAILURE;
-        }
+      return EXIT_FAILURE;
+    }
       
       
-      typedef otb::Image<unsigned char, 2>                               CharImageType;
-      typedef otb::Image<double, 2>                                      ImageType;
-      typedef otb::ImageFileReader<ImageType>                            ReaderType;
-      typedef otb::StreamingImageFileWriter<ImageType>                   WriterType;
-      typedef otb::InverseSensorModel<double>                            ModelType;
-      typedef itk::LinearInterpolateImageFunction< ImageType, double >   InterpolatorType;
-      typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
-      typedef otb::StreamingResampleImageFilter< ImageType, ImageType >  ResamplerType;
-      typedef itk::TranslationTransform<double,2>                        TransformType;
-      typedef otb::CompositeTransform<ModelType,TransformType>           CompositeType;											
-
-      ImageType::IndexType  	start;
-      ImageType::SizeType  	size;
-      ImageType::SpacingType  	spacing;
-      ImageType::PointType	origin;
-      ImageType::RegionType     region;
-
-      //Allocate pointer
-      ModelType::Pointer         model        = ModelType::New();
-      ReaderType::Pointer	 reader       = ReaderType::New();
-      WriterType::Pointer	 writer       = WriterType::New();
-      InterpolatorType::Pointer	 interpolator = InterpolatorType::New();
-      RescalerType::Pointer	 rescaler     = RescalerType::New();
-      ResamplerType::Pointer     resampler    = ResamplerType::New();
+  typedef otb::Image<unsigned char, 2>                               CharImageType;
+  typedef otb::Image<double, 2>                                      ImageType;
+  typedef otb::ImageFileReader<ImageType>                            ReaderType;
+  typedef otb::StreamingImageFileWriter<ImageType>                   WriterType;
+  typedef otb::InverseSensorModel<double>                            ModelType;
+  typedef itk::LinearInterpolateImageFunction< ImageType, double >   InterpolatorType;
+  typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
+  typedef otb::StreamingResampleImageFilter< ImageType, ImageType >  ResamplerType;
+  typedef itk::TranslationTransform<double,2>                        TransformType;
+  typedef otb::CompositeTransform<ModelType,TransformType>           CompositeType;											
+
+  ImageType::IndexType  	start;
+  ImageType::SizeType  	size;
+  ImageType::SpacingType  	spacing;
+  ImageType::PointType	origin;
+  ImageType::RegionType     region;
+
+  //Allocate pointer
+  ModelType::Pointer         model        = ModelType::New();
+  ReaderType::Pointer	 reader       = ReaderType::New();
+  WriterType::Pointer	 writer       = WriterType::New();
+  InterpolatorType::Pointer	 interpolator = InterpolatorType::New();
+  RescalerType::Pointer	 rescaler     = RescalerType::New();
+  ResamplerType::Pointer     resampler    = ResamplerType::New();
       
-      // Set parameters ...
-      reader->SetFileName(argv[1]);
-      writer->SetFileName(argv[2]);
-      rescaler->SetOutputMinimum(0);
-      rescaler->SetOutputMaximum(255);
+  // Set parameters ...
+  reader->SetFileName(argv[1]);
+  writer->SetFileName(argv[2]);
+  rescaler->SetOutputMinimum(0);
+  rescaler->SetOutputMaximum(255);
       
-      // Read meta data (ossimKeywordlist)
-      reader->GenerateOutputInformation();
-      ImageType::ConstPointer inputImage = reader->GetOutput();
+  // Read meta data (ossimKeywordlist)
+  reader->GenerateOutputInformation();
+  ImageType::ConstPointer inputImage = reader->GetOutput();
 
-      model->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
+  model->SetImageGeometry(reader->GetOutput()->GetImageKeywordlist());
 
-      start[0]=0;     
-      start[1]=0;     
-      size[0]=atoi(argv[5]);  // X size.
-      size[1]=atoi(argv[6]);  // Y size.
+  start[0]=0;     
+  start[1]=0;     
+  size[0]=atoi(argv[5]);  // X size.
+  size[1]=atoi(argv[6]);  // Y size.
       
-      region.SetSize(size);
-      region.SetIndex(start);
+  region.SetSize(size);
+  region.SetIndex(start);
 
-      spacing[0]=atof(argv[8]);
-      spacing[1]=atof(argv[9]);
+  spacing[0]=atof(argv[8]);
+  spacing[1]=atof(argv[9]);
 
-      origin[0]=strtod(argv[3], NULL);         // origin longitude.
-      origin[1]=strtod(argv[4], NULL);         // origin latitude.
+  origin[0]=strtod(argv[3], NULL);         // origin longitude.
+  origin[1]=strtod(argv[4], NULL);         // origin latitude.
 
-      otbGenericMsgDebugMacro(<< "Origin " << origin );
+  otbGenericMsgDebugMacro(<< "Origin " << origin );
 
-      resampler->SetOutputSpacing( spacing );
-      resampler->SetOutputOrigin(  origin  );
-      resampler->SetSize( region.GetSize() );
-      resampler->SetOutputStartIndex( start );
+  resampler->SetOutputSpacing( spacing );
+  resampler->SetOutputOrigin(  origin  );
+  resampler->SetSize( region.GetSize() );
+  resampler->SetOutputStartIndex( start );
 
-      //Connect pipeline
-      resampler->SetInput( reader->GetOutput() );
-      resampler->SetTransform( model );
-      resampler->SetInterpolator( interpolator );
+  //Connect pipeline
+  resampler->SetInput( reader->GetOutput() );
+  resampler->SetTransform( model );
+  resampler->SetInterpolator( interpolator );
 
-      otbGenericMsgDebugMacro(<< "Sensor Model :" << model);
+  otbGenericMsgDebugMacro(<< "Sensor Model :" << model);
        
-      writer->SetInput(resampler->GetOutput());
-      writer->SetTilingStreamDivisions(10);
-      otbGenericMsgDebugMacro(<< "Update writer ..." ); 
-      writer->Update();
-    } 
-
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+  writer->SetInput(resampler->GetOutput());
+  writer->SetTilingStreamDivisions(10);
+  otbGenericMsgDebugMacro(<< "Update writer ..." ); 
+  writer->Update();
+ 
+
   return EXIT_SUCCESS;
 
- }//Fin main()
+}//Fin main()
 
diff --git a/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx b/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx
index 545a3b4a707d7aa0529e47e6e2bc3118ed897e60..3c716897cb5c7d0d8d1fc6cdcdea0af4dae50a45 100755
--- a/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx
+++ b/Testing/Code/Projections/otbSensorImageDEMToCarto.cxx
@@ -30,348 +30,323 @@
 
 int otbSensorImageDEMToCarto( int argc, char* argv[] )
 {
-  try 
-    {        
-
-
-   if(argc!=11)
-   {
+  if(argc!=11)
+    {
       std::cout << argv[0] <<" <input filename> <output filename> <X origine> <Y origine> <taille_x> <taille_y> <NumberOfstreamDivisions> <srtm directory> " 
                 << "<xSpacing> <ySpacing>" << std::endl;
 
       return EXIT_FAILURE;
-   }
-typedef itk::Point <double, 2> 		 PointType;
-PointType				 outputpoint; 
-
-/*************************************************/
-/*            Création des diverses images       */
-/*     (outputimage,DEMimage,charoutputimage)    */
-/*************************************************/
-typedef otb::Image<unsigned char, 2>     CharImageType;
-typedef otb::Image<unsigned int, 2>      ImageType;
-typedef otb::Image<unsigned int, 2>      InputImageType;
-ImageType::Pointer 	  	         outputimage = ImageType::New();
-CharImageType::Pointer      		 charoutputimage=CharImageType::New();
-
-ImageType::PixelType			 pixelvalue;
-ImageType::IndexType  			 start;
-start[0]=0;     
-start[1]=0;     
-
-ImageType::SizeType  			 size;
-size[0]=atoi(argv[5]);      //Taille en X.
-size[1]=atoi(argv[6]);	    //Taille en Y.
-
-ImageType::SpacingType  		 spacing;
-spacing[0]=atof(argv[9]);
-spacing[1]=atof(argv[10]);
-
-ImageType::PointType			 origin;
-origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
-origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
-
-ImageType::RegionType			 region;
-
-region.SetSize(size);
-region.SetIndex(start);
-
-outputimage-> SetOrigin(origin);
-outputimage-> SetRegions(region);
-outputimage->SetSpacing(spacing);
-outputimage-> Allocate();     //Notre image de sortie est allouée.
-otbGenericMsgDebugMacro(<< "Output image created!! ");
-
-/******************************/
-/*  Création de mon handler   */
-/******************************/
+    }
+  typedef itk::Point <double, 2> 		 PointType;
+  PointType				 outputpoint; 
+
+  /*************************************************/
+  /*            Création des diverses images       */
+  /*     (outputimage,DEMimage,charoutputimage)    */
+  /*************************************************/
+  typedef otb::Image<unsigned char, 2>     CharImageType;
+  typedef otb::Image<unsigned int, 2>      ImageType;
+  typedef otb::Image<unsigned int, 2>      InputImageType;
+  ImageType::Pointer 	  	         outputimage = ImageType::New();
+  CharImageType::Pointer      		 charoutputimage=CharImageType::New();
+
+  ImageType::PixelType			 pixelvalue;
+  ImageType::IndexType  			 start;
+  start[0]=0;     
+  start[1]=0;     
+
+  ImageType::SizeType  			 size;
+  size[0]=atoi(argv[5]);      //Taille en X.
+  size[1]=atoi(argv[6]);	    //Taille en Y.
+
+  ImageType::SpacingType  		 spacing;
+  spacing[0]=atof(argv[9]);
+  spacing[1]=atof(argv[10]);
+
+  ImageType::PointType			 origin;
+  origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
+  origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
+
+  ImageType::RegionType			 region;
+
+  region.SetSize(size);
+  region.SetIndex(start);
+
+  outputimage-> SetOrigin(origin);
+  outputimage-> SetRegions(region);
+  outputimage->SetSpacing(spacing);
+  outputimage-> Allocate();     //Notre image de sortie est allouée.
+  otbGenericMsgDebugMacro(<< "Output image created!! ");
+
+  /******************************/
+  /*  Création de mon handler   */
+  /******************************/
 	
-ossimKeywordlist geom_kwl;
-      typedef otb::ImageGeometryHandler  HandlerType;
-      HandlerType::Pointer   handler= HandlerType::New();
-      otbGenericMsgDebugMacro(<< "Handler created " );
-      handler->SetFileName(argv[1]);
-      geom_kwl=handler->GetGeometryKeywordlist();
-
-/********************************************************/
-/*   Création de notre modèle en fonction de l'image    */
-/********************************************************/
-
-      typedef otb::InverseSensorModel<double>  ModelType;
-      ModelType::Pointer   model= ModelType::New();
-      otbGenericMsgDebugMacro(<< "Model set geometry " );
-      model->SetImageGeometry(geom_kwl); //Notre modèle est créé à ce niveau.
-         if(!model)
-      {
-       otbGenericMsgDebugMacro(<< "Unable to create a model");
-         return 1;
-      }
-      otbGenericMsgDebugMacro(<< "InverseSensorModel created " );
+  ossimKeywordlist geom_kwl;
+  typedef otb::ImageGeometryHandler  HandlerType;
+  HandlerType::Pointer   handler= HandlerType::New();
+  otbGenericMsgDebugMacro(<< "Handler created " );
+  handler->SetFileName(argv[1]);
+  geom_kwl=handler->GetGeometryKeywordlist();
+
+  /********************************************************/
+  /*   Création de notre modèle en fonction de l'image    */
+  /********************************************************/
+
+  typedef otb::InverseSensorModel<double>  ModelType;
+  ModelType::Pointer   model= ModelType::New();
+  otbGenericMsgDebugMacro(<< "Model set geometry " );
+  model->SetImageGeometry(geom_kwl); //Notre modèle est créé à ce niveau.
+  if(!model)
+    {
+      otbGenericMsgDebugMacro(<< "Unable to create a model");
+      return 1;
+    }
+  otbGenericMsgDebugMacro(<< "InverseSensorModel created " );
       
-      ModelType::OutputPointType inputpoint;
-
-
-/********************************************************/
-/*                  Création d'un reader                */
-/********************************************************/
-
-typedef otb::ImageFileReader<ImageType>  ReaderType;
-ReaderType::Pointer	                 reader=ReaderType::New();
-reader->SetFileName(argv[1]);
-ImageType::Pointer  			 inputimage= reader->GetOutput();
-ImageType::IndexType 			 currentindex;
-ImageType::IndexType 			 currentindexbis;
-// ImageType::IndexType 			 pixelindex;
-ImageType::IndexType 			 pixelindexbis;
-otbGenericMsgDebugMacro(<< "Reader created " );
-
-/********************************************************/
-/*            Création de notre extractor               */
-/********************************************************/
-
-typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
-ExtractType::Pointer			             extract=ExtractType::New();
-otbGenericMsgDebugMacro(<< "Region Extractor created " );
-
-/********************************************************/
-/*            Création de notre interpolator            */
-/********************************************************/
-
-typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
-InterpolatorType::Pointer	interpolator=InterpolatorType::New();
-otbGenericMsgDebugMacro(<< "Interpolator created " );
-
-/********************************************************/
-/*            Création de nos writer                    */
-/********************************************************/
-
-typedef otb::ImageFileWriter<ImageType>      WriterType;
-typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
-
-WriterType::Pointer	                     	 extractorwriter=WriterType::New();
-CharWriterType::Pointer	                     writer=CharWriterType::New();
-
-extractorwriter->SetFileName("image_temp1.jpeg");
-extractorwriter->SetInput(extract->GetOutput());
-otbGenericMsgDebugMacro(<< "extractorwriter created" );
-
-/********************************************************/
-/*            Création de notre rescaler                */
-/********************************************************/
-
-typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
-RescalerType::Pointer	                 rescaler=RescalerType::New();
-rescaler->SetOutputMinimum(0);
-rescaler->SetOutputMaximum(255);
-otbGenericMsgDebugMacro(<< "rescaler created" );
-
-/********************************************************/
-/*            Création de notre projection              */
-/********************************************************/
-typedef otb::UtmInverseProjection                      utmProjection;
-typedef utmProjection::OutputPointType	        OutputPoint;
-typedef utmProjection::InputPointType	        InputPoint;
-InputPoint                                      geoPoint;
-utmProjection::Pointer   utmprojection= utmProjection::New();
-utmprojection->SetZone(31);
-utmprojection->SetHemisphere('N');
-
-/*************************************************/   
-/*     Création de RegionIteratorwithIndex       */
-/*************************************************/
-
-typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
-otbGenericMsgDebugMacro(<< "Iterator created " );
-
-//Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur.
-unsigned int NumberOfStreamDivisions;
-if (atoi(argv[7])==0)
-{NumberOfStreamDivisions=10;}//ou pourrait le calculer en fonction de la taille de outputimage
-else{NumberOfStreamDivisions=atoi(argv[7]);}
-otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions );
-
-//Boucle pour parcourir chaque région
-unsigned int count=0;
-unsigned int It, j, k, It1;
-int max_x, max_y, min_x, min_y;
-ImageType::IndexType  			 iterationRegionStart;
-ImageType::SizeType  			 iteratorRegionSize;
-ImageType::RegionType			 iteratorRegion;
-
-model->SetDEMDirectory(argv[8]);
-
-for(count=0;count<NumberOfStreamDivisions;count++)
-{//début boucle principale
-/**Création de la région pour chaque portion**/
-iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
-if (count==NumberOfStreamDivisions-1)
-{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
-iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
-}
-else
-{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
-iterationRegionStart[1]=count*iteratorRegionSize[1]; 
-}    
-iterationRegionStart[0]=0;//Début de chaque ligne==>0     
-iteratorRegion.SetSize(iteratorRegionSize);
-iteratorRegion.SetIndex(iterationRegionStart); 
-
-/**Création d'un tableau de pixelindex**/
-unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
-int *pixelIndexArray=new int[pixelIndexArrayDimension];
-int *currentIndexArray=new int[pixelIndexArrayDimension];
-
-/**Création de l'itérateur pour chaque portion:**/
-IteratorType outputIt(outputimage, iteratorRegion);
-
-/**On applique l'itération sur chaque portion**/
-It=0;
-It1=0;
-for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
-{//Début boucle
-//On get l'index courant
-currentindex=outputIt.GetIndex();
-//On le transforme en Point physique
-outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
-      otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
-                << "Le point physique correspondant est: ("<<  outputpoint[0]<< ","<<  outputpoint[1]<< ")"); 
-
-//On applique la projection:
-geoPoint= utmprojection->TransformPoint(outputpoint);	
-otbMsgDevMacro(<< "Le point géographique correspondant est: ("<<  geoPoint[0]<< ","<<  geoPoint[1]<< ")"); 
-
-//On calcule les coordonnées pixeliques sur l'image capteur
-inputpoint = model->TransformPoint(geoPoint);
-otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl
-          << inputpoint[0] << ","<< inputpoint[1] );
-//inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
-//    otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl
-//              << pixelindex[0] << ","<< pixelindex[1] );
-
-/**On stocke les pixel index dans un tableau pixelindexarray**/
-// pixelIndexArray[It]=pixelindex[0];
-// pixelIndexArray[It+1]=pixelindex[1];
-pixelIndexArray[It]=static_cast<int>(inputpoint[0]);
-pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]);
-
- otbMsgDevMacro(<< "La valeur stockée" << std::endl
-          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl);
-
-/**On stocke les pixel index dans un tableau currentindexarray**/
- currentIndexArray[It]=currentindex[0];
- currentIndexArray[It+1]=currentindex[1];
- otbMsgDevMacro(<< "La valeur stockée" << std::endl
-           << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl);
+  ModelType::OutputPointType inputpoint;
+
+
+  /********************************************************/
+  /*                  Création d'un reader                */
+  /********************************************************/
+
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  ReaderType::Pointer	                 reader=ReaderType::New();
+  reader->SetFileName(argv[1]);
+  ImageType::Pointer  			 inputimage= reader->GetOutput();
+  ImageType::IndexType 			 currentindex;
+  ImageType::IndexType 			 currentindexbis;
+  // ImageType::IndexType 			 pixelindex;
+  ImageType::IndexType 			 pixelindexbis;
+  otbGenericMsgDebugMacro(<< "Reader created " );
+
+  /********************************************************/
+  /*            Création de notre extractor               */
+  /********************************************************/
+
+  typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
+  ExtractType::Pointer			             extract=ExtractType::New();
+  otbGenericMsgDebugMacro(<< "Region Extractor created " );
+
+  /********************************************************/
+  /*            Création de notre interpolator            */
+  /********************************************************/
+
+  typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
+  InterpolatorType::Pointer	interpolator=InterpolatorType::New();
+  otbGenericMsgDebugMacro(<< "Interpolator created " );
+
+  /********************************************************/
+  /*            Création de nos writer                    */
+  /********************************************************/
+
+  typedef otb::ImageFileWriter<ImageType>      WriterType;
+  typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
+
+  WriterType::Pointer	                     	 extractorwriter=WriterType::New();
+  CharWriterType::Pointer	                     writer=CharWriterType::New();
+
+  extractorwriter->SetFileName("image_temp1.jpeg");
+  extractorwriter->SetInput(extract->GetOutput());
+  otbGenericMsgDebugMacro(<< "extractorwriter created" );
+
+  /********************************************************/
+  /*            Création de notre rescaler                */
+  /********************************************************/
+
+  typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
+  RescalerType::Pointer	                 rescaler=RescalerType::New();
+  rescaler->SetOutputMinimum(0);
+  rescaler->SetOutputMaximum(255);
+  otbGenericMsgDebugMacro(<< "rescaler created" );
+
+  /********************************************************/
+  /*            Création de notre projection              */
+  /********************************************************/
+  typedef otb::UtmInverseProjection                      utmProjection;
+  typedef utmProjection::OutputPointType	        OutputPoint;
+  typedef utmProjection::InputPointType	        InputPoint;
+  InputPoint                                      geoPoint;
+  utmProjection::Pointer   utmprojection= utmProjection::New();
+  utmprojection->SetZone(31);
+  utmprojection->SetHemisphere('N');
+
+  /*************************************************/   
+  /*     Création de RegionIteratorwithIndex       */
+  /*************************************************/
+
+  typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
+  otbGenericMsgDebugMacro(<< "Iterator created " );
+
+  //Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur.
+  unsigned int NumberOfStreamDivisions;
+  if (atoi(argv[7])==0)
+    {NumberOfStreamDivisions=10;}//ou pourrait le calculer en fonction de la taille de outputimage
+  else{NumberOfStreamDivisions=atoi(argv[7]);}
+  otbGenericMsgDebugMacro(<< "NumberOfStreamDivisions =" << NumberOfStreamDivisions );
+
+  //Boucle pour parcourir chaque région
+  unsigned int count=0;
+  unsigned int It, j, k, It1;
+  int max_x, max_y, min_x, min_y;
+  ImageType::IndexType  			 iterationRegionStart;
+  ImageType::SizeType  			 iteratorRegionSize;
+  ImageType::RegionType			 iteratorRegion;
+
+  model->SetDEMDirectory(argv[8]);
+
+  for(count=0;count<NumberOfStreamDivisions;count++)
+    {//début boucle principale
+      /**Création de la région pour chaque portion**/
+      iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
+      if (count==NumberOfStreamDivisions-1)
+	{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
+	iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
+	}
+      else
+	{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
+	iterationRegionStart[1]=count*iteratorRegionSize[1]; 
+	}    
+      iterationRegionStart[0]=0;//Début de chaque ligne==>0     
+      iteratorRegion.SetSize(iteratorRegionSize);
+      iteratorRegion.SetIndex(iterationRegionStart); 
+
+      /**Création d'un tableau de pixelindex**/
+      unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
+      int *pixelIndexArray=new int[pixelIndexArrayDimension];
+      int *currentIndexArray=new int[pixelIndexArrayDimension];
+
+      /**Création de l'itérateur pour chaque portion:**/
+      IteratorType outputIt(outputimage, iteratorRegion);
+
+      /**On applique l'itération sur chaque portion**/
+      It=0;
+      It1=0;
+      for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
+	{//Début boucle
+	  //On get l'index courant
+	  currentindex=outputIt.GetIndex();
+	  //On le transforme en Point physique
+	  outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
+	  otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
+			 << "Le point physique correspondant est: ("<<  outputpoint[0]<< ","<<  outputpoint[1]<< ")"); 
+
+	  //On applique la projection:
+	  geoPoint= utmprojection->TransformPoint(outputpoint);	
+	  otbMsgDevMacro(<< "Le point géographique correspondant est: ("<<  geoPoint[0]<< ","<<  geoPoint[1]<< ")"); 
+
+	  //On calcule les coordonnées pixeliques sur l'image capteur
+	  inputpoint = model->TransformPoint(geoPoint);
+	  otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl
+			 << inputpoint[0] << ","<< inputpoint[1] );
+	  //inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
+	  //    otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl
+	  //              << pixelindex[0] << ","<< pixelindex[1] );
+
+	  /**On stocke les pixel index dans un tableau pixelindexarray**/
+	  // pixelIndexArray[It]=pixelindex[0];
+	  // pixelIndexArray[It+1]=pixelindex[1];
+	  pixelIndexArray[It]=static_cast<int>(inputpoint[0]);
+	  pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]);
+
+	  otbMsgDevMacro(<< "La valeur stockée" << std::endl
+			 << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl);
+
+	  /**On stocke les pixel index dans un tableau currentindexarray**/
+	  currentIndexArray[It]=currentindex[0];
+	  currentIndexArray[It+1]=currentindex[1];
+	  otbMsgDevMacro(<< "La valeur stockée" << std::endl
+			 << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl);
  
  
- It=It+2;
- It1=It1+1;
-}//Fin boucle: on a stocké tous les index qui nous interesse
-
-/**Calcul des max et min pour pouvoir extraire la bonne région:**/
-max_x=pixelIndexArray[0];
-min_x=pixelIndexArray[0];
-max_y=pixelIndexArray[1];
-min_y=pixelIndexArray[1];
+	  It=It+2;
+	  It1=It1+1;
+	}//Fin boucle: on a stocké tous les index qui nous interesse
+
+      /**Calcul des max et min pour pouvoir extraire la bonne région:**/
+      max_x=pixelIndexArray[0];
+      min_x=pixelIndexArray[0];
+      max_y=pixelIndexArray[1];
+      min_y=pixelIndexArray[1];
  
- 	for (j=0;j<It;j++)
+      for (j=0;j<It;j++)
  	{
- 		if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
- 		if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
  	}//Fin while
 	
- otbMsgDevMacro(<< "max_x=" << max_x<< std::endl
-           << "max_y=" << max_y<< std::endl
-	   << "min_x=" << min_x<< std::endl
-	   << "min_y=" << min_y);
+      otbMsgDevMacro(<< "max_x=" << max_x<< std::endl
+		     << "max_y=" << max_y<< std::endl
+		     << "min_x=" << min_x<< std::endl
+		     << "min_y=" << min_y);
 
-/**Créer un extractor pour chaque portion:**/
-InputImageType::RegionType	            extractregion;
+      /**Créer un extractor pour chaque portion:**/
+      InputImageType::RegionType	            extractregion;
 
-InputImageType::IndexType  		    extractstart;
+      InputImageType::IndexType  		    extractstart;
 
-if (min_x<10 && min_y<10)
+      if (min_x<10 && min_y<10)
 	{
-	extractstart[0]=0;     
-	extractstart[1]=0;
+	  extractstart[0]=0;     
+	  extractstart[1]=0;
 	}
 
-else
+      else
 	{
-	extractstart[0]=min_x-10;     
-	extractstart[1]=min_y-10; 
+	  extractstart[0]=min_x-10;     
+	  extractstart[1]=min_y-10; 
 	} 
 
-InputImageType::SizeType  		    extractsize;
+      InputImageType::SizeType  		    extractsize;
 
-extractsize[0]=(max_x-min_x)+20;      //Taille en X.
-extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
-extractregion.SetSize(extractsize);
-extractregion.SetIndex(extractstart);
-extract->SetExtractionRegion(extractregion);
-extract->SetInput(reader->GetOutput());
-extractorwriter->Update();
+      extractsize[0]=(max_x-min_x)+20;      //Taille en X.
+      extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
+      extractregion.SetSize(extractsize);
+      extractregion.SetIndex(extractstart);
+      extract->SetExtractionRegion(extractregion);
+      extract->SetInput(reader->GetOutput());
+      extractorwriter->Update();
 
-/**Interpolation:**/
-interpolator->SetInputImage(reader->GetOutput());
-for ( k=0; k<It/2; k++)
+      /**Interpolation:**/
+      interpolator->SetInputImage(reader->GetOutput());
+      for ( k=0; k<It/2; k++)
 	{
-	pixelindexbis[0]= pixelIndexArray[2*k];
-	pixelindexbis[1]= pixelIndexArray[2*k+1];
-	currentindexbis[0]= currentIndexArray[2*k];
-	currentindexbis[1]= currentIndexArray[2*k+1];
-
-//Test si notre index est dans la région extraite:
-		if (interpolator->IsInsideBuffer(pixelindexbis) )
-			{
-			pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));
-			}
-		else {pixelvalue=0;}
+	  pixelindexbis[0]= pixelIndexArray[2*k];
+	  pixelindexbis[1]= pixelIndexArray[2*k+1];
+	  currentindexbis[0]= currentIndexArray[2*k];
+	  currentindexbis[1]= currentIndexArray[2*k+1];
+
+	  //Test si notre index est dans la région extraite:
+	  if (interpolator->IsInsideBuffer(pixelindexbis) )
+	    {
+	      pixelvalue=int (interpolator->EvaluateAtIndex(pixelindexbis));
+	    }
+	  else {pixelvalue=0;}
 		
-otbMsgDevMacro(<< "La valeur du pixel est:"<< float(pixelvalue) );
+	  otbMsgDevMacro(<< "La valeur du pixel est:"<< float(pixelvalue) );
 	   
-outputimage->SetPixel(currentindexbis,pixelvalue);
+	  outputimage->SetPixel(currentindexbis,pixelvalue);
 
  	}
-delete pixelIndexArray;
-otbMsgDevMacro(<< "pixelIndexArray deleted" );
-delete currentIndexArray; 
-otbMsgDevMacro(<< "currentIndexArray deleted" );
-}//Fin boucle principale
-
-//Création de l'image de sortie
-writer->SetFileName(argv[2]);
-otbGenericMsgDebugMacro(<< "FilenameSet" );
-rescaler->SetInput(outputimage);
-charoutputimage=rescaler->GetOutput();
-writer->SetInput(charoutputimage);
-writer->Update();
-otbGenericMsgDebugMacro(<< "Outputimage created" );
-
-
-
-
-
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+      delete pixelIndexArray;
+      otbMsgDevMacro(<< "pixelIndexArray deleted" );
+      delete currentIndexArray; 
+      otbMsgDevMacro(<< "currentIndexArray deleted" );
+    }//Fin boucle principale
+
+  //Création de l'image de sortie
+  writer->SetFileName(argv[2]);
+  otbGenericMsgDebugMacro(<< "FilenameSet" );
+  rescaler->SetInput(outputimage);
+  charoutputimage=rescaler->GetOutput();
+  writer->SetInput(charoutputimage);
+  writer->Update();
+  otbGenericMsgDebugMacro(<< "Outputimage created" );
+
+ 
   return EXIT_SUCCESS;
 
 
diff --git a/Testing/Code/Projections/otbSensorImageToCarto.cxx b/Testing/Code/Projections/otbSensorImageToCarto.cxx
index a5bbf8aa43f8f2b364125db224971d5ee33186b3..ded60f31c289c2b5873a4c32785e6f800f83fd1e 100755
--- a/Testing/Code/Projections/otbSensorImageToCarto.cxx
+++ b/Testing/Code/Projections/otbSensorImageToCarto.cxx
@@ -53,374 +53,355 @@
 
 int otbSensorImageToCarto( int argc, char* argv[] )
 {
-  try 
-    {        
+  ossimInit::instance()->initialize(argc, argv);
 
-   ossimInit::instance()->initialize(argc, argv);
-
-   if(argc!=10)
-   {
+  if(argc!=10)
+    {
       std::cout << argv[0] <<" <input filename> <output filename> <X origine> <Y origine> <taille_x> <taille_y> <NumberOfstreamDivisions>" 
                 << "<xSPacing> <ySpacing>" << std::endl;
 
       return EXIT_FAILURE;
-   }
-typedef itk::Point <double, 2> 		 PointType;
-PointType				 outputpoint; 
-
-/*************************************************/
-/*  Création de l'image de sortie outputimage    */
-/*************************************************/
-typedef otb::Image<unsigned char, 2>    CharImageType;
-typedef otb::Image<unsigned int, 2>     ImageType;
-typedef otb::Image<unsigned int, 2>     InputImageType;
-ImageType::Pointer 	  	         outputimage = ImageType::New();
-
-ImageType::PixelType			 pixelvalue;
-
-ImageType::IndexType  			 start;
-start[0]=0;     
-start[1]=0;     
-
-ImageType::SizeType  			 size;
-size[0]=atoi(argv[5]);      //Taille en X.
-size[1]=atoi(argv[6]);	    //Taille en Y.
-
-ImageType::SpacingType  		 spacing;
-spacing[0]=atof(argv[8]);
-spacing[1]=atof(argv[9]);
-
-ImageType::PointType			 origin;
-origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
-origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
-
-ImageType::RegionType			 region;
-
-region.SetSize(size);
-region.SetIndex(start);
-
-outputimage-> SetOrigin(origin);
-outputimage-> SetRegions(region);
-outputimage->SetSpacing(spacing);
-outputimage-> Allocate();     //Notre image de sortie est créée.
-otbGenericMsgDebugMacro(<< "Output image created!! " ); 
-
-/******************************/
-/*  Création de mon handler   */
-/******************************/
+    }
+  typedef itk::Point <double, 2> 		 PointType;
+  PointType				 outputpoint; 
+
+  /*************************************************/
+  /*  Création de l'image de sortie outputimage    */
+  /*************************************************/
+  typedef otb::Image<unsigned char, 2>    CharImageType;
+  typedef otb::Image<unsigned int, 2>     ImageType;
+  typedef otb::Image<unsigned int, 2>     InputImageType;
+  ImageType::Pointer 	  	         outputimage = ImageType::New();
+
+  ImageType::PixelType			 pixelvalue;
+
+  ImageType::IndexType  			 start;
+  start[0]=0;     
+  start[1]=0;     
+
+  ImageType::SizeType  			 size;
+  size[0]=atoi(argv[5]);      //Taille en X.
+  size[1]=atoi(argv[6]);	    //Taille en Y.
+
+  ImageType::SpacingType  		 spacing;
+  spacing[0]=atof(argv[8]);
+  spacing[1]=atof(argv[9]);
+
+  ImageType::PointType			 origin;
+  origin[0]=strtod(argv[3], NULL);         //longitude de l'origine.
+  origin[1]=strtod(argv[4], NULL);         //latitude de l'origine.
+
+  ImageType::RegionType			 region;
+
+  region.SetSize(size);
+  region.SetIndex(start);
+
+  outputimage-> SetOrigin(origin);
+  outputimage-> SetRegions(region);
+  outputimage->SetSpacing(spacing);
+  outputimage-> Allocate();     //Notre image de sortie est créée.
+  otbGenericMsgDebugMacro(<< "Output image created!! " ); 
+
+  /******************************/
+  /*  Création de mon handler   */
+  /******************************/
 	
-ossimKeywordlist geom_kwl;
-      typedef otb::ImageGeometryHandler  HandlerType;
-      HandlerType::Pointer   handler= HandlerType::New();
-      otbGenericMsgDebugMacro(<< "Handler created " ); 
-      handler->SetFileName(argv[1]);
-      geom_kwl=handler->GetGeometryKeywordlist();
-std::cout << geom_kwl << std::endl; 
+  ossimKeywordlist geom_kwl;
+  typedef otb::ImageGeometryHandler  HandlerType;
+  HandlerType::Pointer   handler= HandlerType::New();
+  otbGenericMsgDebugMacro(<< "Handler created " ); 
+  handler->SetFileName(argv[1]);
+  geom_kwl=handler->GetGeometryKeywordlist();
+  std::cout << geom_kwl << std::endl; 
 
-/********************************************************/
-/*   Création de notre modèle en fonction de l'image    */
-/********************************************************/
-typedef otb::ImageFileReader<ImageType>  ReaderType;
-ReaderType::Pointer	                 reader=ReaderType::New();
-//ReaderType::Pointer	                 reader1=ReaderType::New();
-reader->SetFileName(argv[1]);
-reader->GenerateOutputInformation();
+  /********************************************************/
+  /*   Création de notre modèle en fonction de l'image    */
+  /********************************************************/
+  typedef otb::ImageFileReader<ImageType>  ReaderType;
+  ReaderType::Pointer	                 reader=ReaderType::New();
+  //ReaderType::Pointer	                 reader1=ReaderType::New();
+  reader->SetFileName(argv[1]);
+  reader->GenerateOutputInformation();
 
 
 
 
-  	otb::ImageKeywordlist otb_tmp_image;
-/*	itk::ExposeMetaData< otb::ImageKeywordlist >(image_medianFilter->GetOutput()->GetMetaDataDictionary(),
-											 otb::MetaDataKey::m_OSSIMKeywordlistKey,
-											 otb_tmp_image);*/
+  otb::ImageKeywordlist otb_tmp_image;
+  /*	itk::ExposeMetaData< otb::ImageKeywordlist >(image_medianFilter->GetOutput()->GetMetaDataDictionary(),
+	otb::MetaDataKey::m_OSSIMKeywordlistKey,
+	otb_tmp_image);*/
 
-	otb_tmp_image = reader->GetOutput()->GetImageKeywordlist();
+  otb_tmp_image = reader->GetOutput()->GetImageKeywordlist();
 
-	ossimKeywordlist ossim_kwl_image;
-	otb_tmp_image.convertToOSSIMKeywordlist(ossim_kwl_image);
-std::cout << "	ossim_kwl_image: "<<ossim_kwl_image<<std::endl;
+  ossimKeywordlist ossim_kwl_image;
+  otb_tmp_image.convertToOSSIMKeywordlist(ossim_kwl_image);
+  std::cout << "	ossim_kwl_image: "<<ossim_kwl_image<<std::endl;
 
-ossimRefPtr<ossimProjection> toto = ossimProjectionFactoryRegistry::instance()->createProjection(ossim_kwl_image);
-if( toto.valid() == false)
-{
-//        itkGenericExceptionMacro(<<"Invalid Model pointer !");
-        otbGenericMsgDebugMacro(<<"Invalid Model pointer !");
-}
+  ossimRefPtr<ossimProjection> toto = ossimProjectionFactoryRegistry::instance()->createProjection(ossim_kwl_image);
+  if( toto.valid() == false)
+    {
+      //        itkGenericExceptionMacro(<<"Invalid Model pointer !");
+      otbGenericMsgDebugMacro(<<"Invalid Model pointer !");
+    }
 
 
 
 
-      typedef otb::InverseSensorModel<double>  ModelType;
-      ModelType::Pointer   model= ModelType::New();
-      otbGenericMsgDebugMacro(<< "Model set geometry " ); 
-      model->SetImageGeometry(ossim_kwl_image); //Notre modèle est créé à ce niveau.
-         if(!model)
-      {
-       otbGenericMsgDebugMacro(<< "Unable to create a model");
-         return 1;
-      }
-      otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); 
+  typedef otb::InverseSensorModel<double>  ModelType;
+  ModelType::Pointer   model= ModelType::New();
+  otbGenericMsgDebugMacro(<< "Model set geometry " ); 
+  model->SetImageGeometry(ossim_kwl_image); //Notre modèle est créé à ce niveau.
+  if(!model)
+    {
+      otbGenericMsgDebugMacro(<< "Unable to create a model");
+      return 1;
+    }
+  otbGenericMsgDebugMacro(<< "InverseSensorModel created " ); 
       
-      ModelType::OutputPointType inputpoint;
+  ModelType::OutputPointType inputpoint;
  
-/********************************************************/
-/*                  Création d'un reader                */
-/********************************************************/
-
-//reader1->SetFileName(argv[2]);
-//ImageType::Pointer 	  	         image = reader1->GetOutput();
-//reader->Update();
-ImageType::Pointer  			 inputimage= reader->GetOutput();
-ImageType::IndexType 			 currentindex;
-ImageType::IndexType 			 currentindexbis;
-//ImageType::IndexType 			 pixelindex;
-ImageType::IndexType 			 pixelindexbis;
-otbGenericMsgDebugMacro(<< "Reader created " ); 
-
-//Stocker les caractéristiques de notre image capteur:
-// ImageType::SizeType			 inputimagesize;
-// inputimagesize=inputimage->GetLargestPossibleRegion().GetSize();
-// //inputimagesize=inputimage->GetSize();
-// std::cout << "Dimension de notre image capteur:"<<  endl
-//                 << "("<<  inputimagesize[0]<< ","<<  inputimagesize[1]<< ")"<<std::endl; 
-
-
-/********************************************************/
-/*            Création de notre extractor               */
-/********************************************************/
-
-typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
-ExtractType::Pointer			             extract=ExtractType::New();
-otbGenericMsgDebugMacro(<< "Region Extractor created " ); 
-
-/********************************************************/
-/*            Création de notre interpolator            */
-/********************************************************/
-
-typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
-InterpolatorType::Pointer	interpolator=InterpolatorType::New();
-otbGenericMsgDebugMacro(<< "Interpolator created " ); 
-
-/********************************************************/
-/*            Création de notre writer                  */
-/********************************************************/
-
-typedef otb::ImageFileWriter<ImageType>  WriterType;
-typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
-WriterType::Pointer	                 extractorwriter=WriterType::New();
-CharWriterType::Pointer	                 writer=CharWriterType::New();
-extractorwriter->SetFileName("image_temp.jpeg");
-extractorwriter->SetInput(extract->GetOutput());
-otbGenericMsgDebugMacro(<< "extractorwriter created" ); 
-
-/********************************************************/
-/*            Création de notre rescaler                */
-/********************************************************/
-
-typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
-RescalerType::Pointer	                 rescaler=RescalerType::New();
-rescaler->SetOutputMinimum(0);
-rescaler->SetOutputMaximum(255);
-otbGenericMsgDebugMacro(<< "rescaler created" ); 
-
-/********************************************************/
-/*            Création de notre projection              */
-/********************************************************/
-typedef otb::UtmInverseProjection                      utmProjection;
-typedef utmProjection::OutputPointType	        OutputPoint;
-typedef utmProjection::InputPointType	        InputPoint;
-InputPoint                                      geoPoint;
-utmProjection::Pointer   utmprojection= utmProjection::New();
-utmprojection->SetZone(31);
-utmprojection->SetHemisphere('N');
-
-/*************************************************/   
-/*     Création de RegionIteratorwithIndex       */
-/*************************************************/
-
-typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
-//IteratorType outputIt(outputimage, region); //Définition de notre itérateur.
-//std::cout << "Iterator created " << std::endl; 
-
-//Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur.
-unsigned int NumberOfStreamDivisions;
-if (atoi(argv[7])==0)
-{NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage
-else{NumberOfStreamDivisions=atoi(argv[7]);}
-//std::cout << "NumberOfStreamDivisions =" << NumberOfStreamDivisions << std::endl;
-
-//Boucle pour parcourir chaque région
-unsigned int count=0;
-unsigned int It, j, k;
-int max_x, max_y, min_x, min_y;
-ImageType::IndexType  			 iterationRegionStart;
-ImageType::SizeType  			 iteratorRegionSize;
-ImageType::RegionType			 iteratorRegion;
-
-for(count=0;count<NumberOfStreamDivisions;count++)
-{//début boucle principale
-/**Création de la région pour chaque portion**/
-iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
-if (count==NumberOfStreamDivisions-1)
-{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
-iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
-}
-else
-{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
-iterationRegionStart[1]=count*iteratorRegionSize[1]; 
-}    
-iterationRegionStart[0]=0;//Début de chaque ligne==>0     
-// std::cout <<iteratorRegionSize[1]<< std::endl;  
-// std::cout <<iterationRegionStart[0]<< std::endl; 
-iteratorRegion.SetSize(iteratorRegionSize);
-iteratorRegion.SetIndex(iterationRegionStart); 
-
-/**Création d'un tableau de pixelindex**/
-unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
-int *pixelIndexArray=new int[pixelIndexArrayDimension];
-int *currentIndexArray=new int[pixelIndexArrayDimension];
-
-/**Création de l'itérateur pour chaque portion:**/
-IteratorType outputIt(outputimage, iteratorRegion);
-
-/**On applique l'itération sur chaque portion**/
-It=0;
-for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
-{//Début boucle
-//On get l'index courant
-currentindex=outputIt.GetIndex();
-//On le transforme en Point physique
-outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
-      otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
-                << "Le point physique correspondant est: ("<<  outputpoint[0]<< ","<<  outputpoint[1]<< ")"); 
-
-//On applique la projection:
-geoPoint= utmprojection->TransformPoint(outputpoint);	
-otbMsgDevMacro(<< "Le point géographique correspondant est: ("<<  geoPoint[0]<< ","<<  geoPoint[1]<< ")"); 	
-//On calcule les coordonnées pixeliques sur l'image capteur
-inputpoint = model->TransformPoint(geoPoint);
-  otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl
-               << inputpoint[0] << ","<< inputpoint[1] );
-//inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
-//    otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl
-//                 << pixelindex[0] << ","<< pixelindex[1] );
-
-/**On stocke les pixel index dans un tableau pixelindexarray**/
-// pixelIndexArray[It]=pixelindex[0];
-// pixelIndexArray[It+1]=pixelindex[1];
-pixelIndexArray[It]=static_cast<int>(inputpoint[0]);
-pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]);
-
-
-//std::cout << "La valeur stockée" << endl
-//          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl;
-
-/**On stocke les pixel index dans un tableau currentindexarray**/
- currentIndexArray[It]=currentindex[0];
- currentIndexArray[It+1]=currentindex[1];
-otbMsgDevMacro(<< "La valeur stockée" << std::endl
-          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1]);
- It=It+2;
-}//Fin boucle: on a stocké tous les index qui nous interesse
-//std::cout  << "It= " << It << std::endl;
-
-/**Calcul des max et min pour pouvoir extraire la bonne région:**/
-max_x=pixelIndexArray[0];
-min_x=pixelIndexArray[0];
-max_y=pixelIndexArray[1];
-min_y=pixelIndexArray[1];
+  /********************************************************/
+  /*                  Création d'un reader                */
+  /********************************************************/
+
+  //reader1->SetFileName(argv[2]);
+  //ImageType::Pointer 	  	         image = reader1->GetOutput();
+  //reader->Update();
+  ImageType::Pointer  			 inputimage= reader->GetOutput();
+  ImageType::IndexType 			 currentindex;
+  ImageType::IndexType 			 currentindexbis;
+  //ImageType::IndexType 			 pixelindex;
+  ImageType::IndexType 			 pixelindexbis;
+  otbGenericMsgDebugMacro(<< "Reader created " ); 
+
+  //Stocker les caractéristiques de notre image capteur:
+  // ImageType::SizeType			 inputimagesize;
+  // inputimagesize=inputimage->GetLargestPossibleRegion().GetSize();
+  // //inputimagesize=inputimage->GetSize();
+  // std::cout << "Dimension de notre image capteur:"<<  endl
+  //                 << "("<<  inputimagesize[0]<< ","<<  inputimagesize[1]<< ")"<<std::endl; 
+
+
+  /********************************************************/
+  /*            Création de notre extractor               */
+  /********************************************************/
+
+  typedef itk::ExtractImageFilter<InputImageType,ImageType>   ExtractType;
+  ExtractType::Pointer			             extract=ExtractType::New();
+  otbGenericMsgDebugMacro(<< "Region Extractor created " ); 
+
+  /********************************************************/
+  /*            Création de notre interpolator            */
+  /********************************************************/
+
+  typedef itk::LinearInterpolateImageFunction<ImageType, double>  InterpolatorType;
+  InterpolatorType::Pointer	interpolator=InterpolatorType::New();
+  otbGenericMsgDebugMacro(<< "Interpolator created " ); 
+
+  /********************************************************/
+  /*            Création de notre writer                  */
+  /********************************************************/
+
+  typedef otb::ImageFileWriter<ImageType>  WriterType;
+  typedef otb::ImageFileWriter<CharImageType>  CharWriterType;
+  WriterType::Pointer	                 extractorwriter=WriterType::New();
+  CharWriterType::Pointer	                 writer=CharWriterType::New();
+  extractorwriter->SetFileName("image_temp.jpeg");
+  extractorwriter->SetInput(extract->GetOutput());
+  otbGenericMsgDebugMacro(<< "extractorwriter created" ); 
+
+  /********************************************************/
+  /*            Création de notre rescaler                */
+  /********************************************************/
+
+  typedef itk::RescaleIntensityImageFilter<ImageType,CharImageType>  RescalerType;
+  RescalerType::Pointer	                 rescaler=RescalerType::New();
+  rescaler->SetOutputMinimum(0);
+  rescaler->SetOutputMaximum(255);
+  otbGenericMsgDebugMacro(<< "rescaler created" ); 
+
+  /********************************************************/
+  /*            Création de notre projection              */
+  /********************************************************/
+  typedef otb::UtmInverseProjection                      utmProjection;
+  typedef utmProjection::OutputPointType	        OutputPoint;
+  typedef utmProjection::InputPointType	        InputPoint;
+  InputPoint                                      geoPoint;
+  utmProjection::Pointer   utmprojection= utmProjection::New();
+  utmprojection->SetZone(31);
+  utmprojection->SetHemisphere('N');
+
+  /*************************************************/   
+  /*     Création de RegionIteratorwithIndex       */
+  /*************************************************/
+
+  typedef itk::ImageRegionIteratorWithIndex<ImageType>	IteratorType;
+  //IteratorType outputIt(outputimage, region); //Définition de notre itérateur.
+  //std::cout << "Iterator created " << std::endl; 
+
+  //Donner une valeur par défaut numberofstreamdivision ou le faire fixer par l'utilisateur.
+  unsigned int NumberOfStreamDivisions;
+  if (atoi(argv[7])==0)
+    {NumberOfStreamDivisions=10;}//ou pourrait etre calculer en fonction de la taille de outputimage
+  else{NumberOfStreamDivisions=atoi(argv[7]);}
+  //std::cout << "NumberOfStreamDivisions =" << NumberOfStreamDivisions << std::endl;
+
+  //Boucle pour parcourir chaque région
+  unsigned int count=0;
+  unsigned int It, j, k;
+  int max_x, max_y, min_x, min_y;
+  ImageType::IndexType  			 iterationRegionStart;
+  ImageType::SizeType  			 iteratorRegionSize;
+  ImageType::RegionType			 iteratorRegion;
+
+  for(count=0;count<NumberOfStreamDivisions;count++)
+    {//début boucle principale
+      /**Création de la région pour chaque portion**/
+      iteratorRegionSize[0]=atoi(argv[5]);      //Taille en X.
+      if (count==NumberOfStreamDivisions-1)
+	{iteratorRegionSize[1]=(atoi(argv[6]))-((int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5))*(count);
+	iterationRegionStart[1]=(atoi(argv[5]))-(iteratorRegionSize[1]); 
+	}
+      else
+	{iteratorRegionSize[1]=(int)(((atoi(argv[6]))/NumberOfStreamDivisions)+0.5);	  //Taille en Y.
+	iterationRegionStart[1]=count*iteratorRegionSize[1]; 
+	}    
+      iterationRegionStart[0]=0;//Début de chaque ligne==>0     
+      // std::cout <<iteratorRegionSize[1]<< std::endl;  
+      // std::cout <<iterationRegionStart[0]<< std::endl; 
+      iteratorRegion.SetSize(iteratorRegionSize);
+      iteratorRegion.SetIndex(iterationRegionStart); 
+
+      /**Création d'un tableau de pixelindex**/
+      unsigned int pixelIndexArrayDimension= iteratorRegionSize[0]*iteratorRegionSize[1]*2;
+      int *pixelIndexArray=new int[pixelIndexArrayDimension];
+      int *currentIndexArray=new int[pixelIndexArrayDimension];
+
+      /**Création de l'itérateur pour chaque portion:**/
+      IteratorType outputIt(outputimage, iteratorRegion);
+
+      /**On applique l'itération sur chaque portion**/
+      It=0;
+      for (outputIt.GoToBegin(); !outputIt.IsAtEnd(); ++outputIt)
+	{//Début boucle
+	  //On get l'index courant
+	  currentindex=outputIt.GetIndex();
+	  //On le transforme en Point physique
+	  outputimage->TransformIndexToPhysicalPoint(currentindex, outputpoint);
+	  otbMsgDevMacro(<< "Pour l'Index N°:(" << currentindex[0]<< ","<< currentindex[1] << ")"<<  std::endl
+			 << "Le point physique correspondant est: ("<<  outputpoint[0]<< ","<<  outputpoint[1]<< ")"); 
+
+	  //On applique la projection:
+	  geoPoint= utmprojection->TransformPoint(outputpoint);	
+	  otbMsgDevMacro(<< "Le point géographique correspondant est: ("<<  geoPoint[0]<< ","<<  geoPoint[1]<< ")"); 	
+	  //On calcule les coordonnées pixeliques sur l'image capteur
+	  inputpoint = model->TransformPoint(geoPoint);
+	  otbMsgDevMacro(<< "Les coordonnées en pixel sur l'image capteur correspondant à ce point sont:" << std::endl
+			 << inputpoint[0] << ","<< inputpoint[1] );
+	  //inputimage->TransformPhysicalPointToIndex(inputpoint,pixelindex);
+	  //    otbMsgDevMacro(<< "L'index correspondant à ce point est:" << std::endl
+	  //                 << pixelindex[0] << ","<< pixelindex[1] );
+
+	  /**On stocke les pixel index dans un tableau pixelindexarray**/
+	  // pixelIndexArray[It]=pixelindex[0];
+	  // pixelIndexArray[It+1]=pixelindex[1];
+	  pixelIndexArray[It]=static_cast<int>(inputpoint[0]);
+	  pixelIndexArray[It+1]=static_cast<int>(inputpoint[1]);
+
+
+	  //std::cout << "La valeur stockée" << endl
+	  //          << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1] <<std::endl;
+
+	  /**On stocke les pixel index dans un tableau currentindexarray**/
+	  currentIndexArray[It]=currentindex[0];
+	  currentIndexArray[It+1]=currentindex[1];
+	  otbMsgDevMacro(<< "La valeur stockée" << std::endl
+			 << pixelIndexArray[It] <<  "," << pixelIndexArray[It+1]);
+	  It=It+2;
+	}//Fin boucle: on a stocké tous les index qui nous interesse
+      //std::cout  << "It= " << It << std::endl;
+
+      /**Calcul des max et min pour pouvoir extraire la bonne région:**/
+      max_x=pixelIndexArray[0];
+      min_x=pixelIndexArray[0];
+      max_y=pixelIndexArray[1];
+      min_y=pixelIndexArray[1];
  
- 	for (j=0;j<It;j++)
+      for (j=0;j<It;j++)
  	{
- 		if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
- 		if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
- 		if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]>max_x){max_x=pixelIndexArray[j];}
+	  if(j%2==0 && pixelIndexArray[j]<min_x){min_x=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]>max_y){max_y=pixelIndexArray[j];}
+	  if(j%2!=0 && pixelIndexArray[j]<min_y){min_y=pixelIndexArray[j];}
  	}//Fin while
 	
- otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl
-           << "max_y=" << max_y<< std::endl
-	   << "min_x=" << min_x<< std::endl
-	   << "min_y=" << min_y);
+      otbGenericMsgDebugMacro(<< "max_x=" << max_x<< std::endl
+			      << "max_y=" << max_y<< std::endl
+			      << "min_x=" << min_x<< std::endl
+			      << "min_y=" << min_y);
 
-/**Créer un extractor pour chaque portion:**/
-InputImageType::RegionType	            extractregion;
+      /**Créer un extractor pour chaque portion:**/
+      InputImageType::RegionType	            extractregion;
 
-InputImageType::IndexType  		    extractstart;
+      InputImageType::IndexType  		    extractstart;
 
-if (min_x<10 && min_y<10)
+      if (min_x<10 && min_y<10)
 	{
-	extractstart[0]=0;     
-	extractstart[1]=0;
+	  extractstart[0]=0;     
+	  extractstart[1]=0;
 	}
 
-else
+      else
 	{
-	extractstart[0]=min_x-10;     
-	extractstart[1]=min_y-10; 
+	  extractstart[0]=min_x-10;     
+	  extractstart[1]=min_y-10; 
 	} 
 
-InputImageType::SizeType  		    extractsize;
-
-extractsize[0]=(max_x-min_x)+20;      //Taille en X.
-extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
-extractregion.SetSize(extractsize);
-extractregion.SetIndex(extractstart);
-//extractregion=inputimage->GetRequestedRegion();
-extract->SetExtractionRegion(extractregion);
-extract->SetInput(reader->GetOutput());
-extractorwriter->Update();
-
-/**Interpolation:**/
-interpolator->SetInputImage(reader->GetOutput());
-//interpolator->SetDefaultPixelValue(0);
-for ( k=0; k<It/2; k++)
-{
-pixelindexbis[0]= pixelIndexArray[2*k];
-pixelindexbis[1]= pixelIndexArray[2*k+1];
-currentindexbis[0]= currentIndexArray[2*k];
-currentindexbis[1]= currentIndexArray[2*k+1];
-//Test si notre index est dans la région extraite:
-if (interpolator->IsInsideBuffer(pixelindexbis))
-{pixelvalue=int(interpolator->EvaluateAtIndex(pixelindexbis));}
-else {pixelvalue=0;}
-otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl
-           << float(pixelvalue) );
-outputimage->SetPixel(currentindexbis,pixelvalue);
- }
- delete pixelIndexArray;
-otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" );
-delete currentIndexArray; 
-otbGenericMsgDebugMacro(<< "currentIndexArray deleted" );
-}//Fin boucle principale
-writer->SetFileName(argv[2]);
-otbGenericMsgDebugMacro(<< "FilenameSet" );
-rescaler->SetInput(outputimage);
-CharImageType::Pointer      charoutputimage=CharImageType::New();
-charoutputimage=rescaler->GetOutput();
-writer->SetInput(charoutputimage);
-writer->Update();
-otbGenericMsgDebugMacro(<< "Outputimage created" );
-
-
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-    std::cout << "Exception itk::ExceptionObject levee !" << std::endl; 
-    std::cout << err << std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( std::bad_alloc & err ) 
-    { 
-    std::cout << "Exception bad_alloc : "<<(char*)err.what()<< std::endl; 
-    return EXIT_FAILURE;
-    } 
-  catch( ... ) 
-    { 
-    std::cout << "Exception levee inconnue !" << std::endl; 
-    return EXIT_FAILURE;
-    } 
+      InputImageType::SizeType  		    extractsize;
+
+      extractsize[0]=(max_x-min_x)+20;      //Taille en X.
+      extractsize[1]=(max_y-min_y)+20;	//Taille en Y.
+      extractregion.SetSize(extractsize);
+      extractregion.SetIndex(extractstart);
+      //extractregion=inputimage->GetRequestedRegion();
+      extract->SetExtractionRegion(extractregion);
+      extract->SetInput(reader->GetOutput());
+      extractorwriter->Update();
+
+      /**Interpolation:**/
+      interpolator->SetInputImage(reader->GetOutput());
+      //interpolator->SetDefaultPixelValue(0);
+      for ( k=0; k<It/2; k++)
+	{
+	  pixelindexbis[0]= pixelIndexArray[2*k];
+	  pixelindexbis[1]= pixelIndexArray[2*k+1];
+	  currentindexbis[0]= currentIndexArray[2*k];
+	  currentindexbis[1]= currentIndexArray[2*k+1];
+	  //Test si notre index est dans la région extraite:
+	  if (interpolator->IsInsideBuffer(pixelindexbis))
+	    {pixelvalue=int(interpolator->EvaluateAtIndex(pixelindexbis));}
+	  else {pixelvalue=0;}
+	  otbMsgDevMacro(<< "La valeur du pixel est:" << std::endl
+			 << float(pixelvalue) );
+	  outputimage->SetPixel(currentindexbis,pixelvalue);
+	}
+      delete pixelIndexArray;
+      otbGenericMsgDebugMacro(<< "pixelIndexArray deleted" );
+      delete currentIndexArray; 
+      otbGenericMsgDebugMacro(<< "currentIndexArray deleted" );
+    }//Fin boucle principale
+  writer->SetFileName(argv[2]);
+  otbGenericMsgDebugMacro(<< "FilenameSet" );
+  rescaler->SetInput(outputimage);
+  CharImageType::Pointer      charoutputimage=CharImageType::New();
+  charoutputimage=rescaler->GetOutput();
+  writer->SetInput(charoutputimage);
+  writer->Update();
+  otbGenericMsgDebugMacro(<< "Outputimage created" );
+
+
+  
   return EXIT_SUCCESS;
 
- }//Fin main()
+}//Fin main()
 
diff --git a/Testing/Code/Projections/otbSensorModelsNew.cxx b/Testing/Code/Projections/otbSensorModelsNew.cxx
index bfa0099bfabac1e5b3dbcf1ced10ab0b8c7a27ec..200835e46d205e875d63aed05cb993dec6bbef0b 100755
--- a/Testing/Code/Projections/otbSensorModelsNew.cxx
+++ b/Testing/Code/Projections/otbSensorModelsNew.cxx
@@ -29,29 +29,15 @@
 
 int otbSensorModelsNew( int argc, char* argv[] )
 {
-  try 
-    {        
-        typedef otb::SensorModelBase<double> SensorModelBaseType;
-        SensorModelBaseType::Pointer lSensorModelBase = SensorModelBaseType::New();
-
-        typedef otb::InverseSensorModel<double> InverseSensorModelType;
-        InverseSensorModelType::Pointer lInverseSensorModel = InverseSensorModelType::New();
-
-        typedef otb::ForwardSensorModel<double> ForwardSensorModelType;
-        ForwardSensorModelType::Pointer lForwardSensorModel = ForwardSensorModelType::New();
-    } 
-  catch( itk::ExceptionObject & err ) 
-    { 
-      std::cout << "Exception itk::ExceptionObject thrown !" << std::endl; 
-      std::cout << err << std::endl; 
-      return EXIT_FAILURE;
-    } 
-
-  catch( ... ) 
-    { 
-      std::cout << "Unknown exception thrown !" << std::endl; 
-      return EXIT_FAILURE;
-    } 
+  typedef otb::SensorModelBase<double> SensorModelBaseType;
+  SensorModelBaseType::Pointer lSensorModelBase = SensorModelBaseType::New();
+  
+  typedef otb::InverseSensorModel<double> InverseSensorModelType;
+  InverseSensorModelType::Pointer lInverseSensorModel = InverseSensorModelType::New();
+  
+  typedef otb::ForwardSensorModel<double> ForwardSensorModelType;
+  ForwardSensorModelType::Pointer lForwardSensorModel = ForwardSensorModelType::New();
+  
 
   return EXIT_SUCCESS;
 }