OpendTect  6.6
array2dinterpolimpl.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: Feb 2009
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "algomod.h"
16 #include "array2dinterpol.h"
17 #include "rowcol.h"
18 #include "threadlock.h"
19 
20 class RowCol;
21 class DAGTriangleTree;
23 class Extension2DInterpolExecutor;
24 
25 
52 public:
55  "InverseDistance", tr("Inverse distance") )
56 
59 
60  bool setArray(Array2D<float>&,TaskRunner*);
61  bool canUseArrayAccess() const { return true; }
63 
64  float getSearchRadius() const { return searchradius_; }
65  void setSearchRadius(float r) { searchradius_ = r; }
66 
67  void setStepSize(int n) { stepsize_ = n; }
68  int getStepSize() const { return stepsize_; }
69 
70  void setNrSteps(int n) { nrsteps_ = n; }
71  int getNrSteps() const { return nrsteps_; }
72 
73  void setCornersFirst(bool n) { cornersfirst_ = n; }
74  bool getCornersFirst() const { return cornersfirst_; }
75  bool nothingToFill() const { return nrIterations()<1; }
76 
77  virtual bool fillPar(IOPar&) const;
78  virtual bool usePar(const IOPar&);
79 
80  static const char* sKeySearchRadius();
81  static const char* sKeyCornersFirst();
82  static const char* sKeyStepSize();
83  static const char* sKeyNrSteps();
84 
85 protected:
86  virtual bool doWork(od_int64,od_int64,int);
87  od_int64 nrIterations() const { return totalnr_; }
88  uiString uiNrDoneText() const { return tr("Nodes gridded"); }
89 
90  bool doPrepare(int);
91  virtual bool initFromArray(TaskRunner*);
94 
95  //settings
96  int nrsteps_;
97  int stepsize_;
100 
101  //workflow control stuff
107  int stepidx_;
108 
110  int totalnr_;
111 
112  //Working arrays
113  bool* curdefined_;
115  TypeSet<od_int64> definedidxs_; //Only when no radius
116  TypeSet<RowCol> neighbors_; //Only when radius
117  TypeSet<float> neighborweights_; //Only when radius
118 
119 
120  //Per support size
124 
125  //perstep
127  TypeSet<od_int64> nrsources_; //linked to todothisstep or zero
128 };
129 
130 
137 public:
140  "Triangulation", ::toUiString(sFactoryKeyword()))
141 
144 
145  bool setArray(Array2D<float>&,TaskRunner*);
146  bool canUseArrayAccess() const { return true; }
148  bool nothingToFill() const { return nrIterations()<1; }
149 
150  bool doInterpolation() const { return dointerpolation_; }
151  void doInterpolation(bool yn) { dointerpolation_ = yn; }
152  float getMaxDistance() const { return maxdistance_; }
153  void setMaxDistance(float r) { maxdistance_ = r; }
154  bool isMaxInterPolChecked() const
155  { return ismaxdistfldchecked_; }
157  { ismaxdistfldchecked_ = yn; }
158 
159  virtual bool fillPar(IOPar&) const;
160  virtual bool usePar(const IOPar&);
161 
162  static const char* sKeyDoInterpol();
163  static const char* sKeyMaxDistance();
164 
165 protected:
166  int minThreadSize() const { return 10000; }
168  od_int64 nrIterations() const { return totalnr_; }
169  uiString uiNrDoneText() const { return tr("Nodes gridded"); }
170 
171  bool doPrepare(int);
172  virtual bool initFromArray(TaskRunner*);
174 
175  //triangulation stuff
182 
183  //Working arrays
184  bool* curdefined_;
188 
189  //Work control
191 
195 };
196 
197 
204 public:
206  ExtensionArray2DInterpol, "Extension",
207  ::toUiString(sFactoryKeyword()))
208 
211 
212  bool canUseArrayAccess() const { return true; }
213 
214  void setNrSteps(int n) { nrsteps_ = n; }
215  od_int64 getNrSteps() const { return nrsteps_; }
216 
217  bool fillPar(IOPar&) const;
218  bool usePar(const IOPar&);
219 
220  static const char* sKeyNrSteps();
221 
222 protected:
223 
225  od_int64 nrIterations() const { return 1; }
226 
228 
229  Extension2DInterpolExecutor* executor_;
230  friend class Extension2DInterpolExecutor;
231 };
232 
InverseDistanceArray2DInterpol::reportDone
void reportDone(od_int64)
InverseDistanceArray2DInterpol::nrthreadswaiting_
int nrthreadswaiting_
Definition: array2dinterpolimpl.h:103
InverseDistanceArray2DInterpol::getSearchRadius
float getSearchRadius() const
Definition: array2dinterpolimpl.h:64
TriangulationArray2DInterpol::curnodelock_
Threads::Lock curnodelock_
Definition: array2dinterpolimpl.h:187
InverseDistanceArray2DInterpol::setStepSize
void setStepSize(int n)
Definition: array2dinterpolimpl.h:67
TriangulationArray2DInterpol
Uses triangulation method to interpolate two dimensional arrays.
Definition: array2dinterpolimpl.h:136
TriangulationArray2DInterpol::setArray
bool setArray(ArrayAccess &, TaskRunner *)
Set AFTER all settings.
InverseDistanceArray2DInterpol::sKeySearchRadius
static const char * sKeySearchRadius()
TriangulationArray2DInterpol::maxdistance_
float maxdistance_
Definition: array2dinterpolimpl.h:178
InverseDistanceArray2DInterpol::setSearchRadius
void setSearchRadius(float r)
Definition: array2dinterpolimpl.h:65
Array2DInterpol
Base class for two dimensional array interpolators.
Definition: array2dinterpol.h:34
InverseDistanceArray2DInterpol::usePar
virtual bool usePar(const IOPar &)
ExtensionArray2DInterpol::usePar
bool usePar(const IOPar &)
InverseDistanceArray2DInterpol::addedwithcursuport_
TypeSet< od_int64 > addedwithcursuport_
Definition: array2dinterpolimpl.h:121
InverseDistanceArray2DInterpol::curdefined_
bool * curdefined_
Definition: array2dinterpolimpl.h:113
TriangulationArray2DInterpol::uiNrDoneText
uiString uiNrDoneText() const
will be nrDoneText() in 7.x
Definition: array2dinterpolimpl.h:169
Triangle2DInterpolator
For a given triangulated geometry(set of points), interpolating any point located in or nearby the go...
Definition: delaunay.h:187
TriangulationArray2DInterpol::doPrepare
bool doPrepare(int)
File::toUiString
Export_Basic uiString toUiString(ViewStyle)
ExtensionArray2DInterpol
Array 2D interpolator that works by extending the data into udf areas.
Definition: array2dinterpolimpl.h:203
InverseDistanceArray2DInterpol::doWork
virtual bool doWork(od_int64, od_int64, int)
od_int64
#define od_int64
Definition: plftypes.h:35
InverseDistanceArray2DInterpol::doPrepare
bool doPrepare(int)
InverseDistanceArray2DInterpol::nrthreads_
int nrthreads_
Definition: array2dinterpolimpl.h:102
InverseDistanceArray2DInterpol::nrIterations
od_int64 nrIterations() const
Definition: array2dinterpolimpl.h:87
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
InverseDistanceArray2DInterpol::waitforall_
bool waitforall_
Definition: array2dinterpolimpl.h:104
ExtensionArray2DInterpol::mODTextTranslationClass
mODTextTranslationClass(ExtensionArray2DInterpol)
DAGTriangleTree
Reference: "Parallel Incremental Delaunay Triangulation", by Kohout J.2005.
Definition: delaunay.h:36
TriangulationArray2DInterpol::getNextNodes
void getNextNodes(TypeSet< od_int64 > &)
InverseDistanceArray2DInterpol::setNrSteps
void setNrSteps(int n)
Definition: array2dinterpolimpl.h:70
TriangulationArray2DInterpol::nrIterations
od_int64 nrIterations() const
Definition: array2dinterpolimpl.h:168
InverseDistanceArray2DInterpol::stepidx_
int stepidx_
Definition: array2dinterpolimpl.h:107
InverseDistanceArray2DInterpol::initFromArray
virtual bool initFromArray(TaskRunner *)
InverseDistanceArray2DInterpol::mODTextTranslationClass
mODTextTranslationClass(InverseDistanceArray2DInterpol)
InverseDistanceArray2DInterpol::nrsteps_
int nrsteps_
Definition: array2dinterpolimpl.h:96
TriangulationArray2DInterpol::mDefaultFactoryInstantiation
mDefaultFactoryInstantiation(Array2DInterpol, TriangulationArray2DInterpol, "Triangulation", ::toUiString(sFactoryKeyword())) TriangulationArray2DInterpol()
TriangulationArray2DInterpol::totalnr_
od_int64 totalnr_
Definition: array2dinterpolimpl.h:190
InverseDistanceArray2DInterpol::sKeyCornersFirst
static const char * sKeyCornersFirst()
ExtensionArray2DInterpol::setNrSteps
void setNrSteps(int n)
Definition: array2dinterpolimpl.h:214
InverseDistanceArray2DInterpol::nodestofill_
bool * nodestofill_
Definition: array2dinterpolimpl.h:114
ExtensionArray2DInterpol::getNrSteps
od_int64 getNrSteps() const
Definition: array2dinterpolimpl.h:215
InverseDistanceArray2DInterpol::sKeyNrSteps
static const char * sKeyNrSteps()
InverseDistanceArray2DInterpol::getCornersFirst
bool getCornersFirst() const
Definition: array2dinterpolimpl.h:74
InverseDistanceArray2DInterpol::condvar_
Threads::ConditionVar & condvar_
Definition: array2dinterpolimpl.h:105
InverseDistanceArray2DInterpol::searchradius_
float searchradius_
Definition: array2dinterpolimpl.h:99
TriangulationArray2DInterpol::triangleinterpolator_
Triangle2DInterpolator * triangleinterpolator_
Definition: array2dinterpolimpl.h:180
InverseDistanceArray2DInterpol::shouldend_
bool shouldend_
Definition: array2dinterpolimpl.h:106
Threads::ConditionVar
Is an object that faciliates many threads to wait for something to happen.
Definition: thread.h:110
TriangulationArray2DInterpol::initFromArray
virtual bool initFromArray(TaskRunner *)
InverseDistanceArray2DInterpol::uiNrDoneText
uiString uiNrDoneText() const
will be nrDoneText() in 7.x
Definition: array2dinterpolimpl.h:88
TaskRunner
Class that can execute a task.
Definition: task.h:170
InverseDistanceArray2DInterpol::neighbors_
TypeSet< RowCol > neighbors_
Definition: array2dinterpolimpl.h:116
TriangulationArray2DInterpol::cornerbid_
TypeSet< BinID > cornerbid_
Definition: array2dinterpolimpl.h:194
ExtensionArray2DInterpol::fillPar
bool fillPar(IOPar &) const
TriangulationArray2DInterpol::nothingToFill
bool nothingToFill() const
Definition: array2dinterpolimpl.h:148
TriangulationArray2DInterpol::mODTextTranslationClass
mODTextTranslationClass(TriangulationArray2DInterpol)
TriangulationArray2DInterpol::dointerpolation_
bool dointerpolation_
Definition: array2dinterpolimpl.h:176
InverseDistanceArray2DInterpol::totalnr_
int totalnr_
Definition: array2dinterpolimpl.h:110
InverseDistanceArray2DInterpol::prevsupportsize_
od_int64 prevsupportsize_
Definition: array2dinterpolimpl.h:123
TriangulationArray2DInterpol::doInterpolation
bool doInterpolation() const
Definition: array2dinterpolimpl.h:150
TriangulationArray2DInterpol::coordlistindices_
TypeSet< int > coordlistindices_
Definition: array2dinterpolimpl.h:181
TriangulationArray2DInterpol::fillPar
virtual bool fillPar(IOPar &) const
TriangulationArray2DInterpol::minThreadSize
int minThreadSize() const
Definition: array2dinterpolimpl.h:166
InverseDistanceArray2DInterpol::sKeyStepSize
static const char * sKeyStepSize()
InverseDistanceArray2DInterpol::setCornersFirst
void setCornersFirst(bool n)
Definition: array2dinterpolimpl.h:73
InverseDistanceArray2DInterpol::getNextIdx
od_int64 getNextIdx()
TriangulationArray2DInterpol::nodestofill_
bool * nodestofill_
Definition: array2dinterpolimpl.h:185
TriangulationArray2DInterpol::sKeyDoInterpol
static const char * sKeyDoInterpol()
InverseDistanceArray2DInterpol::nraddedthisstep_
int nraddedthisstep_
Definition: array2dinterpolimpl.h:122
TriangulationArray2DInterpol::cornerval_
TypeSet< float > cornerval_
Definition: array2dinterpolimpl.h:193
ExtensionArray2DInterpol::executor_
Extension2DInterpolExecutor * executor_
Definition: array2dinterpolimpl.h:229
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
InverseDistanceArray2DInterpol::definedidxs_
TypeSet< od_int64 > definedidxs_
Definition: array2dinterpolimpl.h:115
InverseDistanceArray2DInterpol::mDefaultFactoryInstantiation
mDefaultFactoryInstantiation(Array2DInterpol, InverseDistanceArray2DInterpol, "InverseDistance", tr("Inverse distance")) InverseDistanceArray2DInterpol()
TriangulationArray2DInterpol::doInterpolation
void doInterpolation(bool yn)
Definition: array2dinterpolimpl.h:151
InverseDistanceArray2DInterpol::setArray
bool setArray(ArrayAccess &, TaskRunner *)
Set AFTER all settings.
InverseDistanceArray2DInterpol::stepsize_
int stepsize_
Definition: array2dinterpolimpl.h:97
TriangulationArray2DInterpol::curnode_
od_int64 curnode_
Definition: array2dinterpolimpl.h:186
TriangulationArray2DInterpol::curdefined_
bool * curdefined_
Definition: array2dinterpolimpl.h:184
threadlock.h
TriangulationArray2DInterpol::doWork
bool doWork(od_int64, od_int64, int)
TriangulationArray2DInterpol::setMaxDistance
void setMaxDistance(float r)
Definition: array2dinterpolimpl.h:153
ExtensionArray2DInterpol::nrIterations
od_int64 nrIterations() const
Definition: array2dinterpolimpl.h:225
RowCol
IdxPair used for its row() and col().
Definition: rowcol.h:25
TriangulationArray2DInterpol::isMaxInterPolChecked
bool isMaxInterPolChecked() const
Definition: array2dinterpolimpl.h:154
TriangulationArray2DInterpol::usePar
virtual bool usePar(const IOPar &)
Array2DInterpol::ArrayAccess
Definition: array2dinterpol.h:72
InverseDistanceArray2DInterpol::getStepSize
int getStepSize() const
Definition: array2dinterpolimpl.h:68
InverseDistanceArray2DInterpol
Interpolates 2D arrays using inverse distance method.
Definition: array2dinterpolimpl.h:51
InverseDistanceArray2DInterpol::neighborweights_
TypeSet< float > neighborweights_
Definition: array2dinterpolimpl.h:117
InverseDistanceArray2DInterpol::todothisstep_
TypeSet< od_int64 > todothisstep_
Definition: array2dinterpolimpl.h:126
InverseDistanceArray2DInterpol::cornersfirst_
bool cornersfirst_
Definition: array2dinterpolimpl.h:98
TriangulationArray2DInterpol::setMaxDistInterPolChecekd
void setMaxDistInterPolChecekd(bool yn)
Definition: array2dinterpolimpl.h:156
TriangulationArray2DInterpol::triangulation_
DAGTriangleTree * triangulation_
Definition: array2dinterpolimpl.h:179
TriangulationArray2DInterpol::getMaxDistance
float getMaxDistance() const
Definition: array2dinterpolimpl.h:152
array2dinterpol.h
InverseDistanceArray2DInterpol::nrinitialdefined_
int nrinitialdefined_
Definition: array2dinterpolimpl.h:109
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
TriangulationArray2DInterpol::sKeyMaxDistance
static const char * sKeyMaxDistance()
ExtensionArray2DInterpol::mDefaultFactoryInstantiation
mDefaultFactoryInstantiation(Array2DInterpol, ExtensionArray2DInterpol, "Extension", ::toUiString(sFactoryKeyword())) ExtensionArray2DInterpol()
InverseDistanceArray2DInterpol::nothingToFill
bool nothingToFill() const
Definition: array2dinterpolimpl.h:75
ExtensionArray2DInterpol::doWork
bool doWork(od_int64, od_int64, int)
rowcol.h
InverseDistanceArray2DInterpol::getNrSteps
int getNrSteps() const
Definition: array2dinterpolimpl.h:71
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
InverseDistanceArray2DInterpol::nrsources_
TypeSet< od_int64 > nrsources_
Definition: array2dinterpolimpl.h:127
ExtensionArray2DInterpol::nrsteps_
od_int64 nrsteps_
Definition: array2dinterpolimpl.h:227
TriangulationArray2DInterpol::corneridx_
TypeSet< int > corneridx_
Definition: array2dinterpolimpl.h:192
ExtensionArray2DInterpol::sKeyNrSteps
static const char * sKeyNrSteps()
TypeSet< od_int64 >
InverseDistanceArray2DInterpol::fillPar
virtual bool fillPar(IOPar &) const
TriangulationArray2DInterpol::ismaxdistfldchecked_
bool ismaxdistfldchecked_
Definition: array2dinterpolimpl.h:177

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