diff --git a/Applications/Utils/otbVectorDataTransform.cxx b/Applications/Utils/otbVectorDataTransform.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..5659ba4db12d31c649449ccb6d01a11297e24134
--- /dev/null
+++ b/Applications/Utils/otbVectorDataTransform.cxx
@@ -0,0 +1,154 @@
+/*=========================================================================
+
+ Program:   ORFEO Toolbox
+ Language:  C++
+ Date:      $Date$
+ Version:   $Revision$
+
+
+ Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
+ See OTBCopyright.txt for details.
+
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE.  See the above copyright notices for more information.
+
+ =========================================================================*/
+#include "otbWrapperApplication.h"
+#include "otbWrapperApplicationFactory.h"
+
+#include "otbVectorDataTransformFilter.h"
+#include "otbVectorDataProjectionFilter.h"
+#include "itkCenteredSimilarity2DTransform.h"
+#include "otbMath.h"
+
+namespace otb
+{
+
+namespace Wrapper
+{
+
+class VectorDataTransform : public Application
+{
+public:
+/** Standard class typedefs. */
+  typedef VectorDataTransform           Self;
+  typedef Application                   Superclass;
+  typedef itk::SmartPointer<Self>       Pointer;
+  typedef itk::SmartPointer<const Self> ConstPointer;
+
+  /** Standard macro */
+  itkNewMacro(Self);
+
+  itkTypeMacro(VectorDataTransform, otb::Application);
+
+  /** Convenient typedefs */
+  typedef otb::VectorDataTransformFilter<VectorDataType,
+                                         VectorDataType>   VectorDataTransformFilterType;
+  typedef otb::VectorDataProjectionFilter<VectorDataType,
+                                          VectorDataType>  VectorDataProjectionFilterType;
+  typedef itk::CenteredSimilarity2DTransform<double>       TransformType;
+
+private:
+  VectorDataTransform()
+  {
+    SetName("VectorDataTransform");
+    SetDescription("Apply a transform to each vertex of the input VectorData");
+  }
+
+  void DoCreateParameters()
+  {
+    AddParameter(ParameterType_InputVectorData, "vd", "Input Vector data");
+    AddParameter(ParameterType_OutputVectorData,"out","Output Vector data");
+
+    AddParameter(ParameterType_InputImage, "in", "Support image");
+    SetParameterDescription("in","Image needed as a support of the VectorData");
+  
+    // Transform Group
+    AddParameter(ParameterType_Group, "transform", "Transform parameters");
+    MandatoryOff("transform");
+
+    AddParameter(ParameterType_Float, "transform.tx", "Translation X");
+    SetParameterDescription("transform.tx","Translation in the X direction");
+    AddParameter(ParameterType_Float, "transform.ty", "Translation Y");
+    SetParameterDescription("transform.ty","Translation in the Y direction");
+    SetDefaultParameterFloat("transform.tx",0.);
+    SetDefaultParameterFloat("transform.ty",0.);
+      
+    AddParameter(ParameterType_Float, "transform.ro", "Rotation Angle");  
+    SetParameterDescription("transform.ro","Angle of the rotation to apply in degrees");
+    SetDefaultParameterFloat("transform.ro",0.);
+
+    AddParameter(ParameterType_Float, "transform.centerx", "Center X");
+    SetParameterDescription("transform.centerx","The first coordinate of the rotation center");
+    AddParameter(ParameterType_Float, "transform.centery", "Center Y");
+    SetParameterDescription("transform.centery","The second coordinate of the rotation center");
+    SetDefaultParameterFloat("transform.centerx",0.);
+    SetDefaultParameterFloat("transform.centery",0.);
+
+    AddParameter(ParameterType_Float, "transform.scale", "Scale");
+    SetParameterDescription("transform.scale","The scale to apply");
+    SetDefaultParameterFloat("transform.scale",1.);
+  }
+
+  void DoUpdateParameters()
+  {
+    // nothing to update
+  }
+
+  void DoExecute()
+  {
+    // Get the support image
+    FloatVectorImageType*  inImage = GetParameterImage("in");
+    
+    // Get the VectorData to apply the transform on
+    VectorDataType*        vd      = GetParameterVectorData("vd");
+      
+    // Reproject the VectorData in the image coordinate system
+    m_VectorDataProj = VectorDataProjectionFilterType::New();
+    m_VectorDataProj->SetInput(vd);
+    m_VectorDataProj->SetInputProjectionRef(inImage->GetProjectionRef());
+    m_VectorDataProj->SetOutputKeywordList(inImage->GetImageKeywordlist());
+    m_VectorDataProj->SetOutputProjectionRef(inImage->GetProjectionRef());
+    
+    // Set up the transform 
+    m_Transform = TransformType::New();
+    TransformType::ParametersType parameters(6);
+
+    // Get parameters if any
+    parameters[0] = GetParameterFloat("transform.scale");
+    parameters[1] = CONST_PI * GetParameterFloat("transform.ro")/180.;
+    parameters[2] = GetParameterFloat("transform.centerx");
+    parameters[3] = GetParameterFloat("transform.centery");
+    parameters[4] = inImage->GetSpacing()[0] * GetParameterFloat("transform.tx");
+    parameters[5] = vcl_abs(inImage->GetSpacing()[1]) * GetParameterFloat("transform.ty");
+    
+    // Set the parameters to the transform
+    m_Transform->SetParameters(parameters);
+    
+    m_TransformFilter = VectorDataTransformFilterType::New();
+    m_TransformFilter->SetInput(vd);
+    m_TransformFilter->SetTransform(m_Transform);
+  
+    // retransform int the input vector projection
+    m_ReverseVectorDataProj = VectorDataProjectionFilterType::New();
+    m_ReverseVectorDataProj->SetInput(m_TransformFilter->GetOutput());
+    m_ReverseVectorDataProj->SetOutputProjectionRef(inImage->GetProjectionRef());
+    m_ReverseVectorDataProj->SetInputKeywordList(inImage->GetImageKeywordlist());
+    m_ReverseVectorDataProj->SetInputProjectionRef(inImage->GetProjectionRef());
+
+    // Set the output image
+    SetParameterOutputVectorData("out", m_ReverseVectorDataProj->GetOutput());
+  }
+
+  VectorDataTransformFilterType::Pointer   m_TransformFilter;
+  VectorDataProjectionFilterType::Pointer  m_VectorDataProj;
+  VectorDataProjectionFilterType::Pointer  m_ReverseVectorDataProj;
+  TransformType::Pointer                   m_Transform;
+};
+
+}
+}
+
+OTB_APPLICATION_EXPORT(otb::Wrapper::VectorDataTransform)