OpendTect  6.3
volprocsurfacelimitedfiller.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: Y.C. Liu
8  Date: April 2010
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "volumeprocessingmod.h"
14 #include "volprocstep.h"
15 #include "dbkey.h"
16 
17 namespace Geometry { class FaultStickSurface; }
18 namespace EM { class Fault; class Horizon; class Horizon3D; }
19 
20 namespace VolProc
21 {
22 
32 mExpClass(VolumeProcessing) SurfaceLimitedFiller : public Step
34 public:
36  mDefaultFactoryInstanciationBase( "SurfaceLimitedFiller",
37  tr("Horizon-based painter - Advanced") );
38 
41  virtual void releaseData();
42 
43  bool isOK() const;
44 
45  bool setSurfaces(const DBKeySet&,
46  const TypeSet<char>& fillside);
47  /*Assume going down increases z.
48  For horizons, side = 1 if go below, -1 if go above.*/
49 
50  int nrOfSurfaces() const {return side_.size();}
51  char getSurfaceFillSide(int idx) const{ return side_[idx]; }
52  const DBKey* getSurfaceID(int idx) const;
53 
54  //Start value/grid stuff
55  bool usesStartValue() const { return usestartval_; }
56  void useStartValue(bool yn) { usestartval_ = yn; }
57 
58  float getStartValue() const { return fixedstartval_; }
59  void setStartValue(float vel) { fixedstartval_ = vel; }
60 
61  bool setStartValueHorizon(const DBKey*);
62  const DBKey* getStartValueHorizonID() const;
63  int getStartAuxdataIdx() const {return startauxdataselidx_;}
64  void setStartAuxdataIdx(int i) { startauxdataselidx_ = i; }
65 
66  //Gradient value/grid stuff
67  bool usesGradientValue() const { return usegradient_; }
68  void useGradientValue(bool yn) { usegradient_ = yn; }
69 
70  bool isGradientVertical() const { return gradvertical_; }
71  void setGradientVertical(bool yn){ gradvertical_ = yn; }
72 
73  float getGradient() const { return fixedgradient_; }
74  void setGradient(float grd) { fixedgradient_ = grd; }
75 
76  bool setGradientHorizon(const DBKey*);
77  const DBKey* getGradientHorizonID() const;
78  int getGradAuxdataIdx() { return gradauxdataselidx_; }
79  void setGradAuxdataIdx(int i){ gradauxdataselidx_ = i; }
80 
81  //Reference horizon/z stuff
82  bool usesRefZValue() const { return userefz_; }
83  void useRefZValue(bool yn) { userefz_ = yn; }
84 
85  void setRefZValue(float zv) { refz_ = zv; }
86  float getRefZValue() const { return refz_; }
87 
88  bool setRefHorizon(const DBKey*);
89  const DBKey* getRefHorizonID() const;
90 
91  bool useHorInterFillerPar(const IOPar&);
92 
93  virtual void fillPar(IOPar&) const;
94  virtual bool usePar(const IOPar&);
95  virtual uiString errMsg() const { return errmsg_; }
96 
97  virtual bool needsFullVolume() const { return false; }
98  virtual bool canInputAndOutputBeSame() const { return true; }
99  virtual bool areSamplesIndependent() const { return true; }
100  virtual bool needsInput() const { return false; }
101  virtual bool isInputPrevStep() const { return true; }
102  virtual bool canHandle2D() const { return true; }
103  virtual bool prefersBinIDWise() const { return true; }
104 
105 protected:
106 
107  virtual bool prepareComp(int);
108  virtual bool computeBinID(const BinID&, int);
109  virtual od_int64 extraMemoryUsage(OutputSlotID,const TrcKeySampling&,
110  const StepInterval<int>&) const;
111 
112  EM::Horizon* loadHorizon(const DBKey&) const;
114  int setDataHorizon(const DBKey&,EM::Horizon3D*&,
115  int auxdataidx) const;
116 
124 
131 
134  float refz_;
135  bool userefz_;
136 
137  /* The following four have the same size, for any idx,
138  faults_[idx] or hors_[idx] is 0. */
143 
145  double valrange_;
146 
147  static const char* sKeySurfaceID() { return "Surface MID"; }
148  static const char* sKeySurfaceFillSide() { return "Surface fill side"; }
149  static const char* sKeyNrSurfaces() { return "Nr of surfaces"; }
150 
151  static const char* sKeyUseStartValue() { return "Use start value"; }
152  static const char* sKeyStartValue() { return "Start value"; }
153  static const char* sKeyStartValHorID() { return "Start value horizon"; }
154  static const char* sKeyStartAuxDataID(){ return "Start auxdata id"; }
155 
156  static const char* sKeyUseGradValue() { return "Use gradient value"; }
157  static const char* sKeyGradValue() { return "Gradient value"; }
158  static const char* sKeyGradHorID() { return "Gradient horizon"; }
159  static const char* sKeyGradAuxDataID() { return "Gradient auxdata id"; }
160  static const char* sKeyGradType() { return "Gradient type"; }
161 
162  static const char* sKeyRefHorID() { return "Reference horizon"; }
163  static const char* sKeyRefZ() { return "Reference z"; }
164  static const char* sKeyUseRefZ() { return "Use reference z"; }
165 
166 };
167 
168 } // namespace VolProc
#define mExpClass(module)
Definition: commondefs.h:157
int startauxidx_
Definition: volprocsurfacelimitedfiller.h:128
bool usesRefZValue() const
Definition: volprocsurfacelimitedfiller.h:82
float getStartValue() const
Definition: volprocsurfacelimitedfiller.h:58
int startauxdataselidx_
Definition: volprocsurfacelimitedfiller.h:127
ObjectSet< EM::Horizon > hors_
Definition: volprocsurfacelimitedfiller.h:141
TypeSet< char > side_
Definition: volprocsurfacelimitedfiller.h:139
float fixedstartval_
Definition: volprocsurfacelimitedfiller.h:129
void useStartValue(bool yn)
Definition: volprocsurfacelimitedfiller.h:56
static const char * sKeyStartValHorID()
Definition: volprocsurfacelimitedfiller.h:153
void setStartAuxdataIdx(int i)
Definition: volprocsurfacelimitedfiller.h:64
static const char * sKeyStartAuxDataID()
Definition: volprocsurfacelimitedfiller.h:154
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
bool usebottomval_
Definition: volprocsurfacelimitedfiller.h:144
#define mDefaultFactoryCreatorImpl(baseclss, clss)
Definition: factory.h:284
virtual bool canInputAndOutputBeSame() const
Definition: volprocsurfacelimitedfiller.h:98
float getGradient() const
Definition: volprocsurfacelimitedfiller.h:73
float refz_
Definition: volprocsurfacelimitedfiller.h:134
float fixedgradient_
Definition: volprocsurfacelimitedfiller.h:121
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
ObjectSet< Geometry::FaultStickSurface > faults_
Definition: volprocsurfacelimitedfiller.h:142
virtual bool prefersBinIDWise() const
Definition: volprocsurfacelimitedfiller.h:103
DBKeySet surfacelist_
Definition: volprocsurfacelimitedfiller.h:140
int getStartAuxdataIdx() const
Definition: volprocsurfacelimitedfiller.h:63
DBKey starthormid_
Definition: volprocsurfacelimitedfiller.h:125
EM::Horizon3D * starthorizon_
Definition: volprocsurfacelimitedfiller.h:126
Definition: dbkey.h:98
static const char * sKeySurfaceFillSide()
Definition: volprocsurfacelimitedfiller.h:148
float getRefZValue() const
Definition: volprocsurfacelimitedfiller.h:86
EM::Horizon * refhorizon_
Definition: volprocsurfacelimitedfiller.h:133
Definition: uistring.h:88
bool usesStartValue() const
Definition: volprocsurfacelimitedfiller.h:55
static const char * sKeyGradValue()
Definition: volprocsurfacelimitedfiller.h:157
static const char * sKeyNrSurfaces()
Definition: volprocsurfacelimitedfiller.h:149
Definition: volprocsurfacelimitedfiller.h:32
DBKey refhormid_
Definition: volprocsurfacelimitedfiller.h:132
void setRefZValue(float zv)
Definition: volprocsurfacelimitedfiller.h:85
static const char * sKeyGradAuxDataID()
Definition: volprocsurfacelimitedfiller.h:159
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
int getGradAuxdataIdx()
Definition: volprocsurfacelimitedfiller.h:78
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
static const char * sKeyRefHorID()
Definition: volprocsurfacelimitedfiller.h:162
void setStartValue(float vel)
Definition: volprocsurfacelimitedfiller.h:59
Adapter for a VolProc chain to external attribute calculation.
Definition: velocitygridder.h:29
#define mDefaultFactoryInstanciationBase(keywrd, usernm)
Definition: factory.h:278
virtual bool canHandle2D() const
Definition: volprocsurfacelimitedfiller.h:102
int OutputSlotID
Definition: volprocstep.h:47
FixedString Horizon()
Definition: keystrs.h:70
double valrange_
Definition: volprocsurfacelimitedfiller.h:145
static const char * sKeySurfaceID()
Definition: volprocsurfacelimitedfiller.h:147
static const char * sKeyGradHorID()
Definition: volprocsurfacelimitedfiller.h:158
static const char * sKeyUseGradValue()
Definition: volprocsurfacelimitedfiller.h:156
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
char getSurfaceFillSide(int idx) const
Definition: volprocsurfacelimitedfiller.h:51
bool isGradientVertical() const
Definition: volprocsurfacelimitedfiller.h:70
EM::Horizon3D * gradhorizon_
Definition: volprocsurfacelimitedfiller.h:118
bool usestartval_
Definition: volprocsurfacelimitedfiller.h:130
FixedString Fault()
Definition: keystrs.h:64
An algorithm/calculation/transformation that takes one scalar volume as input, processes it...
Definition: volprocstep.h:39
static const char * sKeyRefZ()
Definition: volprocsurfacelimitedfiller.h:163
int gradauxidx_
Definition: volprocsurfacelimitedfiller.h:120
void useGradientValue(bool yn)
Definition: volprocsurfacelimitedfiller.h:68
virtual bool areSamplesIndependent() const
Definition: volprocsurfacelimitedfiller.h:99
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
BufferString errmsg_
Definition: horizontracker.h:117
virtual bool needsFullVolume() const
Definition: volprocsurfacelimitedfiller.h:97
void setGradient(float grd)
Definition: volprocsurfacelimitedfiller.h:74
DBKey gradhormid_
Definition: volprocsurfacelimitedfiller.h:117
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: embody.h:23
int gradauxdataselidx_
Definition: volprocsurfacelimitedfiller.h:119
bool gradvertical_
Definition: volprocsurfacelimitedfiller.h:123
virtual uiString errMsg() const
Definition: volprocsurfacelimitedfiller.h:95
void useRefZValue(bool yn)
Definition: volprocsurfacelimitedfiller.h:83
int nrOfSurfaces() const
Definition: volprocsurfacelimitedfiller.h:50
void setGradientVertical(bool yn)
Definition: volprocsurfacelimitedfiller.h:71
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
3D Horizon. A Horizon is made up of one or more grids (so they can overlap at faults). The grids are defined by knot-points in a matrix and fillstyle in between the knots.
Definition: emhorizon3d.h:94
bool usesGradientValue() const
Definition: volprocsurfacelimitedfiller.h:67
bool userefz_
Definition: volprocsurfacelimitedfiller.h:135
static const char * sKeyUseRefZ()
Definition: volprocsurfacelimitedfiller.h:164
virtual bool needsInput() const
Definition: volprocsurfacelimitedfiller.h:100
virtual bool isInputPrevStep() const
Definition: volprocsurfacelimitedfiller.h:101
static const char * sKeyUseStartValue()
Definition: volprocsurfacelimitedfiller.h:151
bool usegradient_
Definition: volprocsurfacelimitedfiller.h:122
Definition: arraytesselator.h:19
static const char * sKeyStartValue()
Definition: volprocsurfacelimitedfiller.h:152
Horizon Surface.
Definition: emhorizon.h:46
void setGradAuxdataIdx(int i)
Definition: volprocsurfacelimitedfiller.h:79
static const char * sKeyGradType()
Definition: volprocsurfacelimitedfiller.h:160

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