OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "generalmod.h"
15 
16 #include "bindatadesc.h"
17 #include "bufstringset.h"
18 #include "datapack.h"
19 #include "position.h"
20 #include "trckeysampling.h"
21 #include "valseries.h"
22 
23 template <class T> class Array1D;
24 template <class T> class Array2D;
25 template <class T> class Array3D;
26 template <class T> class Array3DImpl;
27 
28 class FlatPosData;
29 class Scaler;
30 class TaskRunner;
31 namespace ZDomain { class Info; }
32 
33 
36 mExpClass(General) PointDataPack : public DataPack
37 {
38 public:
39 
40  virtual int size() const = 0;
41  virtual BinID binID(int) const = 0;
42  virtual float z(int) const = 0;
43  virtual Coord coord(int) const;
44  virtual int trcNr(int) const { return 0; }
45 
46  virtual bool simpleCoords() const { return true; }
48  virtual bool isOrdered() const { return false;}
50 
51 protected:
52 
53  PointDataPack( const char* categry )
54  : DataPack( categry ) {}
55 
56 };
57 
64 mExpClass(General) FlatDataPack : public DataPack
65 {
66 public:
67  FlatDataPack(const char* categry,
72 
73  virtual Array2D<float>& data() { return *arr2d_; }
74  const Array2D<float>& data() const
75  { return const_cast<FlatDataPack*>(this)
76  ->data(); }
77  virtual float getPosDistance(bool dim0,float posfidx) const
78  { return mUdf(float); }
79 
80  virtual FlatPosData& posData() { return posdata_; }
81  const FlatPosData& posData() const
82  { return const_cast<FlatDataPack*>(this)
83  ->posData(); }
84  virtual const char* dimName( bool dim0 ) const
85  { return dim0 ? "X1" : "X2"; }
86 
87  virtual Coord3 getCoord(int,int) const;
90 
91  virtual bool posDataIsCoord() const { return true; }
92  // Alternative positions for dim0
93  virtual void getAltDim0Keys(BufferStringSet&) const {}
95  virtual double getAltDim0Value(int ikey,int idim0) const;
96  virtual bool dimValuesInInt(const char* key) const
97  { return false; }
98 
99  virtual void getAuxInfo(int idim0,int idim1,IOPar&) const {}
100 
101  virtual float nrKBytes() const;
102  virtual void dumpInfo(IOPar&) const;
103 
104  virtual int size(bool dim0) const;
105 
106 protected:
107 
108  FlatDataPack(const char* category);
111 
114 
115 private:
116 
117  void init();
118 
119 };
120 
121 
125 {
126 public:
127  MapDataPack(const char* cat,
128  Array2D<float>*);
130 
133  const Array2D<float>& rawData() const { return *arr2d_; }
134  const FlatPosData& rawPosData() const { return posdata_; }
135  void setDimNames(const char*,const char*,bool forxy);
136  const char* dimName( bool dim0 ) const;
137 
139  bool posDataIsCoord() const { return isposcoord_; }
140  void setPosCoord(bool yn);
142  virtual void getAuxInfo(int idim0,int idim1,IOPar&) const;
144  StepInterval<double> crlrg,
145  bool,BufferStringSet*);
147 
149  StepInterval<double> dim1rg,
150  bool forxy );
151 
152 protected:
153 
154  float getValAtIdx(int,int) const;
155  friend class MapDataPackXYRotator;
156 
162 };
163 
164 
165 
170 {
171 public:
172 
173  virtual Array3D<float>& data();
174  const Array3D<float>& data() const;
175 
176  virtual const char* dimName(char dim) const;
177  virtual double getPos(char dim,int idx) const;
178  int size(char dim) const;
179  virtual float nrKBytes() const;
180  virtual void dumpInfo(IOPar&) const;
181 
182 
183 protected:
184  VolumeDataPack(const char* categry,
185  Array3D<float>*);
188 
189  VolumeDataPack(const char* category);
192 
194 };
195 
196 
197 
200 mExpClass(General) SeisDataPack : public DataPack
201 {
202 public:
204 
205  virtual bool is2D() const = 0;
206  virtual int nrTrcs() const = 0;
207  virtual TrcKey getTrcKey(int globaltrcidx) const = 0;
208  virtual int getGlobalIdx(const TrcKey&) const = 0;
209  virtual int getNearestGlobalIdx(const TrcKey&) const;
210 
211  void getPath(TrcKeyPath&) const;
212 
213  virtual bool addComponent(const char* nm) = 0;
214 
215  virtual const StepInterval<float>& getZRange() const = 0;
216 
218  int comp,int globaltrcidx) const;
219  OffsetValueSeries<float> getTrcStorage(int comp,int globaltrcidx);
220 
221  const float* getTrcData(int comp,int globaltrcidx) const;
222  float* getTrcData(int comp,int globaltrcidx);
223 
224  bool getCopiedTrcData(int comp,int globaltrcidx,
225  Array1D<float>&) const;
226 
227  int nrComponents() const
228  { return arrays_.size(); }
229  bool isEmpty() const
230  { return arrays_.isEmpty(); }
231  bool validComp( int comp ) const
232  { return arrays_.validIdx( comp ); }
233  void setComponentName(const char*,int comp=0);
234  const char* getComponentName(int comp=0) const;
235 
236  static const char* categoryStr(bool isvertical,bool is2d);
237 
238  const Array3DImpl<float>& data(int component=0) const;
239  Array3DImpl<float>& data(int component=0);
240 
241  void setZDomain(const ZDomain::Info&);
242  const ZDomain::Info& zDomain() const
243  { return *zdomaininfo_; }
244 
245  void setScaler(const Scaler&);
246  void deleteScaler();
247  const Scaler* getScaler() const { return scaler_; }
248 
249  void setRefNrs( const TypeSet<float>& refnrs )
250  { refnrs_ = refnrs; }
251  float getRefNr(int globaltrcidx) const;
252 
253  const BinDataDesc& getDataDesc() const { return desc_; }
254  void setDataDesc(const BinDataDesc&);
255  //<! Will remove incompatible arrays if any
256 
257  float nrKBytes() const;
258  void dumpInfo(IOPar&) const;
259  void setRandomLineID(int);
260  int getRandomLineID() const;
261 
262  int getComponentIdx(const char* nm,
263  int defcompidx=-1) const;
264 
265 protected:
266  SeisDataPack(const char*,const BinDataDesc*);
267 
268  bool addArray(int sz0,int sz1,int sz2);
269  bool addArrayNoInit(int sz0,int sz1,int sz2);
270 
276  const Scaler* scaler_;
277  int rdlid_;
278 };
279 
SeisDataPack::scaler_
const Scaler * scaler_
Definition: datapackbase.h:276
ZDomain
Definition: zdomain.h:20
ZDomain::Info
Information of z-domain.
Definition: zdomain.h:93
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
SeisDataPack::getGlobalIdx
virtual int getGlobalIdx(const TrcKey &) const =0
MapDataPack::MapDataPack
MapDataPack(const char *cat, Array2D< float > *)
MapDataPack::xyrotposdata_
FlatPosData & xyrotposdata_
Definition: datapackbase.h:158
FlatDataPack::nrKBytes
virtual float nrKBytes() const
SeisDataPack::getRandomLineID
int getRandomLineID() const
SeisDataPack::~SeisDataPack
~SeisDataPack()
SeisDataPack::validComp
bool validComp(int comp) const
Definition: datapackbase.h:231
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
SeisDataPack::SeisDataPack
SeisDataPack(const char *, const BinDataDesc *)
FlatDataPack::posData
virtual FlatPosData & posData()
Definition: datapackbase.h:80
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
SeisDataPack::setComponentName
void setComponentName(const char *, int comp=0)
valseries.h
MapDataPack::~MapDataPack
~MapDataPack()
SeisDataPack::zdomaininfo_
ZDomain::Info * zdomaininfo_
Definition: datapackbase.h:274
FlatDataPack::posData
const FlatPosData & posData() const
Definition: datapackbase.h:81
SeisDataPack::getDataDesc
const BinDataDesc & getDataDesc() const
Definition: datapackbase.h:253
SeisDataPack::componentnames_
BufferStringSet componentnames_
Definition: datapackbase.h:271
PointDataPack::coord
virtual Coord coord(int) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
SeisDataPack::setZDomain
void setZDomain(const ZDomain::Info &)
VolumeDataPack::data
virtual Array3D< float > & data()
SeisDataPack::desc_
BinDataDesc desc_
Definition: datapackbase.h:275
PointDataPack
DataPack for point data.
Definition: datapackbase.h:37
VolumeDataPack::VolumeDataPack
VolumeDataPack(const char *categry, Array3D< float > *)
Array3D become mine (of course)
VolumeDataPack::nrKBytes
virtual float nrKBytes() const
VolumeDataPack::~VolumeDataPack
~VolumeDataPack()
SeisDataPack::addArray
bool addArray(int sz0, int sz1, int sz2)
VolumeDataPack::VolumeDataPack
VolumeDataPack(const char *category)
FlatDataPack::data
const Array2D< float > & data() const
Definition: datapackbase.h:74
SeisDataPack::setDataDesc
void setDataDesc(const BinDataDesc &)
Array3DImpl
Implementation of Array3D.
Definition: arrayndimpl.h:151
SeisDataPack::getTrcStorage
OffsetValueSeries< float > getTrcStorage(int comp, int globaltrcidx)
FlatDataPack::getCoord
virtual Coord3 getCoord(int, int) const
SeisDataPack::getPath
void getPath(TrcKeyPath &) const
VolumeDataPack::arr3d_
Array3D< float > * arr3d_
Definition: datapackbase.h:193
MapDataPack::initXYRotArray
void initXYRotArray(TaskRunner *=0)
SeisDataPack::getTrcStorage
const OffsetValueSeries< float > getTrcStorage(int comp, int globaltrcidx) const
Array1D
Array1D ( Subclass of ArrayND ) is a one dimensional array.
Definition: arraynd.h:111
SeisDataPack::setScaler
void setScaler(const Scaler &)
SeisDataPack::is2D
virtual bool is2D() const =0
SeisDataPack::getComponentIdx
int getComponentIdx(const char *nm, int defcompidx=-1) const
SeisDataPack::nrKBytes
float nrKBytes() const
FlatDataPack::getPosDistance
virtual float getPosDistance(bool dim0, float posfidx) const
Definition: datapackbase.h:77
SeisDataPack::setRefNrs
void setRefNrs(const TypeSet< float > &refnrs)
Definition: datapackbase.h:249
SeisDataPack::refnrs_
TypeSet< float > refnrs_
Definition: datapackbase.h:273
OffsetValueSeries
ValueSeries of offsets.
Definition: valseries.h:70
FlatPosData
Positioning of flat 'bulk' data. Only the 'x1' axis can be irregular.
Definition: flatposdata.h:26
FlatDataPack::data
virtual Array2D< float > & data()
Definition: datapackbase.h:73
Array3D
Array3D ( Subclass of ArrayND ) is a three dimensional array.
Definition: arraynd.h:162
VolumeDataPack::data
const Array3D< float > & data() const
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
StepInterval< double >
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
FlatDataPack::dimName
virtual const char * dimName(bool dim0) const
Definition: datapackbase.h:84
MapDataPack::data
Array2D< float > & data()
SeisDataPack::setRandomLineID
void setRandomLineID(int)
SeisDataPack
DataPack for volume data. Should be renamed to VolumeDataPack later.
Definition: datapackbase.h:201
PointDataPack::size
virtual int size() const =0
SeisDataPack::nrTrcs
virtual int nrTrcs() const =0
Scaler
Scaling of floating point numbers.
Definition: scaler.h:33
MapDataPack::setProps
void setProps(StepInterval< double > inlrg, StepInterval< double > crlrg, bool, BufferStringSet *)
VolumeDataPack
DataPack for volume data, where the dims correspond to inl/crl/z .
Definition: datapackbase.h:170
SeisDataPack::rdlid_
int rdlid_
Definition: datapackbase.h:277
MapDataPack::rawData
const Array2D< float > & rawData() const
Definition: datapackbase.h:133
MapDataPack::xyrotarr2d_
Array2D< float > * xyrotarr2d_
Definition: datapackbase.h:157
SeisDataPack::getRefNr
float getRefNr(int globaltrcidx) const
PointDataPack::isOrdered
virtual bool isOrdered() const
If yes, one can draw a line between the pts.
Definition: datapackbase.h:48
MapDataPack::getValAtIdx
float getValAtIdx(int, int) const
FlatDataPack::~FlatDataPack
~FlatDataPack()
FlatDataPack::FlatDataPack
FlatDataPack(const FlatDataPack &)
SeisDataPack::getCopiedTrcData
bool getCopiedTrcData(int comp, int globaltrcidx, Array1D< float > &) const
MapDataPack::isposcoord_
bool isposcoord_
Definition: datapackbase.h:159
FlatDataPack::dimValuesInInt
virtual bool dimValuesInInt(const char *key) const
Definition: datapackbase.h:96
FlatDataPack::getAltDim0Value
virtual double getAltDim0Value(int ikey, int idim0) const
SeisDataPack::isEmpty
bool isEmpty() const
Definition: datapackbase.h:229
SeisDataPack::getTrcData
const float * getTrcData(int comp, int globaltrcidx) const
PointDataPack::PointDataPack
PointDataPack(const char *categry)
Definition: datapackbase.h:53
TaskRunner
Class that can execute a task.
Definition: task.h:170
FlatDataPack
DataPack for flat data.
Definition: datapackbase.h:65
VolumeDataPack::getPos
virtual double getPos(char dim, int idx) const
BinDataDesc
Description of binary data.
Definition: bindatadesc.h:43
PointDataPack::z
virtual float z(int) const =0
SeisDataPack::nrComponents
int nrComponents() const
Definition: datapackbase.h:227
FlatDataPack::posdata_
FlatPosData & posdata_
Definition: datapackbase.h:113
MapDataPack::getAuxInfo
virtual void getAuxInfo(int idim0, int idim1, IOPar &) const
SeisDataPack::dumpInfo
void dumpInfo(IOPar &) const
FlatDataPack::FlatDataPack
FlatDataPack(const char *categry, Array2D< float > *)
Array2D become mine (of course)
FlatDataPack::getAltDim0Keys
virtual void getAltDim0Keys(BufferStringSet &) const
First one is 'default'.
Definition: datapackbase.h:93
MapDataPack::setDimNames
void setDimNames(const char *, const char *, bool forxy)
datapack.h
position.h
FlatDataPack::init
void init()
SeisDataPack::data
const Array3DImpl< float > & data(int component=0) const
SeisDataPack::deleteScaler
void deleteScaler()
SeisDataPack::data
Array3DImpl< float > & data(int component=0)
SeisDataPack::getTrcKey
virtual TrcKey getTrcKey(int globaltrcidx) const =0
MapDataPack::setPosCoord
void setPosCoord(bool yn)
int,int = Array2D position
MapDataPack::axeslbls_
TypeSet< BufferString > axeslbls_
Definition: datapackbase.h:160
TrcKey
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:28
SeisDataPack::getComponentName
const char * getComponentName(int comp=0) const
FlatDataPack::getAuxInfo
virtual void getAuxInfo(int idim0, int idim1, IOPar &) const
Definition: datapackbase.h:99
bindatadesc.h
bufstringset.h
MapDataPack::dimName
const char * dimName(bool dim0) const
Alternatively, it can be in Inl/Crl.
SeisDataPack::addArrayNoInit
bool addArrayNoInit(int sz0, int sz1, int sz2)
FlatDataPack::FlatDataPack
FlatDataPack(const char *category)
SeisDataPack::categoryStr
static const char * categoryStr(bool isvertical, bool is2d)
VolumeDataPack::dumpInfo
virtual void dumpInfo(IOPar &) const
MapDataPack
DataPack for 2D data to be plotted on a Map.
Definition: datapackbase.h:125
FlatDataPack::size
virtual int size(bool dim0) const
MapDataPack::posDataIsCoord
bool posDataIsCoord() const
Definition: datapackbase.h:139
VolumeDataPack::size
int size(char dim) const
SeisDataPack::getTrcData
float * getTrcData(int comp, int globaltrcidx)
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
DataPack
A data packet: data+positioning and more that needs to be shared.
Definition: datapack.h:34
MapDataPack::rawPosData
const FlatPosData & rawPosData() const
Definition: datapackbase.h:134
PointDataPack::simpleCoords
virtual bool simpleCoords() const
If true, coords are always SI().tranform(b)
Definition: datapackbase.h:46
VolumeDataPack::dimName
virtual const char * dimName(char dim) const
trckeysampling.h
FlatDataPack::posDataIsCoord
virtual bool posDataIsCoord() const
Definition: datapackbase.h:91
SeisDataPack::getZRange
virtual const StepInterval< float > & getZRange() const =0
PointDataPack::binID
virtual BinID binID(int) const =0
MapDataPack::initlock_
Threads::Lock initlock_
Definition: datapackbase.h:161
MapDataPack::posData
FlatPosData & posData()
SeisDataPack::zDomain
const ZDomain::Info & zDomain() const
Definition: datapackbase.h:242
SeisDataPack::addComponent
virtual bool addComponent(const char *nm)=0
SeisDataPack::arrays_
ObjectSet< Array3DImpl< float > > arrays_
Definition: datapackbase.h:272
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
FlatDataPack::dumpInfo
virtual void dumpInfo(IOPar &) const
SeisDataPack::getNearestGlobalIdx
virtual int getNearestGlobalIdx(const TrcKey &) const
FlatDataPack::arr2d_
Array2D< float > * arr2d_
Definition: datapackbase.h:112
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
Array2D
Array2D ( Subclass of ArrayND ) is a two dimensional array.
Definition: arraynd.h:140
PointDataPack::trcNr
virtual int trcNr(int) const
Definition: datapackbase.h:44
SeisDataPack::getScaler
const Scaler * getScaler() const
Definition: datapackbase.h:247
TypeSet< BufferString >
MapDataPack::setRange
void setRange(StepInterval< double > dim0rg, StepInterval< double > dim1rg, bool forxy)

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