OpendTect  6.3
emsurfaceposprov.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: Bert
8  Date: Feb 2008
9 ________________________________________________________________________
10 
11 
12 -*/
13 
14 #include "earthmodelmod.h"
15 #include "posprovider.h"
16 
17 #include "emposid.h"
18 #include "trckeysampling.h"
19 #include "dbkey.h"
20 #include "embody.h"
21 #include "keystrs.h"
22 
23 class DataPointSet;
24 
25 namespace EM { class RowColIterator; class Region3D; class Surface; }
26 
27 namespace Pos
28 {
29 
37 mExpClass(EarthModel) EMSurfaceProvider : public virtual Filter
39 public:
42  const char* type() const;
43 
44  virtual bool initialize(TaskRunner* tskr=0);
45  virtual void reset();
46 
47  virtual bool toNextPos();
48  virtual bool toNextZ();
49 
50  virtual float curZ() const;
51  virtual bool hasZAdjustment() const;
52  virtual float adjustedZ(const Coord&,float) const;
53 
54  virtual void usePar(const IOPar&);
55  virtual void fillPar(IOPar&) const;
56  virtual void getSummary(BufferString&) const;
57 
58  virtual void getZRange(Interval<float>&) const;
59  virtual od_int64 estNrPos() const { return estnrpos_; }
60  virtual int estNrZPerPos() const;
61 
62  int nrSurfaces() const;
63  DBKey surfaceID( int idx ) const
64  { return idx ? id2_ : id1_; }
65  EM::Surface* surface( int idx )
66  { return idx ? surf2_ : surf1_; }
67  const EM::Surface* surface( int idx ) const
68  { return idx ? surf2_ : surf1_; }
69  float zStep() const { return zstep_; }
70  void setZStep( float s ) { zstep_ = s; }
71  Interval<float> extraZ() const { return extraz_; }
72  void setExtraZ( Interval<float> i ) { extraz_ = i; }
73 
74  static const char* id1Key();
75  static const char* id2Key();
76  static const char* zstepKey();
77  static const char* extraZKey();
78 
79 protected:
80 
82  void copyFrom(const Pos::EMSurfaceProvider&);
83 
88  float zstep_;
94 
98  float curz_;
99 
100 };
101 
102 
103 #define mEMSurfaceProviderDefFnsBase \
104  virtual bool isProvider() const { return true; } \
105  virtual float estRatio( const Provider& p ) const \
106  { return Provider::estRatio(p); } \
107  virtual bool toNextPos() \
108  { return EMSurfaceProvider::toNextPos(); } \
109  virtual bool toNextZ() \
110  { return EMSurfaceProvider::toNextZ(); } \
111  virtual float curZ() const \
112  { return EMSurfaceProvider::curZ(); } \
113  virtual int estNrZPerPos() const \
114  { return EMSurfaceProvider::estNrZPerPos(); } \
115  virtual od_int64 estNrPos() const { return estnrpos_; } \
116 
117 
122  , public EMSurfaceProvider
124 public:
125 
128  : EMSurfaceProvider() { *this = p; }
129  const char* factoryKeyword() const { return type(); }
130  EMSurfaceProvider3D& operator =( const EMSurfaceProvider3D& p )
131  { copyFrom(p); return *this; }
132  Provider* clone() const
133  { return new EMSurfaceProvider3D(*this); }
134 
135  virtual BinID curBinID() const;
136  virtual bool includes(const BinID&,float) const;
137  virtual bool includes( const Coord& c, float z ) const
138  { return Provider3D::includes(c,z); }
139  virtual void getExtent(BinID&,BinID&) const;
140  virtual Coord curCoord() const { return Provider3D::curCoord(); }
141  virtual void getTrcKeyZSampling( TrcKeyZSampling& cs ) const
142  { return Provider3D::getTrcKeyZSampling(cs); }
143  virtual void getZRange(Interval<float>& rg ) const
144  { return EMSurfaceProvider::getZRange(rg); }
145 
146  static void initClass();
147  static Provider3D* create() { return new EMSurfaceProvider3D; }
148 
150 
151 };
152 
153 
159  , public EMSurfaceProvider
161 public:
162 
165  : EMSurfaceProvider() { *this = p; }
166  EMSurfaceProvider2D& operator =( const EMSurfaceProvider2D& p )
167  { copyFrom(p); return *this; }
168  const char* factoryKeyword() const { return type(); }
169  Provider* clone() const
170  { return new EMSurfaceProvider2D(*this); }
171 
172  virtual const char* curLine() const;
173  virtual int curNr() const;
174  virtual TrcKey curTrcKey() const;
175  virtual Coord curCoord() const;
176  virtual bool includes(const Coord&,float) const;
177  virtual bool includes(int,float,int) const;
178  virtual void getExtent(Interval<int>&,int nr = -1) const;
179  virtual void getZRange(Interval<float>& rg, int lidx ) const
180  { return EMSurfaceProvider::getZRange(rg); }
181  virtual void getZRange(Interval<float>& rg ) const
182  { return EMSurfaceProvider::getZRange(rg); }
183  int nrLines() const { return 1; }
184 
185  static void initClass();
186  static Provider2D* create() { return new EMSurfaceProvider2D; }
187 
189 
190 };
191 
192 
198  , public EMSurfaceProvider
200 public:
203  const EMSurface2DProvider3D&);
205  const char* factoryKeyword() const { return type(); }
206  EMSurface2DProvider3D& operator =( const EMSurface2DProvider3D& p );
207  //{ copyFrom(p); return *this; }
208  virtual bool initialize(TaskRunner* tskr=0);
209  Provider* clone() const
210  { return new EMSurface2DProvider3D(*this); }
211 
212  virtual BinID curBinID() const;
213  virtual bool includes(const BinID&,float) const;
214  virtual bool includes( const Coord& c, float z ) const
215  { return Provider3D::includes(c,z); }
216  virtual void getExtent(BinID&,BinID&) const;
217  virtual void getZRange(Interval<float>& rg ) const
218  { return EMSurfaceProvider::getZRange(rg); }
219  virtual Coord curCoord() const
220  { return Provider3D::curCoord(); }
221 
222  const DataPointSet& dataPointSet( bool nr1 ) const
223  { return nr1 ? dpssurf1_ : dpssurf2_; }
224 
226 
227 protected:
228 
231 
232  void mkDPS(const EM::Surface&,DataPointSet&);
233 
234 };
235 
236 
243 public:
244 
247  const EMImplicitBodyProvider&);
249 
250  static void initClass();
251  static Provider3D* create() { return new EMImplicitBodyProvider; }
253  { return new EMImplicitBodyProvider(*this); }
254 
256  const char* type() const { return sKey::Body(); }
257  const char* factoryKeyword() const { return type(); }
258 
259  virtual bool initialize(TaskRunner* tskr=0);
260  virtual void reset() { initialize(); }
261 
262  virtual BinID curBinID() const { return curbid_; }
263  virtual float curZ() const { return curz_; }
264 
265  virtual bool toNextPos();
266  virtual bool toNextZ();
267  virtual int estNrZPerPos() const;
268  virtual od_int64 estNrPos() const;
269  virtual void getExtent(BinID&,BinID&) const;
270  virtual void getZRange(Interval<float>&) const;
271  virtual bool includes(const Coord& c,float z) const;
272  virtual bool includes(const BinID&,float) const;
273 
274  virtual void usePar(const IOPar&);
275  virtual void fillPar(IOPar&) const;
276  virtual void getSummary(BufferString&) const;
277 
278  virtual void getTrcKeyZSampling(TrcKeyZSampling& cs) const;
279  const TrcKeyZSampling& getImpBodyRange() const { return tkzs_; }
280  Array3D<float>* getImpBodyData() const { return imparr_; }
281  float getThreshold() const { return threshold_; }
282 
283  static const char* sKeyUseInside() { return "Use InsideBody"; }
284  static const char* sKeyBBInlrg() { return "BB-Inl range"; }
285  static const char* sKeyBBCrlrg() { return "BB-Crl range"; }
286  static const char* sKeyBBZrg() { return "BB-Z range"; }
287 
288 protected:
289 
290  bool isOK() const;
291 
294  float threshold_;
297 
300  float curz_;
302 };
303 
304 
311 public:
312 
316 
317  static void initClass();
318  static Provider3D* create() { return new EMRegion3DProvider; }
320  { return new EMRegion3DProvider(*this); }
321 
322  EMRegion3DProvider& operator =(const EMRegion3DProvider&);
323  const char* type() const { return "Region3D"; }
324  const char* factoryKeyword() const { return type(); }
325 
326  virtual bool initialize(TaskRunner* tskr=0);
327  virtual void reset() { initialize(); }
328 
329  virtual BinID curBinID() const { return curbid_; }
330  virtual float curZ() const { return curz_; }
331 
332  virtual bool toNextPos();
333  virtual bool toNextZ();
334  virtual int estNrZPerPos() const;
335  virtual od_int64 estNrPos() const;
336  virtual void getExtent(BinID&,BinID&) const;
337  virtual void getZRange(Interval<float>&) const;
338  virtual bool includes(const Coord& c,float z) const;
339  virtual bool includes(const BinID&,float) const;
340 
341  virtual void usePar(const IOPar&);
342  virtual void fillPar(IOPar&) const;
343  virtual void getSummary(BufferString&) const;
344 
345  virtual void getTrcKeyZSampling(TrcKeyZSampling& cs) const;
346 
347  EM::Region3D& region() { return region_; }
348  const EM::Region3D& region() const { return region_; }
349 
350 protected:
351 
352 
354 
357  float curz_;
359 };
360 
361 } // namespace Pos
#define mExpClass(module)
Definition: commondefs.h:157
RowCol iterator.
Definition: emrowcoliterator.h:27
int nrLines() const
Definition: emsurfaceposprov.h:183
const char * type() const
Definition: emsurfaceposprov.h:323
static Provider3D * create()
Definition: emsurfaceposprov.h:251
EM implicit body provider for 3D positioning.
Definition: emsurfaceposprov.h:241
static Provider2D * create()
Definition: emsurfaceposprov.h:186
BinID curbid_
Definition: emsurfaceposprov.h:356
void setExtraZ(Interval< float > i)
Definition: emsurfaceposprov.h:72
void setZStep(float s)
Definition: emsurfaceposprov.h:70
Provides a series of positions; can also be used for subselection.
Definition: posprovider.h:31
virtual BinID curBinID() const
Definition: emsurfaceposprov.h:262
float zstep_
Definition: emsurfaceposprov.h:88
Set of data points with group selection.
Definition: datapointset.h:47
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
virtual void getZRange(Interval< float > &rg) const
Definition: emsurfaceposprov.h:181
Is an identifier for each position in the earthmodel.
Definition: emposid.h:35
virtual void reset()
Definition: emsurfaceposprov.h:260
virtual BinID curBinID() const
Definition: emsurfaceposprov.h:329
const char * factoryKeyword() const
Definition: emsurfaceposprov.h:129
Interval< float > extraZ() const
Definition: emsurfaceposprov.h:71
BinID curbid_
Definition: emsurfaceposprov.h:299
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
EMSurfaceProvider2D()
Definition: emsurfaceposprov.h:163
DataPointSet & dpssurf1_
Definition: emsurfaceposprov.h:229
EM::Region3D & region_
Definition: emsurfaceposprov.h:355
virtual void getZRange(Interval< float > &rg, int lidx) const
Definition: emsurfaceposprov.h:179
virtual float curZ() const
Definition: emsurfaceposprov.h:263
Interval< float > curzrg_
Definition: emsurfaceposprov.h:97
bool useinside_
Definition: emsurfaceposprov.h:295
Provides a subselection for 3D surveys.
Definition: posprovider.h:58
static const char * sKeyUseInside()
Definition: emsurfaceposprov.h:283
Array3D< float > * imparr_
Definition: emsurfaceposprov.h:293
Interval< float > zrg2_
Definition: emsurfaceposprov.h:92
const EM::Surface * surface(int idx) const
Definition: emsurfaceposprov.h:67
Provider * clone() const
Definition: emsurfaceposprov.h:169
TrcKeySampling hs_
Definition: emsurfaceposprov.h:90
EM Region provider for 3D positioning.
Definition: emsurfaceposprov.h:309
Interval< float > extraz_
Definition: emsurfaceposprov.h:89
DBKey id1_
Definition: emsurfaceposprov.h:84
float curz_
Definition: emsurfaceposprov.h:98
Decides whether a given position should be included.
Definition: posfilter.h:43
DBKey surfaceID(int idx) const
Definition: emsurfaceposprov.h:63
virtual Coord curCoord() const
Definition: emsurfaceposprov.h:140
const TrcKeyZSampling & getImpBodyRange() const
Definition: emsurfaceposprov.h:279
static Provider3D * create()
Definition: emsurfaceposprov.h:147
virtual bool includes(const Coord &c, float z) const
Definition: emsurfaceposprov.h:137
static const char * sKeyBBZrg()
Definition: emsurfaceposprov.h:286
virtual void getZRange(Interval< float > &rg) const
Definition: emsurfaceposprov.h:143
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Interval< float > zrg1_
Definition: emsurfaceposprov.h:91
Class that can execute a task.
Definition: task.h:193
TrcKeyZSampling bbox_
Definition: emsurfaceposprov.h:296
Array3D< float > * getImpBodyData() const
Definition: emsurfaceposprov.h:280
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
Provider * clone() const
Definition: emsurfaceposprov.h:209
EM::Surface * surf1_
Definition: emsurfaceposprov.h:86
EM::Body * embody_
Definition: emsurfaceposprov.h:298
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
virtual Coord curCoord() const
Definition: emsurfaceposprov.h:219
TrcKeyZSampling tkzs_
Definition: emsurfaceposprov.h:292
float curz_
Definition: emsurfaceposprov.h:300
const DataPointSet & dataPointSet(bool nr1) const
Definition: emsurfaceposprov.h:222
EMSurfaceProvider for 3D positioning.
Definition: emsurfaceposprov.h:121
float curz_
Definition: emsurfaceposprov.h:357
Position.
Definition: commontypes.h:38
EM::Surface * surf2_
Definition: emsurfaceposprov.h:87
EM::RowColIterator * iterator_
Definition: emsurfaceposprov.h:95
virtual float curZ() const
Definition: emsurfaceposprov.h:330
virtual void getZRange(Interval< float > &rg) const
Definition: emsurfaceposprov.h:217
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
static Provider3D * create()
Definition: emsurfaceposprov.h:318
const EM::Region3D & region() const
Definition: emsurfaceposprov.h:348
EMSurfaceProvider for 3D positions with 2D Horizon.
Definition: emsurfaceposprov.h:197
EMImplicitBodyProvider * clone() const
Definition: emsurfaceposprov.h:252
EM::PosID curpos_
Definition: emsurfaceposprov.h:96
A body that can deliver an implicit body.
Definition: embody.h:48
FixedString Body()
Definition: keystrs.h:41
Provider based on surface(s)
Definition: emsurfaceposprov.h:37
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
virtual od_int64 estNrPos() const
Definition: emsurfaceposprov.h:59
const char * type() const
Definition: emsurfaceposprov.h:256
Provides a subselection for 2D surveys - requires the line name(s).
Definition: posprovider.h:93
FixedString Surface()
Definition: keystrs.h:124
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
virtual void reset()
Definition: emsurfaceposprov.h:327
bool initializedbody_
Definition: emsurfaceposprov.h:301
const char * factoryKeyword() const
Definition: emsurfaceposprov.h:257
bool useinside_
Definition: emsurfaceposprov.h:358
Base class for surfaces like horizons and faults. A surface is made up of one or more segments or pat...
Definition: emsurface.h:31
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:23
DBKey id2_
Definition: emsurfaceposprov.h:85
virtual void getTrcKeyZSampling(TrcKeyZSampling &cs) const
Definition: emsurfaceposprov.h:141
float getThreshold() const
Definition: emsurfaceposprov.h:281
EM::Region3D & region()
Definition: emsurfaceposprov.h:347
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
EMSurfaceProvider3D()
Definition: emsurfaceposprov.h:126
#define mEMSurfaceProviderDefFnsBase
Definition: emsurfaceposprov.h:103
od_int64 estnrpos_
Definition: emsurfaceposprov.h:93
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
DataPointSet & dpssurf2_
Definition: emsurfaceposprov.h:230
2D point or vector class.
Definition: commontypes.h:58
EMRegion3DProvider * clone() const
Definition: emsurfaceposprov.h:319
float zStep() const
Definition: emsurfaceposprov.h:69
static const char * sKeyBBCrlrg()
Definition: emsurfaceposprov.h:285
Definition: emregion.h:204
EM::Surface * surface(int idx)
Definition: emsurfaceposprov.h:65
EMSurfaceProvider3D(const EMSurfaceProvider3D &p)
Definition: emsurfaceposprov.h:127
const char * factoryKeyword() const
Definition: emsurfaceposprov.h:324
const char * factoryKeyword() const
Definition: emsurfaceposprov.h:205
EMSurfaceProvider2D(const EMSurfaceProvider2D &p)
Definition: emsurfaceposprov.h:164
const char * factoryKeyword() const
Definition: emsurfaceposprov.h:168
float threshold_
Definition: emsurfaceposprov.h:294
TrcKeyZSampling bbox_
Definition: emsurfaceposprov.h:353
static void initClass()
static const char * sKeyBBInlrg()
Definition: emsurfaceposprov.h:284
EMSurfaceProvider for 2D positioning.
Definition: emsurfaceposprov.h:158
virtual bool includes(const Coord &c, float z) const
Definition: emsurfaceposprov.h:214
Provider * clone() const
Definition: emsurfaceposprov.h:132

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