OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "algomod.h"
16 #include "paralleltask.h"
17 
18 #include "arrayndalgo.h"
19 #include "enums.h"
20 #include "factory.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 
44  void setRowStep(float r);
45  void setColStep(float r);
46  void setOrigin(const RowCol&);
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 
92  bool trimArray(int step,Array2D<char>& edgesmask);
93 
94  void doPolygonCrop();
95 
96  virtual bool fillPar(IOPar&) const;
97  virtual bool usePar(const IOPar&);
98 
100  { return uiStrings::sGridding(); }
101 
102  static const char* sKeyFillType();
103  static const char* sKeyRowStep();
104  static const char* sKeyColStep();
105  static const char* sKeyOrigin();
106  static const char* sKeyNrRows();
107  static const char* sKeyNrCols();
108  static const char* sKeyNrCells();
109  static const char* sKeyMaxHoleSz();
110  static const char* sKeyPolyNrofNodes();
111  static const char* sKeyPolyNode();
112  static const char* sKeyCropPolygon();
113 
114 protected:
116 
117  bool doPrepare(int);
118  void getNodesToFill(const bool* isdef, bool* shouldinterpol,
119  TaskRunner*) const;
126  bool isDefined(int idx) const;
129  virtual void setFrom(od_int64 target, const od_int64* sources,
130  const float* weights, int nrsrc);
132  void floodFillArrFrom(int seed, const bool* isdef,
133  bool* shouldinterpol) const;
137  void excludeBigHoles( const bool* isdef, bool* shouldinterpol )const;
144  float rowstep_;
145  float colstep_;
146  int nrrows_;
147  int nrcols_;
148  int nrcells_;
150 
153 
158 
161  bool croppoly_;
162 };
163 
arrayndalgo.h
Array2DInterpol::rowstep_
float rowstep_
Definition: array2dinterpol.h:144
Array2DInterpol::poly_
ODPolygon< double > * poly_
Definition: array2dinterpol.h:160
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
Array2DInterpol::croppoly_
bool croppoly_
Definition: array2dinterpol.h:161
Array2DInterpol::trimArray
bool trimArray(int step, Array2D< char > &edgesmask)
Array2DInterpol::getNodesToFill
void getNodesToFill(const bool *isdef, bool *shouldinterpol, TaskRunner *) const
ODPolygon< double >
Array2DInterpol::setRowStep
void setRowStep(float r)
Array2DInterpol::colstep_
float colstep_
Definition: array2dinterpol.h:145
factory.h
Array2DInterpol
Base class for two dimensional array interpolators.
Definition: array2dinterpol.h:34
odmemory.h
Array2DInterpol::floodFillArrFrom
void floodFillArrFrom(int seed, const bool *isdef, bool *shouldinterpol) const
Array2DInterpol::~Array2DInterpol
virtual ~Array2DInterpol()
Array2DInterpol::sKeyMaxHoleSz
static const char * sKeyMaxHoleSz()
Array2DInterpol::ArrayAccess::isDefined
virtual bool isDefined(od_int64) const =0
od_int64
#define od_int64
Definition: plftypes.h:35
Array2DInterpol::usePar
virtual bool usePar(const IOPar &)
Array2DInterpol::infoMsg
virtual uiString infoMsg() const
Definition: array2dinterpol.h:68
Array2DInterpol::maxholesize_
float maxholesize_
Definition: array2dinterpol.h:152
Array2DInterpol::arr_
Array2D< float > * arr_
Definition: array2dinterpol.h:142
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Array2DInterpol::isClassification
bool isClassification() const
Array2DInterpol::nrrows_
int nrrows_
Definition: array2dinterpol.h:146
Array2DInterpol::arrsetter_
ArrayAccess * arrsetter_
Definition: array2dinterpol.h:143
Array2DInterpol::nrcols_
int nrcols_
Definition: array2dinterpol.h:147
polygon.h
OD::UsePtr
@ UsePtr
Definition: odmemory.h:21
Array2DInterpol::getFillType
FillType getFillType() const
Array2DInterpol::trend_
PolyTrend * trend_
Definition: array2dinterpol.h:159
Array2DInterpol::maskismine_
bool maskismine_
Definition: array2dinterpol.h:155
Array2DInterpol::setClassification
void setClassification(bool)
Array2DInterpol::ArrayAccess::~ArrayAccess
virtual ~ArrayAccess()
Definition: array2dinterpol.h:74
Array2DInterpol::sKeyFillType
static const char * sKeyFillType()
Array2DInterpol::doPolygonCrop
void doPolygonCrop()
Array2DInterpol::filltype_
FillType filltype_
Definition: array2dinterpol.h:151
Array2DInterpol::setArray
virtual bool setArray(ArrayAccess &, TaskRunner *=0)
Set AFTER all settings.
Array2DInterpol::FillType
FillType
Definition: array2dinterpol.h:39
Array2DInterpol::getMaxHoleSize
float getMaxHoleSize() const
Array2DInterpol::mODTextTranslationClass
mODTextTranslationClass(Array2DInterpol)
Array2DInterpol::setFrom
virtual void setFrom(od_int64 target, const od_int64 *sources, const float *weights, int nrsrc)
Array2DInterpol::sKeyNrCells
static const char * sKeyNrCells()
Array2DInterpol::statsetup_
Stats::CalcSetup * statsetup_
Definition: array2dinterpol.h:157
Array2DInterpol::mask_
const Array2D< bool > * mask_
Definition: array2dinterpol.h:154
Array2DInterpol::sKeyPolyNrofNodes
static const char * sKeyPolyNrofNodes()
Array2DInterpol::setTrendOrder
void setTrendOrder(PolyTrend::Order ord)
Array2DInterpol::sKeyNrCols
static const char * sKeyNrCols()
Seis::Polygon
@ Polygon
Definition: seistype.h:25
Array2DInterpol::ArrayAccess::getSize
virtual int getSize(char dim) const =0
TaskRunner
Class that can execute a task.
Definition: task.h:170
Array2DInterpol::mDeclareEnumUtils
mDeclareEnumUtils(FillType)
Array2DInterpol::sKeyCropPolygon
static const char * sKeyCropPolygon()
Array2DInterpol::sKeyNrRows
static const char * sKeyNrRows()
Array2DInterpol::setColStep
void setColStep(float r)
Array2DInterpol::doPrepare
bool doPrepare(int)
Array2DInterpol::nrcells_
int nrcells_
Definition: array2dinterpol.h:148
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
Array2DInterpol::nothingToFill
virtual bool nothingToFill() const
Definition: array2dinterpol.h:82
Array2DInterpol::sKeyOrigin
static const char * sKeyOrigin()
Array2DInterpol::canUseArrayAccess
virtual bool canUseArrayAccess() const
Definition: array2dinterpol.h:85
Array2DInterpol::isDefined
bool isDefined(int idx) const
Array2DInterpol::sKeyRowStep
static const char * sKeyRowStep()
Array2DInterpol::origin_
RowCol origin_
Definition: array2dinterpol.h:149
Array2DInterpol::Array2DInterpol
Array2DInterpol()
Array2DInterpol::ArrayAccess::set
virtual void set(od_int64 target, const od_int64 *sources, const float *weights, int nrsrc, bool isclassification)=0
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiString::emptyString
static const uiString & emptyString()
Definition: uistring.h:300
enums.h
PolyTrend::Order
Order
Definition: arrayndalgo.h:1100
Stats::CalcSetup
Setup for the Stats::RunCalc and Stats::ParallelCalc objects.
Definition: statruncalc.h:38
Array2DInterpol::setOrigin
void setOrigin(const RowCol &)
uiStrings::sGridding
static uiString sGridding()
Definition: uistrings.h:391
Array2DInterpol::setSampling
void setSampling(const TrcKeySampling &)
Set both steps and the origin.
OD::PtrPolicy
PtrPolicy
Definition: odmemory.h:21
RowCol
IdxPair used for its row() and col().
Definition: rowcol.h:25
Stats
Statistics.
Definition: array2dinterpol.h:27
Array2DInterpol::uiMessage
uiString uiMessage() const
will be message() again in 7.x
Definition: array2dinterpol.h:99
Array2DInterpol::ArrayAccess
Definition: array2dinterpol.h:72
Array2DInterpol::fillPar
virtual bool fillPar(IOPar &) const
Array2DInterpol::setFillType
void setFillType(FillType)
Array2DInterpol::excludeBigHoles
void excludeBigHoles(const bool *isdef, bool *shouldinterpol) const
Array2DInterpol::setMaxHoleSize
void setMaxHoleSize(float)
Array2DInterpol::mDefineFactoryInClass
mDefineFactoryInClass(Array2DInterpol, factory)
Array2DInterpol::setArray
virtual bool setArray(Array2D< float > &, TaskRunner *=0)
Set AFTER all settings.
paralleltask.h
Array2DInterpol::setMask
void setMask(const Array2D< bool > *, OD::PtrPolicy=OD::UsePtr)
rowcol.h
Array2DInterpol::isclassification_
bool isclassification_
Definition: array2dinterpol.h:156
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
Array2D
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
Array2DInterpol::sKeyColStep
static const char * sKeyColStep()
PolyTrend
Polynomial trend with order 0 (mean), 1 (linear) or 2 (parabolic) The trend is derived from a set of ...
Definition: arrayndalgo.h:1094
Array2DInterpol::sKeyPolyNode
static const char * sKeyPolyNode()

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