OpendTect  6.3
attriboutput.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: 07-10-1999
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "attributeenginemod.h"
14 #include "bufstringset.h"
15 #include "trckeyzsampling.h"
16 #include "ranges.h"
17 #include "refcount.h"
18 #include "seistype.h"
19 #include "uistrings.h"
20 
21 class BinDataDesc;
22 class BinIDValueSet;
23 class DataPointSet;
25 class SeisTrc;
26 class SeisTrcInfo;
27 class SeisTrcBuf;
28 class SeisTrcWriter;
29 class Scaler;
30 namespace Seis { class SelData; }
31 
32 namespace Attrib
33 {
34 class DataHolder;
35 class Data2DHolder;
36 
41 mExpClass(AttributeEngine) Output : public RefCount::Referenced
42 {
43 public:
44  Output();
45 
46  virtual bool getDesiredVolume(TrcKeyZSampling&) const
47  { return true; }
48  virtual bool useCoords(Pos::SurvID) const { return false;}
49  virtual bool wantsOutput(const BinID&) const; // overrule it
50  virtual bool wantsOutput(const Coord&) const; // or this one
51 
52  virtual const RegularSeisDataPack* getDataPack() const { return 0; }
53  virtual RegularSeisDataPack* getDataPack(float) { return 0; }
54 
55  virtual void getDesiredOutputs( TypeSet<int>& outputs ) const
56  { outputs = desoutputs_; }
57  void setDesiredOutputs( const TypeSet<int>& outputs )
58  { desoutputs_ = outputs; }
59 
60  virtual TypeSet<Interval<int> > getLocalZRanges(const BinID&,float,
61  TypeSet<float>&) const;
62  virtual TypeSet<Interval<int> > getLocalZRanges(const Coord&,float,
63  TypeSet<float>&) const;
64  virtual void collectData(const DataHolder&,float step,
65  const SeisTrcInfo&) = 0;
66  virtual SeisTrc* getTrc() { return 0; }
67  virtual bool writeTrc() { return true; }
68  virtual void deleteTrc() {}
69  const Seis::SelData& getSelData() { return *seldata_; }
70  Pos::GeomID curGeomID() const;
71  virtual void setPossibleVolume(const TrcKeyZSampling&) {}
72  virtual bool finishWrite() { return false; }
73 
74  static const char* outputstr();
75  static const char* cubekey();
76  static const char* tskey();
77  static const char* surfkey();
78  static const char* scalekey();
79  static const char* varzlinekey();
80 
81  virtual const uiString errMsg() const
82  { return uiStrings::sEmptyString(); }
83 
84 protected:
85  ~Output();
86 
89  void doSetGeometry(const TrcKeyZSampling&);
90  void ensureSelType(Seis::SelType);
91 };
92 
93 
94 #define mImplDefAttribOutputFns(typ) \
95  virtual bool wantsOutput( const typ& t ) const \
96  { return Output::wantsOutput(t); } \
97  virtual TypeSet<Interval<int> > getLocalZRanges( const typ& t,float f, \
98  TypeSet<float>& ts ) const \
99  { return Output::getLocalZRanges(t,f,ts); }
100 
105 mExpClass(AttributeEngine) DataPackOutput : public Output
106 {
107 public:
109 
110  const RegularSeisDataPack* getDataPack() const;
111  virtual RegularSeisDataPack*getDataPack(float);
112 
113  bool getDesiredVolume(TrcKeyZSampling&) const;
114  void setGeometry( const TrcKeyZSampling& cs )
115  { doSetGeometry(cs); }
116  void setUndefValue( float v ) { udfval_ = v; }
117 
118  bool wantsOutput(const BinID&) const;
119  TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
120  TypeSet<float>&) const;
122  virtual void collectData(const DataHolder&,float step,
123  const SeisTrcInfo&);
124  void setPossibleVolume(const TrcKeyZSampling&);
125 
126 protected:
127  TrcKeyZSampling desiredvolume_;
128  TrcKeyZSampling dcsampling_; //can differ from desiredvolume_
129  //(special cases with decimated cubes smaller
130  //than desired display)
131  TypeSet< Interval<int> > sampleinterval_;
133  float udfval_;
134 
135  void init(float refstep,const BinDataDesc* bdd=0);
136 };
137 
138 
143 mExpClass(AttributeEngine) SeisTrcStorOutput : public Output
145 public:
146  SeisTrcStorOutput(const TrcKeyZSampling&,
147  const Pos::GeomID);
149 
150  virtual bool doInit();
151  virtual void set2D( bool yn = true ) { is2d_ = yn; }
152  virtual bool useCoords(Pos::SurvID) const { return false;}
153  bool getDesiredVolume(TrcKeyZSampling&) const;
154  bool wantsOutput(const BinID&) const;
155  virtual TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
156  TypeSet<float>&) const;
158  bool setStorageID(const DBKey&);
159  void setGeometry( const TrcKeyZSampling& cs )
160  { doSetGeometry(cs); }
161 
162  bool doUsePar(const IOPar&,int outidx);
163  virtual bool finishWrite();
164  virtual void collectData(const DataHolder&,float step,
165  const SeisTrcInfo&);
166  virtual bool writeTrc();
167  SeisTrc* getTrc() { return trc_; }
168  void setTrcGrow( bool yn ) { growtrctosi_ = yn; }
170  { outptypes_ = typ; }
171  void setOutpNames( const BufferStringSet& nms )
172  { outpnames_ = nms; }
173 
174  virtual const uiString errMsg() const
175  { return errmsg_; }
176 
177  static const char* seisidkey();
178  static const char* attribkey();
179  static const char* inlrangekey();
180  static const char* crlrangekey();
181  static const char* depthrangekey();
182 
183 protected:
184 
186  TrcKeyZSampling desiredvolume_;
189  bool is2d_;
191 
202 
203 public:
204  void deleteTrc(); //only if you do not use writeTrc
205 
206 };
207 
208 
215 public:
217  DataPointSet*,float);
218 
219  bool doInit();
220  void set2D(bool) {}
221  bool useCoords(Pos::SurvID) const { return true; }
222 
223  virtual bool wantsOutput(const Coord&) const;
224  TypeSet< Interval<int> > getLocalZRanges(const Coord&,float,
225  TypeSet<float>&) const;
227  void setTrcsBounds(Interval<float>);
228 
229  virtual bool finishWrite();
230  virtual void collectData(const DataHolder&,float step,
231  const SeisTrcInfo&);
232  void setMaxDistBetwTrcs( float maxdist )
233  { maxdisttrcs_ = maxdist; }
234 protected:
235 
236  const TrcKeyZSampling getCS();
237 
239  float stdtrcsz_;
241  float outval_;
243 };
244 
245 
250 mExpClass(AttributeEngine) TwoDOutput : public Output
251 {
252 public:
253  TwoDOutput(const Interval<int>&,
254  const Interval<float>&,
255  Pos::GeomID);
256  ~TwoDOutput();
257 
258  bool doInit();
259  bool wantsOutput(const BinID&) const;
260  TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
261  TypeSet<float>&) const;
263  void setGeometry(const Interval<int>&,
264  const Interval<float>&);
265  bool getDesiredVolume(TrcKeyZSampling&) const;
266  void setOutput(Data2DHolder&);
267 
268  void collectData(const DataHolder&,float step,
269  const SeisTrcInfo&);
270  const uiString errMsg() const { return errmsg_; }
271 
272 protected:
273 
276 
278 };
279 
280 
285 mExpClass(AttributeEngine) LocationOutput : public Output
286 {
287 public:
290 
292  { return true;}
293  bool wantsOutput(const BinID&) const;
294  TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
295  TypeSet<float>&) const;
297  virtual void collectData(const DataHolder&,float step,
298  const SeisTrcInfo&);
299  void setPossibleBinIDDuplic() { arebiddupl_ = true; }
300 
301  //TODO : check where we want to put this: output?
302  static const char* filenamekey();
303  static const char* locationkey();
304  static const char* attribkey();
305  static const char* surfidkey();
306 
307 protected:
309 
311 
312  void computeAndSetVals(const DataHolder&,
313  float,float*);
314  bool areBIDDuplicated() const;
315 };
316 
317 
322 mExpClass(AttributeEngine) TrcSelectionOutput : public Output
323 {
324 public:
326  float outval =0);
327  ~TrcSelectionOutput() ;
328 
329  bool getDesiredVolume(TrcKeyZSampling&) const;
330  bool wantsOutput(const BinID&) const;
331  TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
332  TypeSet<float>&) const;
334  void setOutput(SeisTrcBuf*);
335  void setTrcsBounds(Interval<float>);
336  virtual void collectData(const DataHolder&,float,
337  const SeisTrcInfo&);
338  void setGeomID(Pos::GeomID);
339 
340 protected:
341  const BinIDValueSet& bidvalset_;
342  SeisTrcBuf* outpbuf_;
343  float outval_;
344  float stdtrcsz_;
345  float stdstarttime_;
346 };
347 
348 
353 mExpClass(AttributeEngine) TableOutput : public Output
354 {
355 public:
358 
360  { return true;}
361  virtual bool useCoords(Pos::SurvID) const;
362  bool wantsOutput(const BinID&) const;
363  bool wantsOutput(const Coord&) const;
364  virtual void collectData(const DataHolder&,float step,
365  const SeisTrcInfo&);
366  TypeSet< Interval<int> > getLocalZRanges(const BinID&,float,
367  TypeSet<float>&) const;
368  TypeSet< Interval<int> > getLocalZRanges(const Coord&,float,
369  TypeSet<float>&) const;
370 
371  void setMaxDistBetwTrcs( float maxdist )
372  { maxdisttrcs_ = maxdist; }
373  void setPossibleBinIDDuplic() { arebiddupl_ = true; }
374 
375 protected:
377 
382 
383  void computeAndSetVals(const DataHolder&,float,
384  float,float*);
385  bool areBIDDuplicated() const;
386  void addLocalInterval(TypeSet<Interval<int> >&,
388  int,float) const;
389 };
390 
391 } // namespace Attrib
TypeSet< Interval< int > > sampleinterval_
Definition: attriboutput.h:187
#define mExpClass(module)
Definition: commondefs.h:157
TypeSet< Interval< int > > sampleinterval_
Definition: attriboutput.h:274
SeisTrcWriter * writer_
Definition: attriboutput.h:193
Seismics.
Definition: segydirectdef.h:20
DataPointSet & datapointset_
Definition: attriboutput.h:376
Data2DHolder * output_
Definition: attriboutput.h:277
TypeSet< int > desoutputs_
Definition: attriboutput.h:88
Scaler * scaler_
Definition: attriboutput.h:197
virtual void setPossibleVolume(const TrcKeyZSampling &)
Definition: attriboutput.h:71
void setTrcGrow(bool yn)
Definition: attriboutput.h:168
~TableOutput()
Definition: attriboutput.h:357
Set of data points with group selection.
Definition: datapointset.h:47
const Seis::SelData & getSelData()
Definition: attriboutput.h:69
TypeSet< Seis::DataType > outptypes_
Definition: attriboutput.h:198
bool arebiddupl_
Definition: attriboutput.h:378
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
virtual RegularSeisDataPack * getDataPack(float)
Definition: attriboutput.h:53
uiString errmsg_
Definition: attriboutput.h:190
void set2D(bool)
Definition: attriboutput.h:220
void setUndefValue(float v)
Definition: attriboutput.h:116
void setOutpNames(const BufferStringSet &nms)
Definition: attriboutput.h:171
~LocationOutput()
Definition: attriboutput.h:289
bool init()
float maxdisttrcs_
Definition: attriboutput.h:380
Class that holds 2d seismic data or attribute data.
Definition: attribdataholder.h:78
Definition: seiswrite.h:38
virtual bool getDesiredVolume(TrcKeyZSampling &) const
Definition: attriboutput.h:46
VolumeDataPack for 2D and 3D seismic data.
Definition: seisdatapack.h:42
virtual bool finishWrite()
Definition: attriboutput.h:72
virtual bool useCoords(Pos::SurvID) const
Definition: attriboutput.h:48
Seismic trace storage Output.
Definition: attriboutput.h:143
Definition: uistring.h:88
void setPossibleBinIDDuplic()
Definition: attriboutput.h:373
Set of BufferString objects.
Definition: bufstringset.h:25
float stdtrcsz_
Definition: attriboutput.h:239
virtual bool writeTrc()
Definition: attriboutput.h:67
void setDesiredOutputs(const TypeSet< int > &outputs)
Definition: attriboutput.h:57
Interval of values.
Definition: commontypes.h:27
SelType
Definition: seistype.h:25
Output at an assorted selection of traces.
Definition: attriboutput.h:322
bool useCoords(Pos::SurvID) const
Definition: attriboutput.h:221
Output at discrete locations ( For example a pickset. )
Definition: attriboutput.h:285
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
virtual void set2D(bool yn=true)
Definition: attriboutput.h:151
virtual const uiString errMsg() const
Definition: attriboutput.h:81
Index_Type SurvID
Definition: commontypes.h:45
virtual void deleteTrc()
Definition: attriboutput.h:68
#define mImplDefAttribOutputFns(typ)
Definition: attriboutput.h:94
void setGeometry(const TrcKeyZSampling &cs)
Definition: attriboutput.h:114
DataPointSet * poszvalues_
Definition: attriboutput.h:238
void setMaxDistBetwTrcs(float maxdist)
Definition: attriboutput.h:371
TypeSet< float > distpicktrc_
Definition: attriboutput.h:381
SeisTrc * getTrc()
Definition: attriboutput.h:167
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
float maxdisttrcs_
Definition: attriboutput.h:242
float stdstarttime_
Definition: attriboutput.h:240
uiString errmsg_
Definition: attriboutput.h:275
bool storinited_
Definition: attriboutput.h:195
virtual SeisTrc * getTrc()
Definition: attriboutput.h:66
Position.
Definition: commontypes.h:38
Simple 2D Output.
Definition: attriboutput.h:250
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:24
Scaling of floating point numbers.
Definition: scaler.h:30
virtual void getDesiredOutputs(TypeSet< int > &outputs) const
Definition: attriboutput.h:55
IOPar * auxpars_
Definition: attriboutput.h:188
FixedString Output()
Definition: keystrs.h:97
bool is2d_
Definition: attriboutput.h:189
contains input (sub-)selection data from a cube or lineset
Definition: seisselection.h:78
BinIDValueSet & bidvalset_
Definition: attriboutput.h:308
bool getDesiredVolume(TrcKeyZSampling &) const
Definition: attriboutput.h:291
TrcKeyZSampling desiredvolume_
Definition: attriboutput.h:186
Index_Type GeomID
Definition: commontypes.h:48
virtual const uiString errMsg() const
Definition: attriboutput.h:174
Attribute DataPack Output.
Definition: attriboutput.h:105
virtual const RegularSeisDataPack * getDataPack() const
Definition: attriboutput.h:52
Holds the attribute data.
Definition: attribdataholder.h:39
SeisTrc * trc_
Definition: attriboutput.h:192
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
virtual bool useCoords(Pos::SurvID) const
Definition: attriboutput.h:152
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
Seismic trace.
Definition: seistrc.h:31
BufferString errmsg_
Definition: horizontracker.h:117
BinID prevpos_
Definition: attriboutput.h:194
set of seismic traces.
Definition: seisbuf.h:28
Output at a selection of locations.
Definition: attriboutput.h:353
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:21
float outval_
Definition: attriboutput.h:241
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
2D trace Output with variable Z range.
Definition: attriboutput.h:213
int firstattrcol_
Definition: attriboutput.h:379
const char * errMsg() const
Definition: horizontracker.h:59
bool arebiddupl_
Definition: attriboutput.h:310
BufferString attribname_
Definition: attriboutput.h:196
2D point or vector class.
Definition: commontypes.h:58
static uiString sEmptyString()
Definition: uistrings.h:307
void setOutpTypes(const TypeSet< Seis::DataType > &typ)
Definition: attriboutput.h:169
Base class for attribute Output.
Definition: attriboutput.h:41
Description of binary data.
Definition: bindatadesc.h:41
BufferString datatype_
Definition: attriboutput.h:200
BufferStringSet outpnames_
Definition: attriboutput.h:201
bool getDesiredVolume(TrcKeyZSampling &) const
Definition: attriboutput.h:359
Definition: ptrman.h:200
Semblance Attribute.
Definition: attribdataholder.h:21
bool growtrctosi_
Definition: attriboutput.h:199
DBKey & storid_
Definition: attriboutput.h:185
Seis::SelData * seldata_
Definition: attriboutput.h:87

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