OpendTect  6.3
zaxistransform.h
Go to the documentation of this file.
1 #pragma once
2 /*+
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: K. Tingdahl
7  Date: October 2006
8 ________________________________________________________________________
9 
10 -*/
11 
12 #include "algomod.h"
13 #include "enums.h"
14 #include "factory.h"
15 #include "binid.h"
16 #include "ranges.h"
17 #include "refcount.h"
18 #include "samplingdata.h"
19 #include "survgeom.h"
20 
21 class BinIDValue;
22 class TrcKeyZSampling;
23 class TaskRunner;
24 
25 namespace ZDomain { class Def; class Info; }
26 
35 mExpClass(Algo) ZAxisTransform : public RefCount::Referenced
36 {
37 public:
39 
40  static ZAxisTransform* create(const IOPar&);
44  virtual bool isOK() const { return true; }
45  virtual uiString errMsg() const { return errmsg_; }
46 
47  virtual bool needsVolumeOfInterest() const { return true; }
48  virtual int addVolumeOfInterest(const TrcKeyZSampling&,
49  bool zistrans=false);
51  virtual void setVolumeOfInterest(int volid,
52  const TrcKeyZSampling&,
53  bool zistrans=false);
54  virtual void removeVolumeOfInterest(int volid);
55 
56  virtual bool loadDataIfMissing(int volid,TaskRunner* =0);
57 
58  virtual bool canTransformSurv(Pos::SurvID) const = 0;
59 
60  //Generic 2D and 3D
61  virtual void transformTrc(const TrcKey&,
62  const SamplingData<float>&,
63  int sz,float* res) const = 0;
64  float transformTrc(const TrcKey&,float z) const;
65  virtual void transformTrcBack(const TrcKey&,
66  const SamplingData<float>&,
67  int sz,float* res) const = 0;
68  float transformTrcBack(const TrcKey&,float z) const;
69 
70  virtual Interval<float> getZInterval(bool from) const = 0;
73  virtual float getZIntervalCenter(bool from) const;
76  virtual float getGoodZStep() const;
82  ZDomain::Info& fromZDomainInfo() { return fromzdomaininfo_; }
83  ZDomain::Info& toZDomainInfo() { return tozdomaininfo_; }
84  const ZDomain::Info& fromZDomainInfo() const;
85  const ZDomain::Info& toZDomainInfo() const;
86  const char* fromZDomainKey() const;
87  const char* toZDomainKey() const;
88 
89  virtual float toZScale() const;
91  virtual float zScale() const { return toZScale(); }
94  virtual NotifierAccess* changeNotifier() { return 0; }
95  virtual void fillPar(IOPar&) const;
96  virtual bool usePar(const IOPar&);
97 
98 protected:
99  ZAxisTransform(const ZDomain::Def& from,
100  const ZDomain::Def& to);
101  ~ZAxisTransform();
102 
105  mutable uiString errmsg_;
106 
107 public: //Legacy stuff
108 
109  //3D
110  virtual void transform(const BinID&,
111  const SamplingData<float>&,
112  int sz,float* res) const;
113  float transform(const BinIDValue&) const;
114  float transform(const Coord3&) const;
115  virtual void transformBack(const BinID&,
116  const SamplingData<float>&,
117  int sz,float* res) const;
118  float transformBack(const BinIDValue&) const;
119  float transformBack(const Coord3&) const;
120  // 2D
121  virtual void transform2D(const char* linenm,int trcnr,
122  const SamplingData<float>&,
123  int sz,float* res) const;
124  float transform2D(const char* linenm,int trcnr,
125  float z) const;
126  virtual void transformBack2D(const char* linenm,int trcnr,
127  const SamplingData<float>&,
128  int sz,float* res) const;
129  float transformBack2D(const char* linenm,int trcnr,
130  float z) const;
131 };
132 
133 
139 {
140 public:
141  ZAxisTransformSampler(const ZAxisTransform&,
142  bool back,const SamplingData<double>&,
143  bool is2d);
144  virtual ~ZAxisTransformSampler();
145 
146  void setBinID(const BinID& bid);
147  void setTrcKey( const TrcKey& k ) { trckey_ = k ; }
148  void setLineName(const char*);
149  void setTrcNr(int);
150 
151  float operator[](int idx) const;
152  void computeCache(const Interval<int>& range);
153 
154 protected:
155 
157  bool back_;
158  bool is2d_;
161 
164 
165 };
ZDomain::Info & fromZDomainInfo()
Definition: zaxistransform.h:82
Samples Z-axis transformed data.
Definition: zaxistransform.h:138
#define mExpClass(module)
Definition: commondefs.h:157
virtual float zScale() const
Definition: zaxistransform.h:91
TypeSet< float > cache_
Definition: zaxistransform.h:162
bool back_
Definition: zaxistransform.h:157
int firstcachesample_
Definition: zaxistransform.h:163
ZDomain::Info & toZDomainInfo()
Definition: zaxistransform.h:83
T to(const F &fr)
Definition: convert.h:31
const ZAxisTransform & transform_
Definition: zaxistransform.h:156
void setTrcKey(const TrcKey &k)
Definition: zaxistransform.h:147
Interface class for Notifier. See comments there.
Definition: notify.h:20
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
Definition: uistring.h:88
virtual bool needsVolumeOfInterest() const
Definition: zaxistransform.h:47
uiString errmsg_
Definition: zaxistransform.h:105
3D point or vector
Definition: commontypes.h:57
TrcKey trckey_
Definition: zaxistransform.h:159
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Index_Type SurvID
Definition: commontypes.h:45
Class that can execute a task.
Definition: task.h:193
ZDomain::Info & fromzdomaininfo_
Definition: zaxistransform.h:104
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
virtual NotifierAccess * changeNotifier()
Definition: zaxistransform.h:94
BinID and a value.
Definition: binidvalue.h:29
virtual bool isOK() const
Definition: zaxistransform.h:44
#define mDefineFactoryInClass(T, funcname)
Definition: factory.h:424
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
bool is2d_
Definition: zaxistransform.h:158
virtual uiString errMsg() const
Definition: zaxistransform.h:45
static uiHor3DInterpol * create(uiParent *)
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
BufferString errmsg_
Definition: horizontracker.h:117
const SamplingData< double > sd_
Definition: zaxistransform.h:160
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
ZDomain::Info & tozdomaininfo_
Definition: zaxistransform.h:103
Base class for z-axis transforms.
Definition: zaxistransform.h:35
Definition of z-domain.
Definition: zdomain.h:39
Information of z-domain.
Definition: zdomain.h:96
Definition: zdomain.h:18

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