OpendTect  6.6
segyfiledef.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: Bert
8  Date: Sep 2008
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "seismod.h"
15 #include "filespec.h"
16 #include "coord.h"
17 #include "samplingdata.h"
18 #include "seistype.h"
19 #include "segythdef.h"
20 #include "binid.h"
21 #include "coordsystem.h"
22 #include "survinfo.h"
23 
24 class IOObj;
25 class Scaler;
26 class SeisTrcInfo;
27 
28 
29 namespace SEGY
30 {
31 class TrcHeader;
32 
33 
34 /*\brief Definition of input / output file(s) */
35 
36 mExpClass(Seis) FileSpec : public ::FileSpec
37 {
38 public:
39 
40  FileSpec( const char* fnm=0 )
41  : ::FileSpec(fnm) {}
42  FileSpec( const IOPar& iop )
43  : ::FileSpec(iop) {}
44 
45  IOObj* getIOObj(bool temporary) const;
46 
47  static void fillParFromIOObj(const IOObj&,IOPar&);
48 
49 };
50 
51 
52 /*\brief Parameters that control the primary read/write process */
53 
55 {
56 public:
57  FilePars( bool forread=true )
58  : ns_(0)
59  , fmt_(forread?0:1)
60  , byteswap_(0)
61  , forread_(forread)
62  , coordsys_(SI().getCoordSystem()) {}
63 
64  int ns_;
65  int fmt_;
66  int byteswap_;
67 
68  bool swapHdrs() const { return byteswap_ > 1; }
69  bool swapData() const
70  { return byteswap_ == 1 || byteswap_ == 2; }
71  void setSwap( bool hdr, bool data )
72  { byteswap_ = hdr ? (data?2:3) : (data?1:0); }
73 
74  static int nrFmts( bool forread ) { return forread ? 6 : 5; }
75  static const char** getFmts(bool forread);
76  static const char* nameOfFmt(int fmt,bool forread);
77  static int fmtOf(const char*,bool forread);
78 
79  static const char* sKeyForceRev0();
80  static const char* sKeyRevision();
81  static const char* sKeyNrSamples();
82  static const char* sKeyNumberFormat();
83  static const char* sKeyByteSwap();
84 
85  void setForRead(bool);
86 
87  void fillPar(IOPar&) const;
88  bool usePar(const IOPar&);
89  void getReport(IOPar&,bool isrev0) const;
91  { coordsys_ = crs; }
92  ConstRefMan<Coords::CoordSystem> getCoordSys() const { return coordsys_; }
93 protected:
94 
95  bool forread_;
97 
98 };
99 
100 
101 /*\brief Options that control the actual read process */
102 
104 {
105 public:
106 
108 
109  Seis::GeomType geomType() const { return geom_; }
111 
112  enum ICvsXYType { Both=0, ICOnly=1, XYOnly=2 };
113  enum PSDefType { InFile=0, SrcRcvCoords=1, UsrDef=2 };
114  enum CoordDefType { Present=0, ReadFile=1, Generate=2 };
115 
116  bool forread_;
118  float coordscale_;
119  float timeshift_;
120  float sampleintv_;
122 
125 
128 
133 
134  void scaleCoord(Coord&,const Scaler* s=0) const;
135  float timeShift(float) const;
136  float sampleIntv(float) const;
137 
138  static const char* sKeyCoordScale();
139  static const char* sKeyTimeShift();
140  static const char* sKeySampleIntv();
141  static const char* sKeyICOpt();
142  static const char* sKeyHaveTrcNrs();
143  static const char* sKeyTrcNrDef();
144  static const char* sKeyPSOpt();
145  static const char* sKeyOffsDef();
146  static const char* sKeyCoordOpt();
147  static const char* sKeyCoordStart();
148  static const char* sKeyCoordStep();
149  static const char* sKeyCoordFileName();
150 
151  void fillPar(IOPar&) const;
152  bool usePar(const IOPar&);
153  void getReport(IOPar&,bool isrev0) const;
154  static void shallowClear(IOPar&);
155 
156 protected:
157 
159 
160 };
161 
162 
163 /*\brief Determines offset as specified by user */
164 
166 {
167 public:
169  : type_(FileReadOpts::InFile)
170  , def_(0.f,1.f)
171  , is2d_(false)
172  , coordscale_(1.0f) { reset(); }
173  void set(const FileReadOpts&);
174 
175  void reset();
176 
179  bool is2d_;
180  float coordscale_;
181 
182  void setOffset(SeisTrcInfo&,const TrcHeader&) const;
183 
184 protected:
185 
186  mutable float curoffs_;
187  mutable BinID prevbid_;
188 
189 };
190 
191 
192 
193 } // namespace SEGY
194 
195 
ConstRefMan< Coords::CoordSystem >
SEGY::FileReadOpts::sKeyCoordScale
static const char * sKeyCoordScale()
SEGY::FileReadOpts::sKeyCoordOpt
static const char * sKeyCoordOpt()
SEGY::OffsetCalculator
Definition: segyfiledef.h:166
SEGY::FileReadOpts::sKeySampleIntv
static const char * sKeySampleIntv()
SeisTrcInfo
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:27
SEGY::FileReadOpts::sKeyOffsDef
static const char * sKeyOffsDef()
SEGY::FilePars::fillPar
void fillPar(IOPar &) const
Seis::Vol
@ Vol
Definition: seistype.h:32
SEGY::FileReadOpts::usePar
bool usePar(const IOPar &)
coordsystem.h
SEGY::OffsetCalculator::coordscale_
float coordscale_
Definition: segyfiledef.h:180
SEGY::FileReadOpts::sKeyPSOpt
static const char * sKeyPSOpt()
SEGY::FilePars
Definition: segyfiledef.h:55
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
SEGY::FileReadOpts::timeShift
float timeShift(float) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
SEGY::OffsetCalculator::is2d_
bool is2d_
Definition: segyfiledef.h:179
SEGY::FileSpec::FileSpec
FileSpec(const char *fnm=0)
Definition: segyfiledef.h:40
SEGY::FilePars::sKeyNumberFormat
static const char * sKeyNumberFormat()
SEGY::FileReadOpts::FileReadOpts
FileReadOpts(Seis::GeomType gt=Seis::Vol)
SEGY::FileSpec::getIOObj
IOObj * getIOObj(bool temporary) const
SEGY::FileReadOpts::getReport
void getReport(IOPar &, bool isrev0) const
SEGY::FilePars::coordsys_
ConstRefMan< Coords::CoordSystem > coordsys_
Definition: segyfiledef.h:96
samplingdata.h
SEGY::FileSpec::FileSpec
FileSpec(const IOPar &iop)
Definition: segyfiledef.h:42
SEGY::FileReadOpts::setGeomType
void setGeomType(Seis::GeomType)
SEGY::FileReadOpts::PSDefType
PSDefType
Definition: segyfiledef.h:113
binid.h
SEGY::FileReadOpts::sKeyCoordFileName
static const char * sKeyCoordFileName()
SEGY::FileReadOpts::havetrcnrs_
bool havetrcnrs_
Definition: segyfiledef.h:123
SEGY::FileSpec::fillParFromIOObj
static void fillParFromIOObj(const IOObj &, IOPar &)
SEGY::FileReadOpts::timeshift_
float timeshift_
Definition: segyfiledef.h:119
SEGY::FileReadOpts::shallowClear
static void shallowClear(IOPar &)
SEGY::OffsetCalculator::def_
SamplingData< float > def_
Definition: segyfiledef.h:178
SEGY::FileReadOpts::CoordDefType
CoordDefType
Definition: segyfiledef.h:114
SEGY::FileReadOpts::trcnrdef_
SamplingData< int > trcnrdef_
Definition: segyfiledef.h:124
SEGY::FileReadOpts::sampleIntv
float sampleIntv(float) const
segythdef.h
SEGY::FileReadOpts::geomType
Seis::GeomType geomType() const
Definition: segyfiledef.h:109
SEGY::FileReadOpts::scaleCoord
void scaleCoord(Coord &, const Scaler *s=0) const
SEGY::FilePars::sKeyForceRev0
static const char * sKeyForceRev0()
SEGY::FileReadOpts::coordscale_
float coordscale_
Definition: segyfiledef.h:118
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
SEGY::FileReadOpts::forread_
bool forread_
Definition: segyfiledef.h:116
Scaler
Scaling of floating point numbers.
Definition: scaler.h:33
SEGY::OffsetCalculator::type_
FileReadOpts::PSDefType type_
Definition: segyfiledef.h:177
SEGY::FilePars::nrFmts
static int nrFmts(bool forread)
Definition: segyfiledef.h:74
SEGY::TrcHeaderDef
stores HdrEntry info of the needed fields from the trace header.
Definition: segythdef.h:30
SEGY::FileReadOpts::sampleintv_
float sampleintv_
Definition: segyfiledef.h:120
SEGY::FileReadOpts::sKeyTimeShift
static const char * sKeyTimeShift()
SEGY::FilePars::setForRead
void setForRead(bool)
SEGY::FilePars::nameOfFmt
static const char * nameOfFmt(int fmt, bool forread)
SEGY::FilePars::fmtOf
static int fmtOf(const char *, bool forread)
SEGY::FilePars::getFmts
static const char ** getFmts(bool forread)
SEGY::TrcHeader
Definition: segyhdr.h:149
SEGY::FilePars::swapHdrs
bool swapHdrs() const
, 0=no 1=data only 2=all 3=only hdrs
Definition: segyfiledef.h:68
SEGY::FileReadOpts::psdef_
PSDefType psdef_
Definition: segyfiledef.h:126
SEGY::FileReadOpts::sKeyCoordStart
static const char * sKeyCoordStart()
SI
const SurveyInfo & SI()
SamplingData< int >
SEGY::FilePars::sKeyByteSwap
static const char * sKeyByteSwap()
SEGY::FilePars::getCoordSys
ConstRefMan< Coords::CoordSystem > getCoordSys() const
Definition: segyfiledef.h:92
Coords::CoordSystem
Definition: coordsystem.h:31
SEGY::FilePars::forread_
bool forread_
Definition: segyfiledef.h:95
SEGY::FilePars::sKeyRevision
static const char * sKeyRevision()
IOObj
Definition: ioobj.h:58
SEGY::FilePars::ns_
int ns_
Definition: segyfiledef.h:64
SEGY::FileReadOpts::coorddef_
CoordDefType coorddef_
Definition: segyfiledef.h:129
SEGY::OffsetCalculator::OffsetCalculator
OffsetCalculator()
Definition: segyfiledef.h:168
SEGY::FileReadOpts::sKeyICOpt
static const char * sKeyICOpt()
SEGY::FilePars::setCoordSys
void setCoordSys(const Coords::CoordSystem *crs)
Definition: segyfiledef.h:90
SEGY::OffsetCalculator::curoffs_
float curoffs_
Definition: segyfiledef.h:186
SEGY::FileReadOpts::sKeyHaveTrcNrs
static const char * sKeyHaveTrcNrs()
filespec.h
SEGY::FilePars::getReport
void getReport(IOPar &, bool isrev0) const
SEGY::FilePars::sKeyNrSamples
static const char * sKeyNrSamples()
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
SEGY::OffsetCalculator::setOffset
void setOffset(SeisTrcInfo &, const TrcHeader &) const
SEGY::FilePars::FilePars
FilePars(bool forread=true)
Definition: segyfiledef.h:57
survinfo.h
SEGY::FileReadOpts::sKeyCoordStep
static const char * sKeyCoordStep()
SEGY::OffsetCalculator::prevbid_
BinID prevbid_
Definition: segyfiledef.h:187
SEGY::FileReadOpts::sKeyTrcNrDef
static const char * sKeyTrcNrDef()
SEGY::FileSpec
Definition: segyfiledef.h:37
SEGY::OffsetCalculator::reset
void reset()
SEGY::FileReadOpts::fillPar
void fillPar(IOPar &) const
SEGY::FileReadOpts
Definition: segyfiledef.h:104
SEGY::FilePars::setSwap
void setSwap(bool hdr, bool data)
Definition: segyfiledef.h:71
SEGY
Keys that should be used with od_process_segyio.cc.
Definition: segybatchio.h:22
SEGY::FileReadOpts::ICvsXYType
ICvsXYType
Definition: segyfiledef.h:112
SEGY::FilePars::usePar
bool usePar(const IOPar &)
seistype.h
SEGY::OffsetCalculator::set
void set(const FileReadOpts &)
SEGY::FileReadOpts::thdef_
TrcHeaderDef thdef_
Definition: segyfiledef.h:117
SEGY::FilePars::fmt_
int fmt_
Definition: segyfiledef.h:65
SEGY::FileReadOpts::startcoord_
Coord startcoord_
Definition: segyfiledef.h:130
Seis::GeomType
GeomType
Definition: seistype.h:32
SEGY::FilePars::byteswap_
int byteswap_
Definition: segyfiledef.h:66
SEGY::FileReadOpts::coordfnm_
BufferString coordfnm_
Definition: segyfiledef.h:132
SEGY::FileReadOpts::offsdef_
SamplingData< float > offsdef_
Definition: segyfiledef.h:127
SEGY::FileReadOpts::geom_
Seis::GeomType geom_
Definition: segyfiledef.h:158
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
SEGY::FilePars::swapData
bool swapData() const
Definition: segyfiledef.h:69
SEGY::FileReadOpts::icdef_
ICvsXYType icdef_
Definition: segyfiledef.h:121
SEGY::FileReadOpts::stepcoord_
Coord stepcoord_
Definition: segyfiledef.h:131
coord.h

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