OpendTect  6.3
datapackbase.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: Nanne Hemstra and Helene Huck
8  Date: January 2007
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "generalmod.h"
14 
15 #include "bindatadesc.h"
16 #include "bufstringset.h"
17 #include "datapack.h"
18 #include "position.h"
19 #include "trckeysampling.h"
20 #include "valseries.h"
21 #include "arrayndimpl.h"
22 
23 class FlatPosData;
24 class Scaler;
25 class TaskRunner;
26 namespace ZDomain { class Info; }
27 
28 
31 mExpClass(General) PointDataPack : public DataPack
32 {
33 public:
34 
36 
37  virtual int size() const = 0;
38  virtual BinID binID(int) const = 0;
39  virtual float z(int) const = 0;
40  virtual Coord coord(int) const;
41  virtual int trcNr(int) const { return 0; }
42 
43  virtual bool simpleCoords() const { return true; }
45  virtual bool isOrdered() const { return false;}
47 
48 protected:
49 
50  PointDataPack(const char*);
51  ~PointDataPack();
52 
53 };
54 
61 mExpClass(General) FlatDataPack : public DataPack
62 {
63 public:
64  FlatDataPack(const char* categry,
68 
69  virtual Array2D<float>& data() { return *arr2d_; }
70  const Array2D<float>& data() const
71  { return const_cast<FlatDataPack*>(this)
72  ->data(); }
73 
74  virtual FlatPosData& posData() { return posdata_; }
75  const FlatPosData& posData() const
76  { return const_cast<FlatDataPack*>(this)
77  ->posData(); }
78  virtual const char* dimName( bool dim0 ) const
79  { return dim0 ? "X1" : "X2"; }
80 
81  virtual Coord3 getCoord(int,int) const;
84 
85  virtual bool isVertical() const { return true; }
86  virtual bool posDataIsCoord() const { return true; }
87  // Alternative positions for dim0
88  virtual void getAltDim0Keys(BufferStringSet&) const {}
90  virtual double getAltDim0Value(int ikey,int idim0) const;
91  virtual bool dimValuesInInt(const char* key) const
92  { return false; }
93 
94  virtual void getAuxInfo(int idim0,int idim1,IOPar&) const {}
95 
96  virtual int size(bool dim0) const;
97 
98 protected:
99 
100  FlatDataPack(const char* category);
103  ~FlatDataPack();
104 
107 
108  virtual float gtNrKBytes() const;
109  virtual void doDumpInfo(IOPar&) const;
110  virtual int gtNrArrays() const { return 1; }
111  virtual const ArrayND<float>* gtArrayData(int) const { return arr2d_; }
112 
113 private:
114 
115  void init();
116 
117 };
118 
119 
123 {
124 public:
125  MapDataPack(const char* cat,
126  Array2D<float>*);
129 
130  Array2D<float>& data();
131  const Array2D<float>& rawData() const { return *arr2d_; }
132  FlatPosData& posData();
133  void setDimNames(const char*,const char*,bool forxy);
134  const char* dimName( bool dim0 ) const;
135 
137  bool posDataIsCoord() const { return isposcoord_; }
138  void setPosCoord(bool yn);
140  virtual void getAuxInfo(int idim0,int idim1,IOPar&) const;
141  void setProps(StepInterval<double> inlrg,
142  StepInterval<double> crlrg,
143  bool,BufferStringSet*);
144  void initXYRotArray(TaskRunner* = 0 );
145 
146 protected:
147 
148  ~MapDataPack();
149 
150  float getValAtIdx(int,int) const;
151  friend class MapDataPackXYRotater;
152 
158 };
159 
160 
161 
165 {
166 public:
167 
169 
170  virtual VolumeDataPack* getSimilar() const = 0;
171  virtual bool is2D() const = 0;
172  virtual int nrTrcs() const = 0;
173  virtual TrcKey getTrcKey(int globaltrcidx) const = 0;
174  virtual int getGlobalIdx(const TrcKey&) const = 0;
175  virtual int getNearestGlobalIdx(const TrcKey&) const;
176  virtual int getRandomLineID() const { return -1; }
177 
178  void getPath(TrcKeyPath&) const;
179 
180  virtual bool addComponent(const char* nm) = 0;
181 
182  virtual const StepInterval<float>& getZRange() const = 0;
183 
185  const OffsetValueSeries<float> getTrcStorage(
186  int comp,int globaltrcidx) const;
187  OffsetValueSeries<float> getTrcStorage(int comp,int globaltrcidx);
188 
190  const float* getTrcData(int comp,int globaltrcidx) const;
191  float* getTrcData(int comp,int globaltrcidx);
192 
193  bool getCopiedTrcData(int comp,int globaltrcidx,
194  Array1D<float>&) const;
195 
196  int nrComponents() const
197  { return arrays_.size(); }
198  bool isEmpty() const
199  { return arrays_.isEmpty(); }
200  bool validComp( int comp ) const
201  { return arrays_.validIdx( comp ); }
202  void setComponentName(const char*,int comp=0);
203  const char* getComponentName(int comp=0) const;
204  int getComponentIdx(const char* nm,
205  int defcompidx=-1) const;
206 
207  static const char* categoryStr(bool isvertical,bool is2d);
208 
209  const Array3DImpl<float>& data(int component=0) const;
210  Array3DImpl<float>& data(int component=0);
211 
212  void setZDomain(const ZDomain::Info&);
213  const ZDomain::Info& zDomain() const
214  { return *zdomaininfo_; }
215 
216  void setScaler(const Scaler&);
217  void deleteScaler();
218  const Scaler* getScaler() const { return scaler_; }
219 
220  void setRefNrs( const TypeSet<float>& refnrs )
221  { refnrs_ = refnrs; }
222  float getRefNr(int globaltrcidx) const;
223 
224  const BinDataDesc& getDataDesc() const { return desc_; }
225  void setDataDesc(const BinDataDesc&);
226  //<! Will remove incompatible arrays if any
227 
228 protected:
229 
230  VolumeDataPack(const char*,const BinDataDesc*);
231  ~VolumeDataPack();
232 
233  bool addArray(int sz0,int sz1,int sz2);
234 
240  const Scaler* scaler_;
241 
242  virtual int gtNrArrays() const { return arrays_.size(); }
243  virtual const ArrayND<float>* gtArrayData( int iarr ) const
244  { return arrays_.validIdx(iarr)
245  ? arrays_[iarr] : 0; }
246 
247  float gtNrKBytes() const;
248  void doDumpInfo(IOPar&) const;
249 
250 };
#define mExpClass(module)
Definition: commondefs.h:157
Threads::Lock initlock_
Definition: datapackbase.h:157
const Array2D< float > & rawData() const
Definition: datapackbase.h:131
virtual bool dimValuesInInt(const char *key) const
Definition: datapackbase.h:91
bool posDataIsCoord() const
Definition: datapackbase.h:137
DataPack for 2D data to be plotted on a Map.
Definition: datapackbase.h:122
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class...
Definition: threadlock.h:51
Positioning of flat &#39;bulk&#39; data. Only the &#39;x1&#39; axis can be irregular.
Definition: flatposdata.h:24
const Array2D< float > & data() const
Definition: datapackbase.h:70
bool is2D(GeomType gt)
Definition: seistype.h:32
virtual const ArrayND< float > * gtArrayData(int iarr) const
Definition: datapackbase.h:243
virtual bool simpleCoords() const
If true, coords are always SI().tranform(b)
Definition: datapackbase.h:43
Array2D< float > * xyrotarr2d_
Definition: datapackbase.h:153
bool init()
virtual const ArrayND< float > * gtArrayData(int) const
Definition: datapackbase.h:111
virtual FlatPosData & posData()
Definition: datapackbase.h:74
DataPack for volume data.
Definition: datapackbase.h:164
Array2D< float > * arr2d_
Definition: datapackbase.h:105
BufferStringSet axeslbls_
Definition: datapackbase.h:156
virtual int gtNrArrays() const
Definition: datapackbase.h:242
virtual bool isVertical() const
Definition: datapackbase.h:85
ValueSeries of offsets.
Definition: valseriesimpl.h:22
virtual Array2D< float > & data()
Definition: datapackbase.h:69
virtual const char * dimName(bool dim0) const
Definition: datapackbase.h:78
Set of BufferString objects.
Definition: bufstringset.h:25
virtual bool isOrdered() const
If yes, one can draw a line between the pts.
Definition: datapackbase.h:45
#define mDeclMonitorableAssignment(clss)
like mDeclAbstractMonitorableAssignment but for non-abstract subclasses. Implements the clone() metho...
Definition: monitor.h:111
DataPack for point data.
Definition: datapackbase.h:31
FlatPosData & xyrotposdata_
Definition: datapackbase.h:154
const Scaler * scaler_
Definition: datapackbase.h:240
bool isposcoord_
Definition: datapackbase.h:155
A data packet: data+positioning and more that needs to be shared.
Definition: datapack.h:39
size_type size() const
Definition: objectset.h:48
Set of pointers to objects.
Definition: commontypes.h:28
virtual bool posDataIsCoord() const
Definition: datapackbase.h:86
3D point or vector
Definition: commontypes.h:57
virtual int trcNr(int) const
Definition: datapackbase.h:41
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
BinDataDesc desc_
Definition: datapackbase.h:239
Class that can execute a task.
Definition: task.h:193
ZDomain::Info * zdomaininfo_
Definition: datapackbase.h:238
virtual void getAltDim0Keys(BufferStringSet &) const
First one is &#39;default&#39;.
Definition: datapackbase.h:88
BufferStringSet componentnames_
Definition: datapackbase.h:235
virtual int gtNrArrays() const
Definition: datapackbase.h:110
Scaling of floating point numbers.
Definition: scaler.h:30
FlatPosData & posdata_
Definition: datapackbase.h:106
void setRefNrs(const TypeSet< float > &refnrs)
Definition: datapackbase.h:220
TypeSet< float > refnrs_
Definition: datapackbase.h:237
const Scaler * getScaler() const
Definition: datapackbase.h:218
const BinDataDesc & getDataDesc() const
Definition: datapackbase.h:224
int nrComponents() const
Definition: datapackbase.h:196
virtual int getRandomLineID() const
Definition: datapackbase.h:176
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
virtual bool validIdx(int64_t) const
Definition: objectset.h:306
DataPack for flat data.
Definition: datapackbase.h:61
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
2D point or vector class.
Definition: commontypes.h:58
const FlatPosData & posData() const
Definition: datapackbase.h:75
const ZDomain::Info & zDomain() const
Definition: datapackbase.h:213
Description of binary data.
Definition: bindatadesc.h:41
bool isEmpty() const
Definition: datapackbase.h:198
#define mDeclAbstractMonitorableAssignment(clss)
Monitorable subclasses: assignment and comparison.
Definition: monitor.h:105
bool validComp(int comp) const
Definition: datapackbase.h:200
ObjectSet< Array3DImpl< float > > arrays_
Definition: datapackbase.h:236
Information of z-domain.
Definition: zdomain.h:96
Definition: zdomain.h:18
virtual void getAuxInfo(int idim0, int idim1, IOPar &) const
Definition: datapackbase.h:94

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