OpendTect  6.3
seisprovider.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: Nov 2016
9 ________________________________________________________________________
10 
11 */
12 
13 #include "seistrc.h"
14 #include "trckeyzsampling.h"
15 #include "dbkey.h"
16 #include "atomic.h"
17 #include "threadlock.h"
18 #include "survgeom.h"
19 
20 class SeisTrcBuf;
21 namespace PosInfo { class CubeData; class Line2DData; }
22 
23 
24 namespace Seis
25 {
26 
27 class SelData;
28 class Fetcher;
29 class Fetcher2D;
30 class Fetcher3D;
31 
32 
56 public:
57 
58  static Provider* create(Seis::GeomType);
59  static Provider* create(const DBKey&,uiRetVal* uirv=0);
60  static Provider* create(const IOPar&,uiRetVal* uirv=0);
61  static DBKey dbKey(const IOPar&);
62  virtual ~Provider();
63 
64  uiRetVal setInput(const DBKey&);
65 
66  virtual GeomType geomType() const = 0;
67  bool is2D() const { return Seis::is2D(geomType()); }
68  bool isPS() const { return Seis::isPS(geomType()); }
69  BufferString name() const;
70  Pos::GeomID firstGeomID() const { return curGeomID(); }
71  DBKey dbKey() const { return dbky_; }
72  ZSampling getZRange() const { return doGetZRange(); }
73  uiRetVal getComponentInfo(BufferStringSet&,
74  TypeSet<Seis::DataType>* dts=0) const;
75  int nrOffsets() const;
76 
78  void setSelData(SelData*);
79  void setSampleInterval(float);
80  void selectComponent(int);
81  void selectComponents(const TypeSet<int>&);
82  void forceFPData(bool yn=true);
83  void setReadMode(ReadMode);
84  uiRetVal fillPar(IOPar&) const;
85  uiRetVal usePar(const IOPar&);
86 
87  bool isPresent( const TrcKey& tk ) const
88  { return doGetIsPresent( tk ); }
89  uiRetVal getNext(SeisTrc&) const;
90  uiRetVal getNextGather(SeisTrcBuf&) const;
91  uiRetVal get(const TrcKey&,SeisTrc&) const;
92  uiRetVal getGather(const TrcKey&,SeisTrcBuf&) const;
93 
94  const TypeSet<int>& getSelectedComponents() const { return selcomps_;}
95  bool haveSelComps() const;
96 
97  Pos::GeomID curGeomID() const { return doGetCurGeomID(); }
98  od_int64 nrDone() const { return nrdone_; }
99  od_int64 totalNr() const;
100 
101  static const char* sKeyForceFPData()
102  { return "Force FPs"; }
103  static const char* sKeySelectedComponents()
104  { return "Selected Components"; }
105 
106  static void putTraceInGather(const SeisTrc&,SeisTrcBuf&);
108  static void putGatherInTrace(const SeisTrcBuf&,SeisTrc&);
110 
111  uiRetVal reset() const;
112  const SelData* selData() const { return seldata_; }
113 
114 protected:
115 
116  Provider();
117 
121  float zstep_;
126  mutable int nrcomps_;
127  mutable bool setupchgd_;
128 
130 
131  void ensureRightDataRep(SeisTrc&) const;
132  void ensureRightZSampling(SeisTrc&) const;
133  void ensureRightComponents(SeisTrc&) const;
134  bool handleSetupChanges(uiRetVal&) const;
135  void handleTrace(SeisTrc&) const;
136  void handleTraces(SeisTrcBuf&) const;
137 
138  virtual od_int64 getTotalNrInInput() const = 0;
139  virtual void doReset(uiRetVal&) const = 0;
140  virtual void doFillPar(IOPar&,uiRetVal&) const;
141  virtual void doUsePar(const IOPar&,uiRetVal&) = 0;
142 
143  virtual int gtNrOffsets() const { return 1; }
144  virtual uiRetVal doGetComponentInfo(BufferStringSet&,
145  TypeSet<Seis::DataType>&) const;
147  virtual Pos::GeomID doGetCurGeomID() const = 0;
148  virtual ZSampling doGetZRange() const = 0;
149  virtual bool doGetIsPresent(const TrcKey&) const;
150 
151  // define at least either SeisTrc or SeisTrcBuf fns
152  virtual void doGetNext(SeisTrc&,uiRetVal&) const;
153  virtual void doGet(const TrcKey&,SeisTrc&,uiRetVal&) const;
154  virtual void doGetNextGather(SeisTrcBuf&,uiRetVal&) const;
155  virtual void doGetGather(const TrcKey&,SeisTrcBuf&,uiRetVal&) const;
156 
157  friend class Fetcher;
158  friend class Fetcher2D;
159  friend class Fetcher3D;
160 
161 };
162 
163 
170 public:
171 
172  virtual bool getRanges(TrcKeyZSampling&) const = 0;
173  virtual void getGeometryInfo(PosInfo::CubeData&) const = 0;
174 
175 protected:
176 
178 
179  virtual od_int64 getTotalNrInInput() const;
180  virtual void doFillPar( IOPar& iop, uiRetVal& uirv ) const
181  { Provider::doFillPar( iop, uirv ); }
182  virtual void doUsePar( const IOPar& iop, uiRetVal& uirv )
183  { Provider::doUsePar( iop, uirv ); }
184  virtual Pos::GeomID doGetCurGeomID() const
185  { return Survey::GM().default3DSurvID(); }
186  virtual ZSampling doGetZRange() const;
187 
188 };
189 
190 
197 public:
198 
199 
200  virtual int nrLines() const = 0;
201  virtual Pos::GeomID geomID(int) const = 0;
202  virtual BufferString lineName(int) const = 0;
203  virtual int lineNr(Pos::GeomID) const = 0;
204  virtual int curLineIdx() const = 0;
205  virtual bool getRanges(int,StepInterval<int>&,ZSampling&) const = 0;
206  virtual void getGeometryInfo(int,PosInfo::Line2DData&) const = 0;
207 
208 protected:
209 
211 
212  virtual od_int64 getTotalNrInInput() const;
213  virtual void doFillPar( IOPar& iop, uiRetVal& uirv ) const
214  { Provider::doFillPar( iop, uirv ); }
215  virtual void doUsePar( const IOPar& iop, uiRetVal& uirv )
216  { Provider::doUsePar( iop, uirv ); }
217  virtual Pos::GeomID doGetCurGeomID() const
218  { return geomID( curLineIdx() ); }
219  virtual ZSampling doGetZRange() const;
220 
221 };
222 
223 
224 
225 } // namespace Seis
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
ZSampling getZRange() const
Definition: seisprovider.h:72
const GeometryManager & GM()
static const char * sKeySelectedComponents()
Definition: seisprovider.h:103
Definition: seisfetcher.h:83
Provider3D()
Definition: seisprovider.h:177
virtual void doFillPar(IOPar &iop, uiRetVal &uirv) const
Definition: seisprovider.h:180
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
const SelData * selData() const
Definition: seisprovider.h:112
is the access point for seismic traces. Instantiate a subclass and ask for what you need...
Definition: seisprovider.h:54
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
TrcKey::SurvID default3DSurvID() const
bool is2D(GeomType gt)
Definition: seistype.h:32
Provider2D()
Definition: seisprovider.h:210
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
float zstep_
Definition: seisprovider.h:121
virtual Pos::GeomID doGetCurGeomID() const
Definition: seisprovider.h:217
SelData * seldata_
Definition: seisprovider.h:120
virtual void doFillPar(IOPar &iop, uiRetVal &uirv) const
Definition: seisprovider.h:213
DBKey dbKey() const
Definition: seisprovider.h:71
Position info for a 2D line.
Definition: posinfo2d.h:63
od_int64 totalnr_
Definition: seisprovider.h:125
DBKey dbky_
Definition: seisprovider.h:119
Set of BufferString objects.
Definition: bufstringset.h:25
virtual int gtNrOffsets() const
Definition: seisprovider.h:143
int nrcomps_
Definition: seisprovider.h:126
base class for Providers for 2D data. Extends Provider with some 2D specific services.
Definition: seisprovider.h:195
GeomType
Definition: seistype.h:31
bool isPS(GeomType gt)
Definition: seistype.h:36
FixedString Provider()
Definition: keystrs.h:103
od_int64 nrDone() const
Definition: seisprovider.h:98
bool isPresent(const TrcKey &tk) const
Definition: seisprovider.h:87
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Threads::Atomic< od_int64 > nrdone_
Definition: seisprovider.h:129
Threads::Lock lock_
Definition: seisprovider.h:118
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
Definition: seisfetcher.h:53
static const char * sKeyForceFPData()
Definition: seisprovider.h:101
const TypeSet< int > & getSelectedComponents() const
Definition: seisprovider.h:94
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
contains input (sub-)selection data from a cube or lineset
Definition: seisselection.h:78
Index_Type GeomID
Definition: commontypes.h:48
ReadMode readmode_
Definition: seisprovider.h:123
Position info, often segmented.
Definition: posinfo.h:38
virtual Pos::GeomID doGetCurGeomID() const
Definition: seisprovider.h:184
virtual void doUsePar(const IOPar &iop, uiRetVal &uirv)
Definition: seisprovider.h:215
ReadMode
Definition: seistype.h:29
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
static uiHor3DInterpol * create(uiParent *)
bool setupchgd_
Definition: seisprovider.h:127
Seismic trace.
Definition: seistrc.h:31
Definition: uistring.h:299
bool is2D() const
Definition: seisprovider.h:67
set of seismic traces.
Definition: seisbuf.h:28
Pos::GeomID curGeomID() const
Definition: seisprovider.h:97
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
virtual void doUsePar(const IOPar &iop, uiRetVal &uirv)
Definition: seisprovider.h:182
TypeSet< int > selcomps_
Definition: seisprovider.h:122
Position info for an entire 3D cube. The LineData&#39;s are not sorted.
Definition: posinfo.h:96
Definition: seisfetcher.h:33
base class for Providers for 3D data. Extends Provider with some 3D specific services.
Definition: seisprovider.h:168
bool forcefpdata_
Definition: seisprovider.h:124
Pos::GeomID firstGeomID() const
Definition: seisprovider.h:70
bool isPS() const
Definition: seisprovider.h:68

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