OpendTect  6.3
seiswrite.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: 27-1-98
9 ________________________________________________________________________
10 
11 -*/
12 
13 
27 #include "seisstor.h"
28 #include "fixedstring.h"
29 #include "uistring.h"
30 class SeisTrc;
31 class SeisPSWriter;
32 class Seis2DLinePutter;
33 class SeisStatsCollector;
34 namespace Threads { class ConditionVar; }
35 namespace PosInfo { class Line2DData; }
36 
37 
40 public:
41 
42  SeisTrcWriter(const IOObj*);
45  SeisTrcWriter(const char*,bool is_2d,bool is_ps);
48  ~SeisTrcWriter();
49  virtual bool close();
50 
51  bool prepareWork(const SeisTrc&);
52  virtual bool put(const SeisTrc&);
53  int nrWritten() const { return nrwritten_; }
54 
55  bool isMultiComp() const;
56  bool isMultiConn() const;
57  IOPar& auxPars() { return auxpars_; }
58 
59  Seis2DLinePutter* linePutter() { return putter_; }
60  const Seis2DLinePutter* linePutter() const { return putter_; }
61 
62  SeisPSWriter* psWriter() { return pswriter_; }
63  const SeisPSWriter* psWriter() const { return pswriter_; }
64 
65  // 2D only
66  void setSelData(Seis::SelData*);
68  void setDataType( const char* dt ) { datatype_ = dt; }
69 
70  void setCrFrom( const char* str ) { crfrom_ = str; }
71  void setCrUserInfo( const char* str ) { crusrinfo_ = str; }
72 
73 protected:
74 
75  bool prepared_;
76  int nrtrcs_;
78  int firstns_;
82 
83  void init();
84  void startWork();
85  void writeCollectedStats() const;
86 
87  // PS only
89 
90  // 3D only
91  Conn* crConn(int,bool);
92  bool ensureRightConn(const SeisTrc&,bool);
93  bool start3DWrite(Conn*,const SeisTrc&);
94 
95  // 2D only
100  bool next2DLine();
101  bool put2D(const SeisTrc&);
102 
105 
106 };
107 
108 
114 { mODTextTranslationClass(SeisSequentialWriter);
115 public:
116  SeisSequentialWriter( SeisTrcWriter*, int buffsize=-1 );
119  ~SeisSequentialWriter();
120  bool announceTrace(const BinID&);
124  bool submitTrace( SeisTrc*, bool waitforbuffer=true );
128  bool submitGather( ObjectSet<SeisTrc>&,
129  bool waitforbuffer=true );
136  bool finishWrite();
140  uiString errMsg() const { return errmsg_; }
141 
142 protected:
143 
144  bool iterateBuffer(bool waitforbuffer);
145  void reportWrite(const char*);
146  void reportWrite(const uiString&);
147  friend class SeisSequentialWriterTask;
148 
153  const int maxbuffersize_;
154 
156 
157  int queueid_;
159 
160 };
int queueid_
Definition: seiswrite.h:157
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
Is an object that faciliates many threads to wait for something to happen.
Definition: thread.h:108
int nrWritten() const
Definition: seiswrite.h:53
Definition: ioobj.h:57
Pos::GeomID prevgeomid_
Definition: seiswrite.h:98
Seis2DLinePutter * linePutter()
Definition: seiswrite.h:59
void setCrUserInfo(const char *str)
Definition: seiswrite.h:71
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
BufferString datatype_
Definition: seiswrite.h:99
BinID latestbid_
Definition: seiswrite.h:155
SeisPSWriter * psWriter()
Definition: seiswrite.h:62
const Seis2DLinePutter * linePutter() const
Definition: seiswrite.h:60
bool init()
Definition: seiswrite.h:38
Position info for a 2D line.
Definition: posinfo2d.h:63
Definition: uistring.h:88
Threads::ConditionVar & lock_
Definition: seiswrite.h:151
bool prepared_
Definition: seiswrite.h:75
int nrtrcs_
Definition: seiswrite.h:76
SeisPSWriter * pswriter_
Definition: seiswrite.h:88
interface to threads that should be portable.
Definition: atomic.h:24
int nrwritten_
Definition: seiswrite.h:77
SeisStatsCollector & seisstatscollector_
Definition: seiswrite.h:80
PosInfo::Line2DData * linedata_
Definition: seiswrite.h:97
void setDataType(const char *dt)
Definition: seiswrite.h:68
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
interface for object that writes 2D seismic data
Definition: seis2dlineio.h:38
Seis2DLinePutter * putter_
Definition: seiswrite.h:96
uiString errMsg() const
Definition: seiswrite.h:140
contains input (sub-)selection data from a cube or lineset
Definition: seisselection.h:78
const SeisPSWriter * psWriter() const
Definition: seiswrite.h:63
int firstns_
Definition: seiswrite.h:78
Index_Type GeomID
Definition: commontypes.h:48
BufferString crfrom_
Definition: seiswrite.h:103
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
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
base class for seis reader and writer.
Definition: seisstor.h:30
Definition: seiswrite.h:113
TypeSet< BinID > announcedtraces_
Definition: seiswrite.h:150
IOPar & auxpars_
Definition: seiswrite.h:81
BufferString crusrinfo_
Definition: seiswrite.h:104
IOPar & auxPars()
Definition: seiswrite.h:57
SeisTrcWriter * writer_
Definition: seiswrite.h:149
uiString errmsg_
Definition: seiswrite.h:158
SamplingData< float > firstsampling_
Definition: seiswrite.h:79
ObjectSet< SeisTrc > outputs_
Definition: seiswrite.h:152
Definition: seisstatscollector.h:20
void setCrFrom(const char *str)
Definition: seiswrite.h:70
const int maxbuffersize_
Definition: seiswrite.h:153
writes to a prestack seismic data store.
Definition: seispswrite.h:33

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