IFillGaps.hpp
1 #ifndef OPALS_IFILLGAPS_HPP_INCLUDED
2 #define OPALS_IFILLGAPS_HPP_INCLUDED
3 
4 #include <opals/IModuleBase.hpp>
5 
6 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
7  #if defined _DEBUG && !defined OPALS_NO_DEBUG
8  #pragma comment(lib, "opalsFillGaps_d.lib")
9  #else
10  #pragma comment(lib, "opalsFillGaps.lib")
11  #endif
12 #endif
13 
14 #include <opals/Path.hpp>
15 #include <opals/Vector.hpp>
16 #include <opals/GridLimit.hpp>
17 #include <opals/FillMethod.hpp>
18 #include <opals/GapInfo.hpp>
19 
20 namespace opals {
21 
22  namespace opts
23  {
24  namespace FillGaps
25  {
26  /// Options of \ref ModuleFillGaps
27  typedef IGroup< Names::_, false, Cons<
28  ILeaf< Names::inFile, false, opals::Path >, Cons<
29  ILeaf< Names::outFile, false, opals::Path >, Cons<
30  ILeaf< Names::oFormat, false, opals::String >, Cons<
31  ILeaf< Names::method, false, opals::FillMethod::Type >, Cons<
32  IGroup< Names::adaptive, false, Cons<
33  ILeaf< Names::weightFunc, false, opals::String >, Cons<
34  ILeaf< Names::maxPixelRigorous, false, double >, Cons<
35  ILeaf< Names::gridSize, false, unsigned >
36  > > > >, Cons<
37  ILeaf< Names::boundaryRatio, false, float >, Cons<
38  ILeaf< Names::fillMask, false, opals::Path >, Cons<
39  ILeaf< Names::maxArea, false, double >, Cons<
40  ILeaf< Names::gapInfo, false, opals::Vector<opals::GapInfo::Type> >
41  > > > > > > > > > > Options;
42  }
43  }
44 
45  /// Detects gaps (i.e. void pixels) in raster models and provides several interpolation methods to close them.
46  /** The generation of Digital Terrain Models (DTM) usually leads to void pixels where buildings and vegetation were removed. Module FillGaps aims to close these gaps with qualified approximation of void pixel using the neighbouring pixel of a gap. */
47  /// \see \ref ModuleFillGaps
48  class OPALS_API IFillGaps : virtual public IModuleBase
49  {
50 
51  public:
52  static IFillGaps* New();
53  static IFillGaps* New( IControlObject &controlObject );
54  static IFillGaps* New( const IModuleBase &parent );
55  static IFillGaps* New( const IModuleBase &parent, IControlObject &controlObject );
56 
57  virtual ~IFillGaps() {}
58 
59  /// \name Access to module-specific options.
60  ///@{
62  virtual Options& opts() = 0;
63  virtual const Options& opts() const = 0;
64  ///}@
65 
66  };
67 
68 };
69 
70 #endif