OpendTect  6.3
segydirecttr.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: Nov 2008
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "seispsread.h"
14 #include "seispsioprov.h"
15 #include "seistrctr.h"
16 #include "uistring.h"
17 
18 namespace SEGY { class DirectDef; }
19 namespace PosInfo { class CubeData; }
21 class StreamConn;
22 
23 #define mSEGYDirectTranslNm "SEGYDirect"
24 
25 
28 namespace SEGY
29 {
30 class FileDataSet;
31 
32 
34 { mODTextTranslationClass(DirectReader);
35 public:
36 
38  : tr_(0), curfilenr_(-1) {}
39  virtual ~DirectReader();
40 
41  virtual DirectDef* getDef() = 0;
42  virtual uiString errMsg() const = 0;
43  virtual SEGYSeisTrcTranslator* getTranslator() { return tr_; }
44  virtual bool goTo(const BinID&) = 0;
45 
46 protected:
47 
49  mutable int curfilenr_;
50 
51 };
52 
53 }
54 
55 
59  , public SEGY::DirectReader
61 public:
62 
63  SEGYDirect3DPSReader(const char* fnm);
64  // Check errMsg() to see failure
66 
67  SeisTrc* getTrace(const TrcKey&,int) const;
68  SeisTrc* getTrace(const BinID&,int) const;
69  bool getGather(const TrcKey&,SeisTrcBuf&) const;
70  bool getGather(const BinID&,SeisTrcBuf&) const;
71  uiString errMsg() const { return errmsg_; }
72 
73  const PosInfo::CubeData& posData() const;
74 
75  virtual SEGY::DirectDef* getDef() { return &def_; }
76  virtual bool goTo(const BinID&);
77 
78 protected:
79 
81  mutable uiString errmsg_;
82 
83  SeisTrc* getTrace(int,int,const BinID&) const;
84  bool goTo(int,int) const;
85 
86 };
87 
88 
92  , public SEGY::DirectReader
94 public:
95 
96  SEGYDirect2DPSReader(const char* dirnm,Pos::GeomID);
97  SEGYDirect2DPSReader(const char* dirnm,const char* lnm);
98  // Check errMsg() to see failure
100 
101  SeisTrc* getTrace(const TrcKey&,int) const;
102  SeisTrc* getTrace(const BinID&,int) const;
103  bool getGather(const TrcKey&,SeisTrcBuf&) const;
104  bool getGather(const BinID&,SeisTrcBuf&) const;
105  uiString errMsg() const { return errmsg_; }
106 
107  const PosInfo::Line2DData& posData() const;
108 
109  virtual SEGY::DirectDef* getDef() { return &def_; }
110  virtual bool goTo(const BinID&);
111 
112 protected:
113 
115  mutable uiString errmsg_;
116 
117  SeisTrc* getTrace(int,int,int) const;
118  bool goTo(int,int) const;
119 };
120 
121 
122 
125  isTranslator(SEGYDirect,SeisPS3D)
126 public:
127  mDefEmptyTranslatorConstructor(SEGYDirect,SeisPS3D)
128 
129  virtual bool isUserSelectable( bool fr ) const { return fr; }
130  virtual const char* iconName() const { return "segy"; }
131  virtual const char* defExtension() const { return fileExt(); }
132  static const char* fileExt() { return "sgydef"; }
133 
134  static const char* sKeyNrInlPerFile()
135  { return "Number of inlines per file"; }
136  static const uiString sNrInlPerFile()
137  { return tr("Number of inlines per file"); }
138 
139 };
140 
141 
144  isTranslator(SEGYDirect,SeisPS2D)
145 public:
146  mDefEmptyTranslatorConstructor(SEGYDirect,SeisPS2D)
147 
148  virtual bool isUserSelectable( bool fr ) const { return fr; }
149 
150 };
151 
152 
154  , public SEGY::DirectReader
156  isTranslator(SEGYDirect,SeisTrc)
157 public:
158 
159  SEGYDirectSeisTrcTranslator(const char*,const char*);
161  virtual const char* defExtension() const { return "sgydef"; }
162 
163  virtual bool readInfo(SeisTrcInfo&);
164  virtual bool read(SeisTrc&);
165  virtual bool skip(int);
166  virtual bool supportsGoTo() const { return true; }
167  virtual bool isUserSelectable( bool fr ) const { return true; }
168  virtual Conn* curConn();
169  virtual BinID curBinID() const;
170  virtual bool forRead() const { return forread_; }
171 
172  virtual void toSupported(DataCharacteristics&) const;
173  virtual bool write(const SeisTrc&); // no buffer/resort needed
174 
175  virtual void usePar(const IOPar&);
176 
177  virtual bool implRemove(const IOObj*) const;
178  virtual bool close();
179  virtual void cleanUp();
180  virtual IOObj* createWriteIOObj(const IOObjContext&,
181  const DBKey&) const;
182  virtual const char* iconName() const { return "segy"; }
183 
184  virtual bool getGeometryInfo(PosInfo::CubeData&) const;
185  virtual SEGY::DirectDef* getDef() { return def_; }
186  virtual bool goTo(const BinID&);
187  virtual uiString errMsg() const { return SeisTrcTranslator::errMsg(); }
188 
189  static SEGYSeisTrcTranslator* createTranslator(const SEGY::DirectDef& def,
190  int filenr);
191 protected:
192 
193  bool commitSelections_();
194  virtual bool initRead_();
195  virtual bool initWrite_(const SeisTrc&);
196 
200  int ild_;
201  int iseg_;
202  int itrc_;
203  bool forread_;
207 
208  void initVars(bool for_read=true);
209  const PosInfo::CubeData& cubeData() const;
210  bool toNextTrace();
211  bool positionTranslator();
212 
213 };
BufferString segyfilename_
Definition: segydirecttr.h:205
#define mExpClass(module)
Definition: commondefs.h:157
Definition: seispsioprov.h:174
Seismics.
Definition: segydirectdef.h:20
SEGYSeisTrcTranslator * tr_
Definition: segydirecttr.h:48
Definition: ioobj.h:57
int curfilenr_
Definition: segydirecttr.h:49
virtual SEGY::DirectDef * getDef()
Definition: segydirecttr.h:109
int itrc_
Definition: segydirecttr.h:202
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
Definition: segydirectdef.h:32
virtual bool forRead() const
Definition: segydirecttr.h:170
SEGY::DirectDef * def_
Definition: segydirecttr.h:197
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
static const uiString sNrInlPerFile()
Definition: segydirecttr.h:136
IOPar segypars_
Definition: segydirecttr.h:204
DirectReader()
Definition: segydirecttr.h:37
virtual const char * iconName() const
Definition: segydirecttr.h:182
Definition: segytr.h:28
Position info for a 2D line.
Definition: posinfo2d.h:63
Definition: uistring.h:88
uiString errMsg() const
Definition: segydirecttr.h:105
Definition: segyfiledata.h:36
int iseg_
Definition: segydirecttr.h:201
#define mDefEmptyTranslatorConstructor(spec, clss)
Definition: transl.h:261
uiString errMsg() const
Definition: segydirecttr.h:71
reads from a 3D prestack seismic data store.
Definition: seispsread.h:58
Definition: seispsioprov.h:200
SEGY::FileDataSet * fds_
Definition: segydirecttr.h:198
bool forread_
Definition: segydirecttr.h:203
Definition: segydirecttr.h:153
static const char * sKeyNrInlPerFile()
Definition: segydirecttr.h:134
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Definition: seistrctr.h:85
virtual bool isUserSelectable(bool fr) const
Definition: segydirecttr.h:167
byte-level data characteristics of stored data.
Definition: datachar.h:35
virtual bool supportsGoTo() const
Definition: segydirecttr.h:166
Information for a seismic trace, AKA trace header info.
Definition: seisinfo.h:24
virtual SEGY::DirectDef * getDef()
Definition: segydirecttr.h:75
isTranslator(SEGYDirect, SeisPS3D) public
Definition: segydirecttr.h:125
Index_Type GeomID
Definition: commontypes.h:48
SEGY::DirectDef & def_
Definition: segydirecttr.h:114
virtual const char * defExtension() const
Definition: segydirecttr.h:161
Definition: conn.h:31
Position info, often segmented.
Definition: posinfo.h:38
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
BufferString segydeffilename_
Definition: segydirecttr.h:206
virtual SEGYSeisTrcTranslator * getTranslator()
Definition: segydirecttr.h:43
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
Definition: segydirecttr.h:123
uiString errMsg() const
Definition: seistrctr.h:180
set of seismic traces.
Definition: seisbuf.h:28
Definition: segydirecttr.h:142
Definition: segydirecttr.h:33
Keys that should be used with od_process_segyio.cc.
Definition: segybatchio.h:18
Full key to any object in the OpendTect data store.
Definition: dbkey.h:36
virtual SEGY::DirectDef * getDef()
Definition: segydirecttr.h:185
const char * errMsg() const
Definition: horizontracker.h:59
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
Connection with an underlying iostream.
Definition: streamconn.h:25
bool headerread_
Definition: segydirecttr.h:199
SEGY::DirectDef & def_
Definition: segydirecttr.h:80
uiString errmsg_
Definition: segydirecttr.h:81
uiString errmsg_
Definition: segydirecttr.h:115
reads from a 2D prestack seismic data store.
Definition: seispsread.h:71
Position info for an entire 3D cube. The LineData&#39;s are not sorted.
Definition: posinfo.h:96
const SeisTrc * getTrace(EM::SubID) const
virtual uiString errMsg() const
Definition: segydirecttr.h:187
reads from 2D PS data store reader based on SEG-Y files
Definition: segydirecttr.h:91
int ild_
Definition: segydirecttr.h:200
#define isTranslator(spec, clss)
Definition: transl.h:224
Holds the context for selecting and/or creating IOObjs.
Definition: ioobjctxt.h:59
reads from 3D PS data store reader based on SEG-Y files
Definition: segydirecttr.h:58

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