OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 Translators for seismic traces.
13 
14 -*/
15 
16 #include "seismod.h"
17 #include "transl.h"
18 #include "ctxtioobj.h"
19 #include "samplingdata.h"
20 #include "basiccompinfo.h"
21 #include "seisinfo.h"
22 #include "seistype.h"
23 #include "linekey.h"
24 
25 class SeisTrc;
26 class LinScaler;
27 class SeisTrcBuf;
28 class SeisTrcInfo;
29 class TraceData;
30 class TrcKeyZSampling;
31 class SeisPacketInfo;
32 class BufferStringSet;
33 namespace PosInfo { class CubeData; }
34 namespace Seis { class SelData; }
35 
36 
37 
79 public:
81 
82  static const char* sKeyDefault3D() { return "Cube"; }
83  static const char* sKeyDefault2D() { return "2D Cube"; }
84  static const char* sKeyDefaultAttrib() { return "Attribute"; }
85  const char* getSurveyDefaultKey(const IOObj*) const;
86 };
87 
88 
91 public:
92 
101  {
102  friend class SeisTrcTranslator;
103 
104  protected:
105  ComponentData( const char* nm="Seismic Data" )
106  : BasicComponentInfo(nm) {}
108  : BasicComponentInfo(cd) {}
109  ComponentData(const SeisTrc&,int icomp=0,
110  const char* nm="Seismic Data");
111  void operator=(const ComponentData&);
113  };
114 
115 
125  {
126  friend class SeisTrcTranslator;
127 
128  public:
129 
130  int destidx;
132 
133  protected:
134 
136  int idx )
137  : ComponentData(c), org(c), destidx(idx) {}
138 
141  };
142 
143  SeisTrcTranslator(const char*,const char*);
145 
153  bool initWrite(Conn*,const SeisTrc&);
159  virtual Conn* curConn() { return conn_; }
160 
162  const Seis::SelData* selData() const { return seldata_; }
165  componentInfo() const { return tarcds_; }
167  inputComponentData() const { return cds_; }
168  const SamplingData<float>& inpSD() const { return insd_; }
169  int inpNrSamples() const { return innrsamples_; }
170  const SamplingData<float>& outSD() const { return outsd_; }
171  int outNrSamples() const { return outnrsamples_;}
172 
173  void setSelData( const Seis::SelData* t ) { seldata_ = t; }
179  virtual bool readInfo(SeisTrcInfo&) { return false; }
180  virtual bool read(SeisTrc&);
181  virtual bool skip( int nrtrcs=1 ) { return false; }
182  virtual bool write(const SeisTrc&);
183  // overrule if you don't need sorting/buffering
184 
185  virtual bool close();
186  uiString errMsg() const { return errmsg_; }
187 
188  virtual bool inlCrlSorted() const { return true; }
189  virtual int bytesOverheadPerTrace() const { return 240; }
190 
191  virtual void usePar(const IOPar&);
192 
193  inline int selComp( int nr=0 ) const { return inpfor_[nr]; }
194  inline int nrSelComps() const { return nrout_; }
201  virtual bool supportsGoTo() const { return false; }
202  virtual bool goTo(const BinID&) { return false; }
203 
204  virtual void cleanUp();
206 
207  static bool getRanges(const MultiID&,TrcKeyZSampling&,
208  const char* linekey=0);
209  static bool getRanges(const IOObj&,TrcKeyZSampling&,
210  const char* linekey=0);
211 
212  virtual bool getGeometryInfo(PosInfo::CubeData&) const
213  { return false; }
214 
215  static bool is2D(const IOObj&,bool only_internal=false);
216  static bool isPS(const IOObj&);
217  bool isPS() const { return is_prestack; }
218  static bool isLineSet(const IOObj&);
222  static const char* sKeyIs2D();
223  static const char* sKeyIsPS();
224  static const char* sKeyRegWrite();
225  static const char* sKeySIWrite();
226 
227  // Use the following fns only if you _really_ know
228  // what you're doing.
229  void enforceRegularWrite( bool yn )
230  { enforce_regular_write = yn; }
231  void enforceSurvinfoWrite( bool yn )
232  { enforce_survinfo_write = yn; }
233 
234  const LineKey& curLineKey() const { return curlinekey_; }
235  void setCurLineKey( const LineKey& lk ) { curlinekey_ = lk; }
236  Pos::GeomID curGeomID() const { return geomid_; }
237  void setCurGeomID( Pos::GeomID gid ) { geomid_ = gid; }
238 
239  virtual bool isUserSelectable(bool) const { return false; }
240  virtual int estimatedNrTraces() const { return -1; }
241 
244 
245  bool haveWarnings() const;
246  const BufferStringSet& warnings() const { return warnings_; }
247 
248  const LinScaler* traceScaler() const { return curtrcscalebase_; }
249 
250 protected:
251 
256 
258  bool is_2d;
262 
278 
279  virtual bool forRead() const;
281  const char* nm=0,int dtype=0);
282 
283  void setDataType( int icomp, int d )
284  { cds_[icomp]->datatype = tarcds_[icomp]->datatype = d;}
285 
286  /* Subclasses will need to implement the following: */
287  virtual bool initRead_() { return true; }
288  virtual bool initWrite_(const SeisTrc&) { return true; }
289  virtual bool commitSelections_() { return true; }
290  virtual bool readData(TraceData* extbuf=0) { return false; }
291 
292  // These are called from the default write()
294  { return true; }
295  virtual bool dumpBlock();
296  virtual void blockDumped(int nrtrcs) {}
297  virtual bool writeTrc_(const SeisTrc&) { return false; }
298  // Buffer to be written when writeBlock() is called
300 
301  void prepareComponents(SeisTrc&,int actualsz) const;
302 
303  // Quick access to selected, like selComp() etc.
306 
309  virtual void addWarn(int,const char*);
310 
311 private:
312 
313  int* inpfor_;
314  int nrout_;
315  int prevnr_;
317 
318  bool initConn(Conn*);
320  bool writeBlock();
322 
323  friend class SeisTrcReader;
324 
325 public:
326 
327  void setIs2D( bool yn ) { is_2d = yn; }
328  void setIsPS( bool yn ) { is_prestack = yn; }
329  bool readTraceData( TraceData* td=nullptr )
330  { return readData(td); }
331 };
332 
333 
SeisTrcTranslator::prepareComponents
void prepareComponents(SeisTrc &, int actualsz) const
basiccompinfo.h
PosInfo::CubeData
Position info for an entire 3D cube. The LineData's are not sorted.
Definition: posinfo.h:95
SeisTrcTranslator::getRanges
static bool getRanges(const MultiID &, TrcKeyZSampling &, const char *linekey=0)
TraceData
A set of data buffers and their interpreters.
Definition: tracedata.h:32
SeisTrcTranslator::componentInfo
ObjectSet< TargetComponentData > & componentInfo()
Definition: seistrctr.h:163
SeisTrcTranslator::addComp
void addComp(const DataCharacteristics &, const char *nm=0, int dtype=0)
SeisTrcTranslator::setCurGeomID
void setCurGeomID(Pos::GeomID gid)
Definition: seistrctr.h:237
SeisTrcTranslator::cleanUp
virtual void cleanUp()
Prepare for new initialisation.
SeisTrcInfo
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:27
SeisTrcTranslator::curlinekey_
LineKey curlinekey_
Definition: seistrctr.h:272
SeisTrcTranslator::read_mode
Seis::ReadMode read_mode
Definition: seistrctr.h:257
SeisTrcTranslator::initWrite_
virtual bool initWrite_(const SeisTrc &)
Definition: seistrctr.h:288
SeisTrcTranslator::sKeyIs2D
static const char * sKeyIs2D()
Conn
Data connection.
Definition: conn.h:30
SeisTrcTranslator::inpSD
const SamplingData< float > & inpSD() const
Definition: seistrctr.h:168
SeisTrcTranslator::forRead
virtual bool forRead() const
SeisTrcReader
reads from a seismic data store.
Definition: seisread.h:50
SeisTrcTranslator::getFilled
SeisTrc * getFilled(const BinID &)
SeisTrcTranslator::bytesOverheadPerTrace
virtual int bytesOverheadPerTrace() const
Definition: seistrctr.h:189
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
SeisTrcTranslator::insd_
SamplingData< float > insd_
Definition: seistrctr.h:263
SeisTrcTranslator::outnrsamples_
int outnrsamples_
Definition: seistrctr.h:269
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
SeisTrcTranslator::curConn
virtual Conn * curConn()
Definition: seistrctr.h:159
SeisTrcTranslator::getEmpty
SeisTrc * getEmpty()
SeisTrcTranslator::writeTrc_
virtual bool writeTrc_(const SeisTrc &)
Definition: seistrctr.h:297
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
SeisTrcTranslator::selData
const Seis::SelData * selData() const
Definition: seistrctr.h:162
SeisTrcTranslator::inpfor_
int * inpfor_
Definition: seistrctr.h:313
SeisTrcTranslator::ComponentData::ComponentData
ComponentData(const ComponentData &cd)
Definition: seistrctr.h:107
SeisTrcTranslator::blockDumped
virtual void blockDumped(int nrtrcs)
Definition: seistrctr.h:296
SeisTrcTranslator::estimatedNrTraces
virtual int estimatedNrTraces() const
Definition: seistrctr.h:240
SeisTrcTranslator::outNrSamples
int outNrSamples() const
Definition: seistrctr.h:171
SeisTrcTranslator::inputComponentData
const ObjectSet< ComponentData > & inputComponentData() const
Definition: seistrctr.h:167
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
SeisTrcTranslator::haveWarnings
bool haveWarnings() const
SeisTrc
Seismic trace.
Definition: seistrc.h:34
SeisTrcTranslator::tarcds_
ObjectSet< TargetComponentData > tarcds_
Definition: seistrctr.h:266
SeisTrcTranslator::initConn
bool initConn(Conn *)
samplingdata.h
BasicComponentInfo
Info on one component.
Definition: basiccompinfo.h:23
SeisTrcTranslator::errMsg
uiString errMsg() const
Definition: seistrctr.h:186
SeisTrcTranslator::conn_
Conn * conn_
Definition: seistrctr.h:252
SeisTrcTranslator::outcds_
TargetComponentData ** outcds_
Definition: seistrctr.h:305
SeisTrcTranslator::mODTextTranslationClass
mODTextTranslationClass(SeisTrcTranslator)
SeisTrcTranslator::is_2d
bool is_2d
Definition: seistrctr.h:258
SeisTrcTranslator::ComponentData
Information for one component.
Definition: seistrctr.h:101
SeisTrcTranslator::setComponentNames
void setComponentNames(const BufferStringSet &)
SeisTrcTranslator::setIsPS
void setIsPS(bool yn)
Definition: seistrctr.h:328
Seis::Prod
@ Prod
Definition: seistype.h:30
SeisTrcTranslator::readTraceData
bool readTraceData(TraceData *td=nullptr)
Definition: seistrctr.h:329
SeisPacketInfo
Information for a packet of seismics, AKA tape header info.
Definition: seispacketinfo.h:25
SeisTrcTranslator::sKeyIsPS
static const char * sKeyIsPS()
SeisTrcBuf
set of seismic traces.
Definition: seisbuf.h:31
SeisTrcTranslator::inlCrlSorted
virtual bool inlCrlSorted() const
Definition: seistrctr.h:188
SeisTrcTranslator::componentInfo
const ObjectSet< TargetComponentData > & componentInfo() const
Definition: seistrctr.h:165
SeisTrcTranslator::TargetComponentData::org
const ComponentData & org
Definition: seistrctr.h:131
TrcKeyZSampling
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
SeisTrcTranslator::supportsGoTo
virtual bool supportsGoTo() const
Definition: seistrctr.h:201
SeisTrcTranslator::close
virtual bool close()
SeisTrcTranslator::isPS
bool isPS() const
Definition: seistrctr.h:217
SeisTrcTranslator::is_prestack
bool is_prestack
Definition: seistrctr.h:259
SeisTrcTranslator::packetInfo
SeisPacketInfo & packetInfo()
Definition: seistrctr.h:161
SeisTrcTranslator::setIs2D
void setIs2D(bool yn)
Definition: seistrctr.h:327
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
StepInterval< int >
SeisTrcTranslator::selComp
int selComp(int nr=0) const
Definition: seistrctr.h:193
LinScaler
Linear scaling.
Definition: scaler.h:58
SeisTrcTranslator::initWrite
bool initWrite(Conn *, const SeisTrc &)
SeisTrcTranslator::prepareWriteBlock
virtual bool prepareWriteBlock(StepInterval< int > &, bool &)
Definition: seistrctr.h:293
SeisTrcTranslator::read
virtual bool read(SeisTrc &)
SeisTrcTranslator::enforceBounds
void enforceBounds()
SeisTrcTranslator::sKeyRegWrite
static const char * sKeyRegWrite()
SeisTrcTranslator::enforce_regular_write
bool enforce_regular_write
Definition: seistrctr.h:260
SeisTrcTranslatorGroup
Seismic Trace translator.
Definition: seistrctr.h:78
SeisTrcTranslator::skip
virtual bool skip(int nrtrcs=1)
Definition: seistrctr.h:181
SeisTrcTranslator::ComponentData::operator=
void operator=(const ComponentData &)
Protection against assignment.
Seis::SelData
contains input (sub-)selection data from a cube or lineset
Definition: seisselection.h:82
SeisTrcTranslator::dumpBlock
virtual bool dumpBlock()
will call blockDumped()
SeisTrcTranslator::commitSelections_
virtual bool commitSelections_()
Definition: seistrctr.h:289
SeisTrcTranslator::TargetComponentData
ComponentData as it should be when the Translator puts it away.
Definition: seistrctr.h:125
SeisTrcTranslator::readData
virtual bool readData(TraceData *extbuf=0)
Definition: seistrctr.h:290
SeisTrcTranslator::setCurLineKey
void setCurLineKey(const LineKey &lk)
Definition: seistrctr.h:235
SeisTrcTranslator::nrout_
int nrout_
Definition: seistrctr.h:314
SeisTrcTranslator::pinfo_
SeisPacketInfo & pinfo_
Definition: seistrctr.h:253
SamplingData< float >
mDefEmptyTranslatorGroupConstructor
#define mDefEmptyTranslatorGroupConstructor(clss)
Definition: transl.h:269
SeisTrcTranslator::storbuf_
TraceData * storbuf_
Definition: seistrctr.h:275
SeisTrcTranslator::TargetComponentData::TargetComponentData
TargetComponentData(const ComponentData &c, int idx)
Definition: seistrctr.h:135
SeisTrcTranslator::readInfo
virtual bool readInfo(SeisTrcInfo &)
Definition: seistrctr.h:179
SeisTrcTranslator::usePar
virtual void usePar(const IOPar &)
IOObj
Definition: ioobj.h:58
SeisTrcTranslator::prevnr_
int prevnr_
Definition: seistrctr.h:315
SeisTrcTranslator::warnings_
BufferStringSet & warnings_
Definition: seistrctr.h:308
SeisTrcTranslator::cds_
ObjectSet< ComponentData > cds_
Definition: seistrctr.h:265
SeisTrcTranslator
Definition: seistrctr.h:90
SeisTrcTranslator::inpNrSamples
int inpNrSamples() const
Definition: seistrctr.h:169
TranslatorGroup
Group of Translators. Has a static factory.
Definition: transl.h:56
SeisTrcTranslator::outSD
const SamplingData< float > & outSD() const
Definition: seistrctr.h:170
SeisTrcTranslator::compnms_
BufferStringSet * compnms_
Definition: seistrctr.h:255
SeisTrcTranslator::addWarn
virtual void addWarn(int, const char *)
SeisTrcTranslator::geomid_
Pos::GeomID geomid_
Definition: seistrctr.h:271
SeisTrcTranslator::ComponentData::ComponentData
ComponentData(const char *nm="Seismic Data")
Definition: seistrctr.h:105
SeisTrcTranslator::warnings
const BufferStringSet & warnings() const
Definition: seistrctr.h:246
SeisTrcTranslator::samprg_
Interval< int > samprg_
Definition: seistrctr.h:270
LineKey
Key for a line in a line set.
Definition: linekey.h:22
MultiID
Compound key consisting of ints.
Definition: multiid.h:24
SeisTrcTranslator::SeisTrcTranslator
SeisTrcTranslator(const char *, const char *)
SeisTrcTranslatorGroup::sKeyDefaultAttrib
static const char * sKeyDefaultAttrib()
Definition: seistrctr.h:84
ctxtioobj.h
SeisTrcTranslator::trcscalebase_
LinScaler * trcscalebase_
Definition: seistrctr.h:276
SeisTrcTranslator::getRanges
static bool getRanges(const IOObj &, TrcKeyZSampling &, const char *linekey=0)
SeisTrcTranslator::setSelData
void setSelData(const Seis::SelData *t)
Definition: seistrctr.h:173
SeisTrcTranslator::getGeometryInfo
virtual bool getGeometryInfo(PosInfo::CubeData &) const
Definition: seistrctr.h:212
SeisTrcTranslator::curGeomID
Pos::GeomID curGeomID() const
Definition: seistrctr.h:236
Seis::ReadMode
ReadMode
Definition: seistype.h:30
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
SeisTrcTranslator::TargetComponentData::operator=
void operator=(const TargetComponentData &)
Protection against assignment.
SeisTrcTranslator::inpcds_
ComponentData ** inpcds_
Definition: seistrctr.h:304
SeisTrcTranslator::sKeySIWrite
static const char * sKeySIWrite()
PosInfo
Position info, often segmented.
Definition: posinfo.h:40
SeisTrcTranslator::lastinlwritten_
int lastinlwritten_
Definition: seistrctr.h:316
SeisTrcTranslator::initRead
bool initRead(Conn *, Seis::ReadMode rt=Seis::Prod)
SeisTrcTranslator::writeBlock
bool writeBlock()
MPE::errmsg_
BufferString errmsg_
Definition: horizontracker.h:118
SeisTrcTranslator::curtrcscalebase_
const LinScaler * curtrcscalebase_
Definition: seistrctr.h:277
SeisTrcTranslator::nrSelComps
int nrSelComps() const
Definition: seistrctr.h:194
linekey.h
SeisTrcTranslator::enforceRegularWrite
void enforceRegularWrite(bool yn)
Definition: seistrctr.h:229
SeisTrcTranslatorGroup::sKeyDefault2D
static const char * sKeyDefault2D()
Definition: seistrctr.h:83
SeisTrcTranslator::isUserSelectable
virtual bool isUserSelectable(bool) const
Definition: seistrctr.h:239
SeisTrcTranslator::warnnrs_
TypeSet< int > warnnrs_
Definition: seistrctr.h:307
Translator
I/O Interpreter class for a certain object type.
Definition: transl.h:123
SeisTrcTranslator::commitSelections
bool commitSelections()
SeisTrcTranslator::setDataType
void setDataType(int icomp, int d)
Definition: seistrctr.h:283
SeisTrcTranslator::ComponentData::ComponentData
ComponentData(const SeisTrc &, int icomp=0, const char *nm="Seismic Data")
transl.h
SeisTrcTranslator::initRead_
virtual bool initRead_()
Definition: seistrctr.h:287
SeisTrcTranslator::errmsg_
uiString errmsg_
Definition: seistrctr.h:254
seistype.h
SeisTrcTranslator::is2D
static bool is2D(const IOObj &, bool only_internal=false)
SeisTrcTranslator::copyDataToTrace
bool copyDataToTrace(SeisTrc &)
SeisTrcTranslator::goTo
virtual bool goTo(const BinID &)
Definition: seistrctr.h:202
SeisTrcTranslator::curLineKey
const LineKey & curLineKey() const
Definition: seistrctr.h:234
seisinfo.h
SeisTrcTranslatorGroup::getSurveyDefaultKey
const char * getSurveyDefaultKey(const IOObj *) const
SeisTrcTranslator::innrsamples_
int innrsamples_
Definition: seistrctr.h:264
SeisTrcTranslator::TargetComponentData::destidx
int destidx
Definition: seistrctr.h:130
SeisTrcTranslator::trcblock_
SeisTrcBuf & trcblock_
Definition: seistrctr.h:299
Interval< int >
SeisTrcTranslator::datareaddone_
bool datareaddone_
Definition: seistrctr.h:274
SeisTrcTranslator::isPS
static bool isPS(const IOObj &)
SeisTrcTranslatorGroup::isTranslatorGroup
isTranslatorGroup(SeisTrc) public
Definition: seistrctr.h:78
SeisTrcTranslator::outsd_
SamplingData< float > outsd_
Definition: seistrctr.h:268
SeisTrcTranslator::enforce_survinfo_write
bool enforce_survinfo_write
Definition: seistrctr.h:261
SeisTrcTranslator::enforceSurvinfoWrite
void enforceSurvinfoWrite(bool yn)
Definition: seistrctr.h:231
SeisTrcTranslator::seldata_
const Seis::SelData * seldata_
Definition: seistrctr.h:267
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
DataCharacteristics
byte-level data characteristics of stored data.
Definition: datachar.h:37
SeisTrcTranslator::traceScaler
const LinScaler * traceScaler() const
Definition: seistrctr.h:248
SeisTrcTranslator::headerdonenew_
bool headerdonenew_
Definition: seistrctr.h:273
Pos::GeomID
Index_Type GeomID
Definition: commontypes.h:87
SeisTrcTranslator::getComponentNames
void getComponentNames(BufferStringSet &) const
SeisTrcTranslator::~SeisTrcTranslator
virtual ~SeisTrcTranslator()
TypeSet< int >
SeisTrcTranslator::isLineSet
static bool isLineSet(const IOObj &)
SeisTrcTranslator::write
virtual bool write(const SeisTrc &)

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