Multi writer
Summary
This branch contains a Multi-writer class, designed to writer several files in a synchronized way.
Rationale
The multi-writer has been developed for Sentinel2 processing chains, and has been revamped to a more generic version. There is also a feature request about a synchronized writer (#1532 (closed)).
Implementation Details
Classes and files
M Modules/Core/Streaming/include/otbStreamingManager.h
M Modules/Core/Streaming/include/otbStreamingManager.txx
Allow to access the splitter base type.
M Modules/IO/ImageIO/include/otbImageFileWriter.h
M Modules/IO/ImageIO/include/otbImageFileWriter.txx
The writing of output information in the image has been moved to the GenerateOutputInformation()
.
A Modules/IO/ImageIO/include/otbMultiImageFileWriter.h
A Modules/IO/ImageIO/include/otbMultiImageFileWriter.txx
M Modules/IO/ImageIO/src/CMakeLists.txt
A Modules/IO/ImageIO/src/otbMultiImageFileWriter.cxx
The new MultiImageFileWriter
is not a templated class, but it relies on internal template class Sink<TImage>
.
This writer will stream a list of input images and write the chunks for each output file. Each input image is divided into the same number of streams, and the processing is synchronized:
- The pipeline computes the chunk n°
i
for each output image. - Then the MultiWriter writes to disk the chunk n°
i
for each output image - The pipeline compute the chunk n°
i+1
...
Note that there is no constraint on inputs having the same size.
The last changes are not required, but they prepare the way for the integration of MultiImageWriter
into otb::Wrapper::Application
.
M Modules/MPI/MPIVrtWriter/include/otbMPIVrtWriter.h
A Modules/MPI/MPIVrtWriter/include/otbMPIVrtWriter.txx
M Modules/MPI/MPIVrtWriter/otb-module.cmake
The function using MPI to write an image as several TIF and a VRT file has been moved into a standard filter, so that we have a ProcessObject
to call Update()
.
M Modules/Wrappers/ApplicationEngine/include/otbWrapperOutputImageParameter.h
M Modules/Wrappers/ApplicationEngine/src/otbWrapperOutputImageParameter.cxx
The implementation of the output image parameter has been simplified. It will now prepare the caster and writer during InitializeWriters()
, and you can trigger the pipeline later using Write()
. Note that with this mini refactoring, even
the MPI writers (SPTW and VRT) can be retrieved by GetWriter()
, enabling progress monitoring (which was not the case before)
M Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx
Due to the previous change on OutputImageParameter
, the InitializeWriters()
has to be called after setting the default RAM.
Applications
Tests
M Modules/IO/ImageIO/test/CMakeLists.txt
M Modules/IO/ImageIO/test/otbImageIOTestDriver.cxx
A Modules/IO/ImageIO/test/otbMultiImageFileWriterTest.cxx
New test for the MultiImageFileWriter.