Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • otb otb
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 207
    • Issues 207
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 14
    • Merge requests 14
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Main Repositories
  • otbotb
  • Merge requests
  • !22

Register Pipeline Services (ProcessObjects and DataObjects)

  • Review changes

  • Download
  • Email patches
  • Plain diff
Merged Antoine Regimbeau requested to merge app_register_pipeline into develop Feb 26, 2018
  • Overview 26
  • Commits 44
  • Pipelines 0
  • Changes 17

Summary

Creation of new services in the Application class. Pipeline can now be registered at the end of the DoExecute() with the method RegisterPipeline(). A new method FreeRessources can called on class Application, and a private virtual method DoFreeRessources can be overridden in class MyApp : public Application.

Rationale

It allows filters of application to survive the end of the DoExecute scope if they are not members. Plus it allows a better control over memory. FreeRessources is called at the end of Application::ExecuteAndWriteOutput but can be called on Application whenever the developer wants to. See issue #1514.

Implementation Details

In both functions a deep first search algorithm has been implemented.

Classes and files

Both methods are in the Application class and only FreeRessources method is in the SWIG file:

M       Modules/Wrappers/ApplicationEngine/include/otbWrapperApplication.h
M       Modules/Wrappers/ApplicationEngine/src/otbWrapperApplication.cxx
M       Modules/Wrappers/SWIG/src/otbApplication.i

In order to provide a method to get object of an ObjectList as a DataObject an ObjectListInterface class has been created and take care of the problem :

M       Modules/Core/ObjectList/include/otbObjectList.h
M       Modules/Core/ObjectList/include/otbObjectList.txx
A       Modules/Core/ObjectList/include/otbObjectListInterface.h

A new method has been created in InputImageParameter to get the pointer toward the image it is holding :

M       Modules/Wrappers/ApplicationEngine/include/otbWrapperInputImageParameter.h

Applications

RegisterPipeline has been used in some applications of ImageUtils Module with few modification of the application, and also on the LargeScaleMeanShift app in order to prove the concept on composite application.

M       Modules/Applications/AppImageUtils/app/otbCompareImages.cxx
M       Modules/Applications/AppImageUtils/app/otbConcatenateImages.cxx
M       Modules/Applications/AppImageUtils/app/otbExtractROI.cxx
M       Modules/Applications/AppImageUtils/app/otbQuicklook.cxx
M       Modules/Applications/AppImageUtils/app/otbRescale.cxx
M       Modules/Applications/AppImageUtils/app/otbSplitImage.cxx
M       Modules/Applications/AppImageUtils/app/otbTileFusion.cxx
M       Modules/Applications/AppSegmentation/app/otbLSMSSegmentation.cxx
M       Modules/Applications/AppSegmentation/app/otbMeanShiftSmoothing.cxx

Tests

No test for those features.

Documentation

Code documentation

Edited Apr 03, 2018 by Guillaume Pasero
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: app_register_pipeline