diff --git a/Examples/Segmentation/StreamingMeanShiftSegmentation.cxx b/Examples/Segmentation/StreamingMeanShiftSegmentation.cxx
index 81fef28ef84360cc04d561a6f5dfdb7ccd2436cb..f7899825b454e235ca94c4875c3c5a37838c099f 100644
--- a/Examples/Segmentation/StreamingMeanShiftSegmentation.cxx
+++ b/Examples/Segmentation/StreamingMeanShiftSegmentation.cxx
@@ -23,7 +23,7 @@
 // Software Guide : BeginLatex
 //
 // The following example illustrates how to segment very large images
-// using the \doxygen{otb}{StreamingVectorizedSegmentation}. This filter is
+// using the \doxygen{otb}{StreamingImageToOGRLayerSegmentationFilter}. This filter is
 // templated over the segmentation filter that will be used to segment each tile
 // of the input image. In this example we will use the \doxygen{otb}{MeanShiftVectorImageFilter}.
 // The labeled output image of each tile is then vectorized (using a filter based on GDALPolygonize)
@@ -37,7 +37,7 @@
 #include <iostream>
 
 // Software Guide : BeginCodeSnippet
-#include "otbStreamingImageToOGRDataSourceSegmentationFilter.h"
+#include "otbStreamingImageToOGRLayerSegmentationFilter.h"
 #include "otbMeanShiftVectorImageFilter.h"
 #include "otbOGRDataSourceWrapper.h"
 #include "otbOGRDataSourceStreamStitchingFilter.h"
@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
   // Software Guide : BeginCodeSnippet
   //typedef otb::MeanShiftSmoothingImageFilter<ImageType, ImageType> MeanShiftImageFilterType;
   typedef otb::MeanShiftVectorImageFilter <ImageType, ImageType, LabelImageType>  SegmentationFilterType;
-  typedef otb::StreamingImageToOGRDataSourceSegmentationFilter<ImageType, SegmentationFilterType> StreamingVectorizedSegmentationType;
+  typedef otb::StreamingImageToOGRLayerSegmentationFilter<ImageType, SegmentationFilterType> StreamingVectorizedSegmentationType;
   // Software Guide : EndCodeSnippet
 
   // Software Guide : BeginLatex
@@ -118,6 +118,12 @@ int main(int argc, char *argv[])
   StreamingVectorizedSegmentationType::Pointer filter = StreamingVectorizedSegmentationType::New();
   // Software Guide : EndCodeSnippet
   
+  reader->SetFileName(imageName);
+  reader->UpdateOutputInformation();
+  
+  maskReader->SetFileName(maskName);
+  maskReader->UpdateOutputInformation();
+
   // Software Guide : BeginLatex
   //
   // The instanciation of the DataSource is slightly different as usual.
@@ -131,7 +137,42 @@ int main(int argc, char *argv[])
   // Software Guide : BeginCodeSnippet
   otb::ogr::DataSource::Pointer ogrDS = otb::ogr::DataSource::New(dataSourceName, otb::ogr::DataSource::Modes::write);
   // Software Guide : EndCodeSnippet
+
+  
+  // Software Guide : BeginLatex
+  //
+  // Next, we will create the layer inside the DataSource that will
+  // hold the polygons from the vectorized segmentation. First, we
+  // need to retrieve the spatial reference from the input image.
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet
+  OGRSpatialReference oSRS(reader->GetOutput()->GetProjectionRef().c_str());
+  // Software Guide : EndCodeSnippet
+
+  // Software Guide : BeginLatex
+  //
+  // Now, we can create the layer.
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet
+  otb::ogr::Layer ogrLayer = ogrDS->CreateLayer(layerName,&oSRS,wkbMultiPolygon,NULL);
+  // Software Guide : EndCodeSnippet
   
+  // Software Guide : BeginLatex
+  //
+  // Last, we need to create a field inside the layer that will hold
+  // the identifier of the polygons.
+  //
+  // Software Guide : EndLatex
+
+  // Software Guide : BeginCodeSnippet
+  OGRFieldDefn ogrField(fieldName.c_str(),OFTInteger);
+  ogrLayer.CreateField(ogrField,true);
+  // Software Guide : EndCodeSnippet
+
   // Software Guide : BeginLatex
   //
   // Now we set the parameters to the segmentation filter.The \doxygen{otb}{MeanShiftVectorImageFilter}
@@ -153,7 +194,6 @@ int main(int argc, char *argv[])
   // \begin{itemize}
   //  \item tile size : use \code{SetTileDimensionTiledStreaming()} for square tile or \code{SetNumberOfLinesStrippedStreaming()}
   // for Strip.
-  // \item layer name : name of the layer that will be created in the input \doxygen{otb}{ogr}{DataSource}.
   // \item field name : name of the field that will contained the label values. (default is "DN").
   // \item start label : first label. Each polygons have a unique label (incremented by one).
   // \item option to filter small polygons (default to false).
@@ -164,7 +204,6 @@ int main(int argc, char *argv[])
   // Software Guide : EndLatex
   // Software Guide : BeginCodeSnippet
   filter->GetStreamer()->SetTileDimensionTiledStreaming(tileSize);
-  filter->SetLayerName(layerName);
   filter->SetFieldName(fieldName);
   filter->SetStartLabel(1);
   filter->SetFilterSmallObject(filterSmallObj);
@@ -173,24 +212,16 @@ int main(int argc, char *argv[])
   filter->SetSimplificationTolerance(tolerance);
   // Software Guide : EndCodeSnippet
   
-  
   // Software Guide : BeginLatex
   //
   // Finally we connect the pipeline
   // Software Guide : EndLatex
-  // Software Guide : BeginCodeSnippet
-  reader->SetFileName(imageName);
-  reader->UpdateOutputInformation();
-  
-  maskReader->SetFileName(maskName);
-  maskReader->UpdateOutputInformation();
-  
+  // Software Guide : BeginCodeSnippet  
   filter->SetInput(reader->GetOutput());
   filter->SetInputMask(maskReader->GetOutput());
-  filter->SetOGRDataSource(ogrDS);
+  filter->SetOGRLayer(ogrLayer);
   // Software Guide : EndCodeSnippet
   
-  
   // Software Guide : BeginLatex
   //
   // And call the \code{Initialize()} method (needed to create the output layer in the datasource)