ICell.hpp
1 #ifndef OPALS_ICELL_HPP_INCLUDED
2 #define OPALS_ICELL_HPP_INCLUDED
3 
4 #include <opals/IModuleBase.hpp>
5 #include <opals/StatFeature.hpp>
6 #include <opals/GridLimit.hpp>
7 #include <opals/String.hpp>
8 #include <opals/Path.hpp>
9 #include <opals/Vector.hpp>
10 
11 #if !defined(OPALS_EXPORTS) && !defined(OPALS_MODULE_EXPORTS)
12  #if defined _DEBUG && !defined OPALS_NO_DEBUG
13  #pragma comment(lib, "opalsCell_d.lib")
14  #else
15  #pragma comment(lib, "opalsCell.lib")
16  #endif
17 #endif
18 
19 namespace opals {
20 
21  namespace opts
22  {
23  namespace Cell
24  {
25  /// Options of \ref ModuleCell
26  typedef IGroup< Names::_, false, Cons<
27  ILeaf< Names::inFile, false, opals::Vector<opals::Path> >, Cons<
28  ILeaf< Names::outFile, false, opals::Vector< opals::Path > >, Cons<
29  ILeaf< Names::oFormat, false, opals::String >, Cons<
30  ILeaf< Names::cellSize, false, opals::Vector< float > >, Cons<
31  ILeaf< Names::attribute, false, opals::String >, Cons<
32  ILeaf< Names::feature, false, opals::Vector< opals::StatFeature > >, Cons<
33  ILeaf< Names::limit, false, opals::GridLimit >, Cons<
34  ILeaf< Names::filter, false, opals::String >, Cons<
35  ILeaf< Names::noData, false, float >, Cons<
36  ILeaf< Names::multiBand, false, bool >
37  > > > > > > > > > > > Options;
38  }
39  }
40 
41  /// Calculates statistical features of user defined attributes and stores them as raster models or rasterized point clouds.
42  /** Module cell accumulates a certain data attribute within a raster cell derives statistical
43  features like min, mean, median, max, variance, quantiles, etc. The accumulated features are
44  either stored as raster models or as rasterized point clouds. For selective features, referring to
45  a single point within a raster cell (e.g. minimum height), the respective point including all point
46  available point attributes are stored rather then the center point of the cell. In all other cases
47  the cell center serves as representative point of a raster cell. */
48  /// \see \ref ModuleCell
49  class OPALS_API ICell : virtual public IModuleBase
50  {
51 
52  public:
53  static ICell* New();
54  static ICell* New( IControlObject &controlObject );
55  static ICell* New( const IModuleBase &parent );
56  static ICell* New( const IModuleBase &parent, IControlObject &controlObject );
57 
58  virtual ~ICell() {}
59 
60  /// \name Access to module-specific options.
61  ///@{
63  virtual Options& opts() = 0;
64  virtual const Options& opts() const = 0;
65  ///}@
66 
67  };
68 
69 };
70 
71 #endif