OpendTect  6.3
array2dinterpol.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Kristofer Tingdahl
8  Date: April 2009
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "algomod.h"
15 #include "paralleltask.h"
16 
17 #include "arrayndalgo.h"
18 #include "enums.h"
19 #include "factory.h"
20 #include "dbkey.h"
21 #include "odmemory.h"
22 #include "polygon.h"
23 #include "rowcol.h"
24 
25 class TrcKeySampling;
26 template <class T> class Array2D;
27 namespace Stats { class CalcSetup; }
28 
35 public:
36  virtual ~Array2DInterpol();
38 
39  enum FillType { HolesOnly, ConvexHull, Full, Polygon };
41 
42  void setFillType(FillType);
43  FillType getFillType() const;
44  void setRowStep(float r);
45  void setColStep(float r);
46  void setOrigin(const RowCol&);
47  void setSampling(const TrcKeySampling&);
49 
50  void setMaxHoleSize(float);
51  float getMaxHoleSize() const;
52 
53  void setClassification(bool);
54  bool isClassification() const;
55 
56  void setMask(const Array2D<bool>*,
68  virtual uiString infoMsg() const
69  { return uiString::emptyString(); }
70 
72  {
73  public:
74  virtual ~ArrayAccess() {}
75  virtual void set(od_int64 target, const od_int64* sources,
76  const float* weights, int nrsrc,
77  bool isclassification) = 0;
78  virtual bool isDefined(od_int64) const = 0;
79  virtual int getSize(char dim) const = 0;
80  };
81 
82  virtual bool nothingToFill() const { return false; }
83  virtual bool setArray(Array2D<float>&,TaskRunner* =0);
85  virtual bool canUseArrayAccess() const { return false; }
86  virtual bool setArray(ArrayAccess&,TaskRunner* =0);
88 
91  void setTrendOrder(PolyTrend::Order ord);
92  bool trimArray(int step,Array2D<char>& edgesmask);
93 
94  virtual bool fillPar(IOPar&) const;
95  virtual bool usePar(const IOPar&);
96 
97  uiString message() const { return tr("Gridding"); }
98 
99  static const char* sKeyFillType();
100  static const char* sKeyRowStep();
101  static const char* sKeyColStep();
102  static const char* sKeyOrigin();
103  static const char* sKeyNrRows();
104  static const char* sKeyNrCols();
105  static const char* sKeyNrCells();
106  static const char* sKeyMaxHoleSz();
107  static const char* sKeyPolyNrofNodes();
108  static const char* sKeyPolyNode();
109  static const char* sKeyCropPolygon();
110 
111 protected:
112  Array2DInterpol();
113 
114  bool doPrepare(int);
115  bool doFinish(bool success);
116  void getNodesToFill(const bool* isdef, bool* shouldinterpol,
117  TaskRunner*) const;
124  bool isDefined(int idx) const;
127  virtual void setFrom(od_int64 target, const od_int64* sources,
128  const float* weights, int nrsrc);
130  void floodFillArrFrom(int seed, const bool* isdef,
131  bool* shouldinterpol) const;
135  void excludeBigHoles( const bool* isdef, bool* shouldinterpol )const;
142  float rowstep_;
143  float colstep_;
144  int nrrows_;
145  int nrcols_;
146  int nrcells_;
148 
151 
153  bool croppoly_;
154 
159 
161 };
#define mExpClass(module)
Definition: commondefs.h:157
const Array2D< bool > * mask_
Definition: array2dinterpol.h:155
Base class for two dimensional array interpolators.
Definition: array2dinterpol.h:33
Setup for the Stats::RunCalc and Stats::ParallelCalc objects.
Definition: statruncalc.h:35
int nrcols_
Definition: array2dinterpol.h:145
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
int nrcells_
Definition: array2dinterpol.h:146
PolyTrend * trend_
Definition: array2dinterpol.h:160
ArrayAccess * arrsetter_
Definition: array2dinterpol.h:141
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
static const uiString & emptyString()
Definition: uistring.h:107
Definition: uistring.h:88
Definition: array2dinterpol.h:71
#define mDeclareEnumUtils(enm)
Some utilities surrounding the often needed enum <-> string table.
Definition: enums.h:188
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:64
uiString message() const
Definition: array2dinterpol.h:97
float colstep_
Definition: array2dinterpol.h:143
RowCol origin_
Definition: array2dinterpol.h:147
virtual bool canUseArrayAccess() const
Definition: array2dinterpol.h:85
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
bool isclassification_
Definition: array2dinterpol.h:157
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:127
Class that can execute a task.
Definition: task.h:193
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
virtual bool nothingToFill() const
Definition: array2dinterpol.h:82
ODPolygon< double > * poly_
Definition: array2dinterpol.h:152
float maxholesize_
Definition: array2dinterpol.h:150
#define mDefineFactoryInClass(T, funcname)
Definition: factory.h:424
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
IdxPair used for its row() and col().
Definition: rowcol.h:23
virtual uiString infoMsg() const
Definition: array2dinterpol.h:68
Array2D< float > * arr_
Definition: array2dinterpol.h:140
int nrrows_
Definition: array2dinterpol.h:144
virtual ~ArrayAccess()
Definition: array2dinterpol.h:74
bool maskismine_
Definition: array2dinterpol.h:156
PtrPolicy
Definition: odmemory.h:20
Statistics.
Definition: array2dinterpol.h:27
Stats::CalcSetup * statsetup_
Definition: array2dinterpol.h:158
FillType filltype_
Definition: array2dinterpol.h:149
FillType
Definition: array2dinterpol.h:39
Definition: seistype.h:25
Order
Definition: arrayndalgo.h:1620
bool croppoly_
Definition: array2dinterpol.h:153
Polynomial trend with order 0 (mean), 1 (linear) or 2 (parabolic) The trend is derived from a set of ...
Definition: arrayndalgo.h:1613
float rowstep_
Definition: array2dinterpol.h:142
Definition: odmemory.h:20

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017