diff --git a/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx b/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
index caf144257e7fe2ad8f1792f545aae31748ccb8c0..c1e4f88f1cf9f428a038da63d99161e26daa9f66 100644
--- a/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
+++ b/Modules/Applications/AppClassification/include/otbTrainVectorBase.hxx
@@ -243,7 +243,7 @@ inline int
 TrainVectorBase<float, int>
 ::GetFeatureField(const ogr::Feature & feature, int fieldIndex)
 {
-  return(feature.ogr().GetFieldAsInteger( fieldIndex ));
+  return(feature[fieldIndex].GetValue<int>());
 }
 
 template <class TInputValue, class TOutputValue>
@@ -251,7 +251,7 @@ inline TOutputValue
 TrainVectorBase<TInputValue, TOutputValue>
 ::GetFeatureField(const ogr::Feature & feature, int fieldIndex)
 {
-  return(feature.ogr().GetFieldAsDouble( fieldIndex ));
+  return(feature[fieldIndex].GetValue<double>());
 }
 
 template <class TInputValue, class TOutputValue>
@@ -310,7 +310,7 @@ TrainVectorBase<TInputValue, TOutputValue>
         MeasurementType mv;
         mv.SetSize( m_FeaturesInfo.m_NbFeatures );
         for( unsigned int idx = 0; idx < m_FeaturesInfo.m_NbFeatures; ++idx )
-          mv[idx] = feature.ogr().GetFieldAsDouble( featureFieldIndex[idx] );
+          mv[idx] = feature[featureFieldIndex[idx]].GetValue<double>();
 
         input->PushBack( mv );