OpendTect  6.3
segytr.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: 2-4-1996
9 ________________________________________________________________________
10 
11 Translators for SEGY files traces.
12 
13 -*/
14 
15 #include "segyfiledef.h"
16 #include "seistrctr.h"
17 #include "tracedata.h"
18 #include "strmdata.h"
19 #include "uistring.h"
20 
21 class LinScaler;
22 class BendPoints2Coords;
23 namespace SEGY { class TxtHeader; class BinHeader; class TrcHeader; }
24 
25 #define mSEGYTraceHeaderBytes 240
26 
27 
30 public:
31 
32  SEGYSeisTrcTranslator(const char*,const char*);
34  virtual const char* defExtension() const { return "sgy"; }
35 
36  virtual bool readInfo(SeisTrcInfo&);
37  virtual bool read(SeisTrc&);
38  virtual bool skip(int);
39  bool goToTrace(int);
40  int traceSizeOnDisk() const;
41  bool getFullTrcAsBuf(unsigned char*);
42 
43  bool isRev0() const;
44  int numberFormat() const { return filepars_.fmt_; }
45  int estimatedNrTraces() const { return estnrtrcs_; }
46 
47  void toSupported(DataCharacteristics&) const;
48  void usePar(const IOPar&);
49 
50  const SEGY::TxtHeader* txtHeader() const { return txthead_; }
51  const SEGY::BinHeader& binHeader() const { return binhead_; }
52  const SEGY::TrcHeader& trcHeader() const { return trchead_; }
53  void setTxtHeader(SEGY::TxtHeader*);
54  void setForcedRev( int rev ) { forcedrev_ = rev; }
55  void setForceRev0( bool yn ) { forcedrev_ = yn ? 0 : 1; }
56 
57  int dataBytes() const;
58  int forcedRev() const { return forcedrev_; }
59  bool rev0Forced() const { return forcedrev_ == 0; }
60  SEGY::FilePars& filePars() { return filepars_; }
61  SEGY::FileReadOpts& fileReadOpts() { return fileopts_; }
62  const unsigned char* blockBuf() const { return blockbuf_; }
63 
64  virtual bool implManagesObjects( const IOObj* ) const
65  { return true; }
66  void cleanUp();
67 
68 protected:
69 
74  SEGY::TrcHeader& trchead_; // must be *after* fileopts_
78 
79  bool useinpsd_;
81  unsigned char headerbuf_[mSEGYTraceHeaderBytes];
83 
84  // Following variables are inited by commitSelections
85  unsigned char* blockbuf_;
86  ComponentData* inpcd_;
88 
89  inline StreamConn& sConn() { return *(StreamConn*)conn_; }
90 
91  bool commitSelections_();
92  virtual bool initRead_();
93  virtual bool initWrite_(const SeisTrc&);
94  virtual bool writeTrc_(const SeisTrc&);
95 
96  bool readTraceHeadBuffer();
97  bool readDataToBuf();
98  bool readData(SeisTrc&);
99  bool writeData(const SeisTrc&);
100  virtual bool readTapeHeader();
101  virtual void updateCDFromBuf();
102  virtual void interpretBuf(SeisTrcInfo&);
103  virtual bool writeTapeHeader();
104  virtual void fillHeaderBuf(const SeisTrc&);
105  void selectWriteDataChar(DataCharacteristics&) const;
106  void fillErrMsg(const uiString&, bool);
107  bool noErrMsg();
108 
109  DataCharacteristics getDataChar(int) const;
110  int nrFormatFor(const DataCharacteristics&) const;
111  void addWarn(int,const char*);
112  const char* getTrcPosStr() const;
113  bool tryInterpretBuf(SeisTrcInfo&);
114  bool skipThisTrace(SeisTrcInfo&,int&);
115 
116  int curtrcnr_, prevtrcnr_;
117  BinID curbid_, prevbid_;
118  float curoffs_, prevoffs_;
124 
125 };
#define mExpClass(module)
Definition: commondefs.h:157
Definition: segyhdr.h:143
SEGY::FileReadOpts & fileReadOpts()
Definition: segytr.h:61
Seismics.
Definition: segydirectdef.h:20
Definition: ioobj.h:57
unsigned char * blockbuf_
Definition: segytr.h:85
SEGY::OffsetCalculator offsetcalc_
Definition: segytr.h:119
400 byte SEG-Y binary header
Definition: segyhdr.h:75
void setForceRev0(bool yn)
Definition: segytr.h:55
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
TargetComponentData * outcd_
Definition: segytr.h:87
bool headerdone_
Definition: segytr.h:82
bool rev0Forced() const
Definition: segytr.h:59
SEGY::TxtHeader * txthead_
Definition: segytr.h:72
Definition: segyfiledef.h:93
#define mSEGYTraceHeaderBytes
Definition: segytr.h:25
const unsigned char * blockBuf() const
Definition: segytr.h:62
SEGY::BinHeader & binhead_
Definition: segytr.h:73
SEGY::FileReadOpts fileopts_
Definition: segytr.h:71
const LinScaler * curtrcscale_
Definition: segytr.h:76
Definition: segytr.h:28
Definition: uistring.h:88
ComponentData * inpcd_
Definition: segytr.h:86
BinID prevbid_
Definition: segytr.h:117
Definition: segyfiledef.h:48
Byte-level data interpreter.
Definition: cbvswriter.h:20
SEGY::FilePars & filePars()
Definition: segytr.h:60
int estimatedNrTraces() const
Definition: segytr.h:45
BendPoints2Coords * bp2c_
Definition: segytr.h:121
const SEGY::BinHeader & binHeader() const
Definition: segytr.h:51
int estnrtrcs_
Definition: segytr.h:122
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Definition: seistrctr.h:85
void setForcedRev(int rev)
Definition: segytr.h:54
byte-level data characteristics of stored data.
Definition: datachar.h:35
bool useinpsd_
Definition: segytr.h:79
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:24
bool othdomain_
Definition: segytr.h:123
ComponentData as it should be when the Translator puts it away.
Definition: seistrctr.h:120
SEGY::FilePars filepars_
Definition: segytr.h:70
Coord curcoord_
Definition: segytr.h:120
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
Seismic trace.
Definition: seistrc.h:31
float prevoffs_
Definition: segytr.h:118
TraceDataInterpreter * storinterp_
Definition: segytr.h:80
3200 byte SEG-Y text header.
Definition: segyhdr.h:36
const SEGY::TrcHeader & trcHeader() const
Definition: segytr.h:52
virtual const char * defExtension() const
Definition: segytr.h:34
LinScaler * trcscale_
Definition: segytr.h:75
Keys that should be used with od_process_segyio.cc.
Definition: segybatchio.h:18
virtual bool implManagesObjects(const IOObj *) const
Definition: segytr.h:64
Definition: segyfiledef.h:155
const SEGY::TxtHeader * txtHeader() const
Definition: segytr.h:50
SEGY::TrcHeader & trchead_
Definition: segytr.h:74
Inter/Extra-polate bendpoints to get the coordinates.
Definition: bendpoints2coords.h:29
Connection with an underlying iostream.
Definition: streamconn.h:25
int forcedrev_
Definition: segytr.h:77
2D point or vector class.
Definition: commontypes.h:58
StreamConn & sConn()
Definition: segytr.h:89
int numberFormat() const
Definition: segytr.h:44
int prevtrcnr_
Definition: segytr.h:116
int forcedRev() const
Definition: segytr.h:58
Linear scaling.
Definition: scaler.h:55
#define isTranslator(spec, clss)
Definition: transl.h:224

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