OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 Translators for SEGY files traces.
13 
14 -*/
15 
16 #include "seismod.h"
17 #include "segyfiledef.h"
18 #include "seistrctr.h"
19 #include "tracedata.h"
20 #include "strmdata.h"
21 #include "uistring.h"
22 #include "coordsystem.h"
23 
24 class LinScaler;
25 class BendPoints2Coords;
26 namespace SEGY { class TxtHeader; class BinHeader; class TrcHeader; }
27 
28 #define mSEGYTraceHeaderBytes 240
29 
30 
33 public:
34 
35  SEGYSeisTrcTranslator(const char*,const char*);
37  virtual const char* defExtension() const { return "sgy"; }
38 
39  virtual bool readInfo(SeisTrcInfo&);
40  virtual bool read(SeisTrc&);
41  virtual bool skip(int);
42  bool goToTrace(int);
43  int traceSizeOnDisk() const;
44  bool getFullTrcAsBuf(unsigned char*);
45 
46  bool isRev0() const;
47  int numberFormat() const { return filepars_.fmt_; }
48  int estimatedNrTraces() const { return estnrtrcs_; }
49 
51  void usePar(const IOPar&);
52 
53  const SEGY::TxtHeader* txtHeader() const { return txthead_; }
54  const SEGY::BinHeader& binHeader() const { return binhead_; }
55  const SEGY::TrcHeader& trcHeader() const { return trchead_; }
57  void setForcedRev( int rev ) { forcedrev_ = rev; }
58  void setForceRev0( bool yn ) { forcedrev_ = yn ? 0 : 1; }
59 
60  int dataBytes() const;
61  int forcedRev() const { return forcedrev_; }
62  bool rev0Forced() const { return forcedrev_ == 0; }
63  SEGY::FilePars& filePars() { return filepars_; }
64  SEGY::FileReadOpts& fileReadOpts() { return fileopts_; }
65  const unsigned char* blockBuf() const { return blockbuf_; }
66 
67  bool implRemove( const IOObj* ) const { return true; }
68  virtual bool implManagesObjects( const IOObj* ) const
69  { return true; }
70  void cleanUp();
71 
73  { coordsys_.set( crs ); }
74 
75 protected:
76 
81  SEGY::TrcHeader& trchead_; // must be *after* fileopts_
85 
86  bool useinpsd_;
87  TraceDataInterpreter* storinterp_; //Will be removed after 6.2
88  unsigned char headerbuf_[mSEGYTraceHeaderBytes];
89  bool headerdone_; //Will be in base class after 6.2
90 
91  // Following variables are inited by commitSelections
92  unsigned char* blockbuf_; //Will be removed after 6.2
94  TargetComponentData* outcd_;
95 
96  inline StreamConn& sConn() { return *(StreamConn*)conn_; }
97 
99  virtual bool initRead_();
100  virtual bool initWrite_(const SeisTrc&);
101  virtual bool writeTrc_(const SeisTrc&);
102 
106  bool writeData(const SeisTrc&);
107  virtual bool readTapeHeader();
108  virtual void updateCDFromBuf();
109  virtual void interpretBuf(SeisTrcInfo&);
110  virtual bool writeTapeHeader();
111  virtual void fillHeaderBuf(const SeisTrc&);
113  void fillErrMsg(const uiString&, bool);
114  bool noErrMsg();
115 
117  int nrFormatFor(const DataCharacteristics&) const;
118  void addWarn(int,const char*);
119  const char* getTrcPosStr() const;
122 
123  int curtrcnr_, prevtrcnr_;
124  BinID curbid_, prevbid_;
125  float curoffs_, prevoffs_;
132 
133 private:
134 
136 
137  virtual bool readData(TraceData* externalbuf);
138 
139 };
140 
141 
segyfiledef.h
SEGYSeisTrcTranslator::othdomain_
bool othdomain_
Definition: segytr.h:130
TraceData
A set of data buffers and their interpreters.
Definition: tracedata.h:32
SEGY::OffsetCalculator
Definition: segyfiledef.h:166
SEGYSeisTrcTranslator::txtHeader
const SEGY::TxtHeader * txtHeader() const
Definition: segytr.h:53
SEGYSeisTrcTranslator::bp2c_
BendPoints2Coords * bp2c_
Definition: segytr.h:128
tracedata.h
SEGYSeisTrcTranslator::goToTrace
bool goToTrace(int)
SEGYSeisTrcTranslator::forcedRev
int forcedRev() const
Definition: segytr.h:61
SEGYSeisTrcTranslator::implRemove
bool implRemove(const IOObj *) const
Definition: segytr.h:67
SeisTrcInfo
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:27
SEGYSeisTrcTranslator::implManagesObjects
virtual bool implManagesObjects(const IOObj *) const
Definition: segytr.h:68
SEGYSeisTrcTranslator::useinpsd_
bool useinpsd_
Definition: segytr.h:86
coordsystem.h
uistring.h
SEGYSeisTrcTranslator::sConn
StreamConn & sConn()
Definition: segytr.h:96
SEGYSeisTrcTranslator::prevtrcnr_
int prevtrcnr_
Definition: segytr.h:123
SEGYSeisTrcTranslator::commitSelections_
bool commitSelections_()
SEGYSeisTrcTranslator::coordsys_
RefMan< Coords::CoordSystem > coordsys_
Definition: segytr.h:131
SEGY::FilePars
Definition: segyfiledef.h:55
SEGYSeisTrcTranslator::dataBytes
int dataBytes() const
SEGYSeisTrcTranslator::numberFormat
int numberFormat() const
Definition: segytr.h:47
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
BendPoints2Coords
Inter/Extra-polate bendpoints to get the coordinates.
Definition: bendpoints2coords.h:31
SEGYSeisTrcTranslator::readData
virtual bool readData(TraceData *externalbuf)
SEGYSeisTrcTranslator::estnrtrcs_
int estnrtrcs_
Definition: segytr.h:129
SEGYSeisTrcTranslator::curcoord_
Coord curcoord_
Definition: segytr.h:127
SEGYSeisTrcTranslator::readInfo
virtual bool readInfo(SeisTrcInfo &)
SEGYSeisTrcTranslator::fileopts_
SEGY::FileReadOpts fileopts_
Definition: segytr.h:78
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
SEGYSeisTrcTranslator::~SEGYSeisTrcTranslator
isTranslator(SEGY, SeisTrc) public ~SEGYSeisTrcTranslator()
SeisTrc
Seismic trace.
Definition: seistrc.h:34
SEGYSeisTrcTranslator::fillHeaderBuf
virtual void fillHeaderBuf(const SeisTrc &)
isTranslator
#define isTranslator(spec, clss)
Definition: transl.h:244
SEGYSeisTrcTranslator::txthead_
SEGY::TxtHeader * txthead_
Definition: segytr.h:79
SEGYSeisTrcTranslator::fileReadOpts
SEGY::FileReadOpts & fileReadOpts()
Definition: segytr.h:64
SEGY::TxtHeader
3200 byte SEG-Y text header.
Definition: segyhdr.h:40
SEGYSeisTrcTranslator::getFullTrcAsBuf
bool getFullTrcAsBuf(unsigned char *)
SEGYSeisTrcTranslator::setForceRev0
void setForceRev0(bool yn)
Definition: segytr.h:58
SEGYSeisTrcTranslator::selectWriteDataChar
void selectWriteDataChar(DataCharacteristics &) const
SeisTrcTranslator::ComponentData
Information for one component.
Definition: seistrctr.h:101
seistrctr.h
SEGYSeisTrcTranslator::trcHeader
const SEGY::TrcHeader & trcHeader() const
Definition: segytr.h:55
SEGYSeisTrcTranslator
Definition: segytr.h:32
SEGYSeisTrcTranslator::setTxtHeader
void setTxtHeader(SEGY::TxtHeader *)
write; becomes mine
SEGYSeisTrcTranslator::getTrcPosStr
const char * getTrcPosStr() const
DataInterpreter< float >
SEGYSeisTrcTranslator::updateCDFromBuf
virtual void updateCDFromBuf()
SEGYSeisTrcTranslator::outcd_
TargetComponentData * outcd_
Definition: segytr.h:94
SEGYSeisTrcTranslator::inpcd_
ComponentData * inpcd_
Definition: segytr.h:93
SEGYSeisTrcTranslator::isRev0
bool isRev0() const
SEGYSeisTrcTranslator::filePars
SEGY::FilePars & filePars()
Definition: segytr.h:63
SEGYSeisTrcTranslator::toSupported
void toSupported(DataCharacteristics &) const
SEGYSeisTrcTranslator::mODTextTranslationClass
mODTextTranslationClass(SEGYSeisTrcTranslator)
SEGYSeisTrcTranslator::nrFormatFor
int nrFormatFor(const DataCharacteristics &) const
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
LinScaler
Linear scaling.
Definition: scaler.h:58
SEGYSeisTrcTranslator::headerdone_
bool headerdone_
Definition: segytr.h:89
SEGYDirectSeisTrcTranslator
Definition: segydirecttr.h:151
SEGYSeisTrcTranslator::traceSizeOnDisk
int traceSizeOnDisk() const
StreamConn
Connection with an underlying iostream.
Definition: streamconn.h:26
SEGYSeisTrcTranslator::initWrite_
virtual bool initWrite_(const SeisTrc &)
SEGYSeisTrcTranslator::fillErrMsg
void fillErrMsg(const uiString &, bool)
SEGYSeisTrcTranslator::addWarn
void addWarn(int, const char *)
SEGY::TrcHeader
Definition: segyhdr.h:149
SEGYSeisTrcTranslator::noErrMsg
bool noErrMsg()
SEGYSeisTrcTranslator::offsetcalc_
SEGY::OffsetCalculator offsetcalc_
Definition: segytr.h:126
Coords::CoordSystem
Definition: coordsystem.h:31
IOObj
Definition: ioobj.h:58
SEGYSeisTrcTranslator::trcscale_
LinScaler * trcscale_
Definition: segytr.h:82
SEGYSeisTrcTranslator::prevoffs_
float prevoffs_
Definition: segytr.h:125
SEGYSeisTrcTranslator::binHeader
const SEGY::BinHeader & binHeader() const
Definition: segytr.h:54
SeisTrcTranslator
Definition: seistrctr.h:90
SEGY::BinHeader
400 byte SEG-Y binary header
Definition: segyhdr.h:80
SEGYSeisTrcTranslator::skip
virtual bool skip(int)
SEGYSeisTrcTranslator::defExtension
virtual const char * defExtension() const
Definition: segytr.h:37
SEGYSeisTrcTranslator::forcedrev_
int forcedrev_
Definition: segytr.h:84
SEGYSeisTrcTranslator::writeTapeHeader
virtual bool writeTapeHeader()
SEGYSeisTrcTranslator::rev0Forced
bool rev0Forced() const
Definition: segytr.h:62
SEGYSeisTrcTranslator::setForcedRev
void setForcedRev(int rev)
Definition: segytr.h:57
SEGYSeisTrcTranslator::interpretBuf
virtual void interpretBuf(SeisTrcInfo &)
SEGYSeisTrcTranslator::skipThisTrace
bool skipThisTrace(SeisTrcInfo &, int &)
SEGYSeisTrcTranslator::readDataToBuf
bool readDataToBuf()
strmdata.h
SEGYSeisTrcTranslator::writeData
bool writeData(const SeisTrc &)
SEGYSeisTrcTranslator::blockBuf
const unsigned char * blockBuf() const
Definition: segytr.h:65
SEGYSeisTrcTranslator::writeTrc_
virtual bool writeTrc_(const SeisTrc &)
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
SEGYSeisTrcTranslator::readTraceHeadBuffer
bool readTraceHeadBuffer()
SEGY::FileReadOpts
Definition: segyfiledef.h:104
SEGYSeisTrcTranslator::setCoordSys
void setCoordSys(Coords::CoordSystem *crs)
Definition: segytr.h:72
SEGY
Keys that should be used with od_process_segyio.cc.
Definition: segybatchio.h:22
SEGYSeisTrcTranslator::curtrcscale_
const LinScaler * curtrcscale_
Definition: segytr.h:83
SEGYSeisTrcTranslator::blockbuf_
unsigned char * blockbuf_
Definition: segytr.h:92
SEGYSeisTrcTranslator::read
virtual bool read(SeisTrc &)
SEGYSeisTrcTranslator::tryInterpretBuf
bool tryInterpretBuf(SeisTrcInfo &)
SEGYSeisTrcTranslator::initRead_
virtual bool initRead_()
SEGYSeisTrcTranslator::cleanUp
void cleanUp()
Prepare for new initialisation.
SEGYSeisTrcTranslator::getDataChar
DataCharacteristics getDataChar(int) const
SEGYSeisTrcTranslator::readTapeHeader
virtual bool readTapeHeader()
SEGYSeisTrcTranslator::filepars_
SEGY::FilePars filepars_
Definition: segytr.h:77
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
mSEGYTraceHeaderBytes
#define mSEGYTraceHeaderBytes
Definition: segytr.h:28
SEGYSeisTrcTranslator::readData
bool readData(SeisTrc &)
DataCharacteristics
byte-level data characteristics of stored data.
Definition: datachar.h:37
SEGYSeisTrcTranslator::storinterp_
TraceDataInterpreter * storinterp_
Definition: segytr.h:87
SEGYSeisTrcTranslator::usePar
void usePar(const IOPar &)
SEGYSeisTrcTranslator::estimatedNrTraces
int estimatedNrTraces() const
Definition: segytr.h:48
SEGYSeisTrcTranslator::prevbid_
BinID prevbid_
Definition: segytr.h:124
SEGYSeisTrcTranslator::binhead_
SEGY::BinHeader & binhead_
Definition: segytr.h:80
RefMan< Coords::CoordSystem >
SEGYSeisTrcTranslator::trchead_
SEGY::TrcHeader & trchead_
Definition: segytr.h:81

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