OpendTect  6.3
seistrctr.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: A.H. Bril
8  Date: 10-5-1995
9 ________________________________________________________________________
10 
11 Translators for seismic traces.
12 
13 -*/
14 
15 #include "seisinfo.h"
16 #include "transl.h"
17 #include "ioobjctxt.h"
18 #include "samplingdata.h"
19 #include "basiccompinfo.h"
20 
21 class SeisTrc;
22 class LinScaler;
23 class SeisTrcBuf;
24 class SeisTrcInfo;
25 class TrcKeyZSampling;
26 class SeisPacketInfo;
27 class BufferStringSet;
28 namespace PosInfo { class CubeData; }
29 namespace Seis { class SelData; }
30 
31 
32 
75 public:
77 
78  static const char* sKeyDefault3D() { return "Cube"; }
79  static const char* sKeyDefault2D() { return "2D Cube"; }
80  static const char* sKeyDefaultAttrib() { return "Attribute"; }
81  const char* getSurveyDefaultKey(const IOObj*) const;
82 };
83 
84 
87 public:
88 
97  {
98  friend class SeisTrcTranslator;
99 
100  protected:
101  ComponentData( const char* nm="Seismic Data" )
102  : BasicComponentInfo(nm) {}
104  : BasicComponentInfo(cd) {}
105  ComponentData(const SeisTrc&,int icomp=0,
106  const char* nm="Seismic Data");
107  void operator=(const ComponentData&);
109  };
110 
111 
121  {
122  friend class SeisTrcTranslator;
123 
124  public:
125 
126  int destidx;
127  const ComponentData& org;
128 
129  protected:
130 
131  TargetComponentData( const ComponentData& c,
132  int idx )
133  : ComponentData(c), org(c), destidx(idx) {}
134 
135  void operator=(const TargetComponentData&);
137  };
138 
139  SeisTrcTranslator(const char*,const char*);
140  virtual ~SeisTrcTranslator();
141 
149  bool initWrite(Conn*,const SeisTrc&);
155  virtual Conn* curConn() { return conn_; }
156 
158  const Seis::SelData* selData() const { return seldata_; }
161  componentInfo() const { return tarcds_; }
162  const SamplingData<float>& inpSD() const { return insd_; }
163  int inpNrSamples() const { return innrsamples_; }
164  const SamplingData<float>& outSD() const { return outsd_; }
165  int outNrSamples() const { return outnrsamples_;}
166 
167  void setSelData( const Seis::SelData* t ) { seldata_ = t; }
169  bool commitSelections();
173  virtual bool readInfo(SeisTrcInfo&) { return false; }
174  virtual bool read(SeisTrc&) { return false; }
175  virtual bool skip( int nrtrcs=1 ) { return false; }
176  virtual bool write(const SeisTrc&);
177  // overrule if you don't need sorting/buffering
178 
179  virtual bool close();
180  uiString errMsg() const { return errmsg_; }
181 
182  virtual bool inlCrlSorted() const { return true; }
183  virtual int bytesOverheadPerTrace() const { return 240; }
184 
185  virtual void usePar(const IOPar&);
186 
187  inline int selComp( int nr=0 ) const { return inpfor_[nr]; }
188  inline int nrSelComps() const { return nrout_; }
189  SeisTrc* getEmpty();
192  SeisTrc* getFilled(const BinID&);
195  virtual bool supportsGoTo() const { return false; }
196  virtual bool goTo(const BinID&) { return false; }
197 
198  virtual void cleanUp();
200 
201  static bool getRanges(const DBKey&,TrcKeyZSampling&,
202  const char* linekey=0);
203  static bool getRanges(const IOObj&,TrcKeyZSampling&,
204  const char* linekey=0);
205 
206  virtual bool getGeometryInfo(PosInfo::CubeData&) const
207  { return false; }
208 
209  static bool is2D(const IOObj&,bool only_internal=false);
210  static bool isPS(const IOObj&);
211  bool isPS() const { return is_prestack; }
212  static bool isLineSet(const IOObj&);
216  static const char* sKeyIs2D();
217  static const char* sKeyIsPS();
218  static const char* sKeyRegWrite();
219  static const char* sKeySIWrite();
220 
221  // Use the following fns only if you _really_ know
222  // what you're doing.
223  void enforceRegularWrite( bool yn )
224  { enforce_regular_write = yn; }
225  void enforceSurvinfoWrite( bool yn )
226  { enforce_survinfo_write = yn; }
227 
228  Pos::GeomID curGeomID() const { return geomid_; }
229  void setCurGeomID( Pos::GeomID gid ) { geomid_ = gid; }
230 
231  virtual bool isUserSelectable(bool) const { return false; }
232  virtual int estimatedNrTraces() const { return -1; }
233 
234  void setComponentNames(const BufferStringSet&);
235  void getComponentNames(BufferStringSet&) const;
236 
237  bool haveWarnings() const;
238  const BufferStringSet& warnings() const { return warnings_; }
239 
240 protected:
241 
246 
248  bool is_2d;
252 
262 
263  virtual bool forRead() const;
264  void addComp(const DataCharacteristics&,
265  const char* nm=0,int dtype=0);
266 
267  void setDataType( int icomp, int d )
268  { cds_[icomp]->datatype = tarcds_[icomp]->datatype = d;}
269 
270  /* Subclasses will need to implement the following: */
271  virtual bool initRead_() { return true; }
272  virtual bool initWrite_(const SeisTrc&) { return true; }
273  virtual bool commitSelections_() { return true; }
274 
275  // These are called from the default write()
277  { return true; }
278  virtual bool dumpBlock();
279  virtual void blockDumped(int nrtrcs) {}
280  virtual bool writeTrc_(const SeisTrc&) { return false; }
281  // Buffer to be written when writeBlock() is called
283 
284  void prepareComponents(SeisTrc&,int actualsz) const;
285 
286  // Quick access to selected, like selComp() etc.
289 
292  virtual void addWarn(int,const char*);
293 
294  virtual bool implRemove(const IOObj*) const;
295  void removeAuxFiles(const IOObj&) const;
296 
297 private:
298 
299  int* inpfor_;
300  int nrout_;
301  int prevnr_;
303 
304  bool initConn(Conn*);
305  void enforceBounds();
306  bool writeBlock();
307 
308 public:
309 
310  void setIs2D( bool yn ) { is_2d = yn; }
311  void setIsPS( bool yn ) { is_prestack = yn; }
312 };
virtual bool isUserSelectable(bool) const
Definition: seistrctr.h:231
#define mExpClass(module)
Definition: commondefs.h:157
Seismic Trace translator.
Definition: seistrctr.h:72
BufferStringSet & warnings_
Definition: seistrctr.h:291
ComponentData ** inpcds_
Definition: seistrctr.h:287
Seismics.
Definition: segydirectdef.h:20
void getComponentNames(BufferStringSet &) const
virtual void cleanUp()
Prepare for new initialisation.
void setComponentNames(const BufferStringSet &)
bool initWrite(Conn *, const SeisTrc &)
ComponentData(const char *nm="Seismic Data")
Definition: seistrctr.h:101
TargetComponentData ** outcds_
Definition: seistrctr.h:288
int nrSelComps() const
Definition: seistrctr.h:188
Definition: ioobj.h:57
Info on one component.
Definition: basiccompinfo.h:21
virtual int bytesOverheadPerTrace() const
Definition: seistrctr.h:183
void setIs2D(bool yn)
Definition: seistrctr.h:310
bool is_prestack
Definition: seistrctr.h:249
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
const BufferStringSet & warnings() const
Definition: seistrctr.h:238
bool is_2d
Definition: seistrctr.h:248
Information for a packet of seismics, AKA tape header info.
Definition: seispacketinfo.h:23
bool is2D(GeomType gt)
Definition: seistype.h:32
int outnrsamples_
Definition: seistrctr.h:259
void prepareComponents(SeisTrc &, int actualsz) const
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
static const char * sKeySIWrite()
ObjectSet< TargetComponentData > tarcds_
Definition: seistrctr.h:256
void enforceSurvinfoWrite(bool yn)
Definition: seistrctr.h:225
Interval< int > samprg_
Definition: seistrctr.h:260
virtual bool read(SeisTrc &)
Definition: seistrctr.h:174
virtual bool supportsGoTo() const
Definition: seistrctr.h:195
virtual bool close()
virtual bool skip(int nrtrcs=1)
Definition: seistrctr.h:175
const ObjectSet< TargetComponentData > & componentInfo() const
Definition: seistrctr.h:161
virtual ~SeisTrcTranslator()
Definition: uistring.h:88
static bool isLineSet(const IOObj &)
virtual bool initWrite_(const SeisTrc &)
Definition: seistrctr.h:272
void removeAuxFiles(const IOObj &) const
Conn * conn_
Definition: seistrctr.h:242
SamplingData< float > insd_
Definition: seistrctr.h:253
Set of BufferString objects.
Definition: bufstringset.h:25
virtual bool implRemove(const IOObj *) const
void setSelData(const Seis::SelData *t)
Definition: seistrctr.h:167
bool writeBlock(std::ostream &, const void *, uint64_t)
const char * sKeyIs2D()
Definition: segybatchio.h:30
Definition: seistype.h:29
int innrsamples_
Definition: seistrctr.h:254
int inpNrSamples() const
Definition: seistrctr.h:163
int outNrSamples() const
Definition: seistrctr.h:165
Pos::GeomID curGeomID() const
Definition: seistrctr.h:228
static const char * sKeyDefaultAttrib()
Definition: seistrctr.h:80
int * inpfor_
Definition: seistrctr.h:299
Set of pointers to objects.
Definition: commontypes.h:28
const Seis::SelData * seldata_
Definition: seistrctr.h:257
BufferStringSet * compnms_
Definition: seistrctr.h:245
int nrout_
Definition: seistrctr.h:300
bool isPS(GeomType gt)
Definition: seistype.h:36
static bool getRanges(const DBKey &, TrcKeyZSampling &, const char *linekey=0)
mDefEmptyTranslatorGroupConstructor(SeisTrc) static const char *sKeyDefault3D()
Definition: seistrctr.h:76
Group of Translators. Has a static factory.
Definition: transl.h:54
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Definition: seistrctr.h:85
virtual Conn * curConn()
Definition: seistrctr.h:155
const ComponentData & org
Definition: seistrctr.h:127
byte-level data characteristics of stored data.
Definition: datachar.h:35
int lastinlwritten_
Definition: seistrctr.h:302
void addComp(const DataCharacteristics &, const char *nm=0, int dtype=0)
static const char * sKeyRegWrite()
TargetComponentData(const ComponentData &c, int idx)
Definition: seistrctr.h:131
virtual bool prepareWriteBlock(StepInterval< int > &, bool &)
Definition: seistrctr.h:276
bool initRead(Conn *, Seis::ReadMode rt=Seis::Prod)
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:32
const SamplingData< float > & outSD() const
Definition: seistrctr.h:164
Information for one component.
Definition: seistrctr.h:96
void setCurGeomID(Pos::GeomID gid)
Definition: seistrctr.h:229
virtual bool commitSelections_()
Definition: seistrctr.h:273
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:24
SeisTrcBuf & trcblock_
Definition: seistrctr.h:282
const SamplingData< float > & inpSD() const
Definition: seistrctr.h:162
virtual bool inlCrlSorted() const
Definition: seistrctr.h:182
bool enforce_survinfo_write
Definition: seistrctr.h:251
contains input (sub-)selection data from a cube or lineset
Definition: seisselection.h:78
static const char * sKeyDefault2D()
Definition: seistrctr.h:79
void setIsPS(bool yn)
Definition: seistrctr.h:311
Index_Type GeomID
Definition: commontypes.h:48
I/O Interpreter class for a certain object type.
Definition: transl.h:122
Definition: conn.h:31
ComponentData as it should be when the Translator puts it away.
Definition: seistrctr.h:120
SeisPacketInfo & packetInfo()
Definition: seistrctr.h:157
bool initConn(Conn *)
SamplingData< float > outsd_
Definition: seistrctr.h:258
virtual bool getGeometryInfo(PosInfo::CubeData &) const
Definition: seistrctr.h:206
Position info, often segmented.
Definition: posinfo.h:38
void enforceRegularWrite(bool yn)
Definition: seistrctr.h:223
SeisPacketInfo & pinfo_
Definition: seistrctr.h:243
virtual bool goTo(const BinID &)
Definition: seistrctr.h:196
const Seis::SelData * selData() const
Definition: seistrctr.h:158
ReadMode
Definition: seistype.h:29
virtual bool write(const SeisTrc &)
static const char * sKeyIsPS()
uiString errmsg_
Definition: seistrctr.h:244
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
SeisTrc * getFilled(const BinID &)
uiString errMsg() const
Definition: seistrctr.h:180
virtual void addWarn(int, const char *)
SeisTrc * getEmpty()
set of seismic traces.
Definition: seisbuf.h:28
ComponentData(const ComponentData &cd)
Definition: seistrctr.h:103
SeisTrcTranslator(const char *, const char *)
bool haveWarnings() const
virtual bool initRead_()
Definition: seistrctr.h:271
virtual bool readInfo(SeisTrcInfo &)
Definition: seistrctr.h:173
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
int prevnr_
Definition: seistrctr.h:301
void setDataType(int icomp, int d)
Definition: seistrctr.h:267
bool enforce_regular_write
Definition: seistrctr.h:250
Seis::ReadMode read_mode
Definition: seistrctr.h:247
Pos::GeomID geomid_
Definition: seistrctr.h:261
virtual bool dumpBlock()
will call blockDumped()
#define isTranslatorGroup(clss)
In the class definition of a TranslatorGroup class.
Definition: transl.h:188
virtual void blockDumped(int nrtrcs)
Definition: seistrctr.h:279
Position info for an entire 3D cube. The LineData&#39;s are not sorted.
Definition: posinfo.h:96
virtual bool writeTrc_(const SeisTrc &)
Definition: seistrctr.h:280
TypeSet< int > warnnrs_
Definition: seistrctr.h:290
virtual bool forRead() const
ObjectSet< ComponentData > cds_
Definition: seistrctr.h:255
ObjectSet< TargetComponentData > & componentInfo()
Definition: seistrctr.h:159
bool isPS() const
Definition: seistrctr.h:211
virtual int estimatedNrTraces() const
Definition: seistrctr.h:232
Linear scaling.
Definition: scaler.h:55
int selComp(int nr=0) const
Definition: seistrctr.h:187
int destidx
Definition: seistrctr.h:126

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