OpendTect  6.3
seisblockswriter.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: Apr 2017
9 ________________________________________________________________________
10 
11 */
12 
13 #include "seisblocksdata.h"
14 #include "seistrc.h"
15 #include "filepath.h"
16 #include "uistring.h"
17 #include "manobjectset.h"
18 
19 class Task;
20 class LinScaler;
21 class SeisTrc;
22 namespace Pos { class IdxPairDataSet; }
23 namespace PosInfo { class CubeData; }
24 
25 
26 namespace Seis
27 {
28 namespace Blocks
29 {
30 
31 class Block;
32 
47 public:
48 
49  Writer(const SurvGeom* sg=0);
50  ~Writer();
51 
52  void setBasePath(const File::Path&);
53  void setFileNameBase(const char*);
54  void setCubeName(const char*);
55  void setFPRep(OD::FPDataRepType);
56  void setScaler(const LinScaler*);
57  void addComponentName(const char*);
58  void addAuxInfo(const char* key,const IOPar&);
59 
60  BufferString dirName() const;
61  BufferString mainFileName() const;
62 
63  uiRetVal add(const SeisTrc&);
64  Task* finisher();
66 
67  typedef std::pair<IdxType,float> ZEvalPos;
69 
70  struct Column
71  {
73 
74  Column(const Dimensions&,int nrcomps);
75  ~Column();
76 
77  Block& firstBlock() { return *blocksets_.first()->first(); }
78  const Block& firstBlock() const
79  { return *blocksets_.first()->first(); }
80  void retireAll();
81  void getDefArea(SampIdx&,Dimensions&) const;
82 
84  ObjectSet<BlockSet> blocksets_; // one set per component
85  bool** visited_;
87  };
88 
89  inline int nrColumnBlocks() const
90  { return zevalpositions_.size(); }
91 
92 protected:
93 
102 
104  const int nrpospercolumn_;
110 
111 
112  void setEmpty();
113  void resetZ(const Interval<float>&);
114  bool removeExisting(const char*,uiRetVal&) const;
115  bool prepareWrite(uiRetVal&);
116  void add2Block(Block&,const ZEvalPosSet&,SampIdx,
117  const SeisTrc&,int);
118  Column* getColumn(const GlobIdx&);
119  Column* mkNewColumn(const GlobIdx&);
120  bool isCompletionVisit(Column&,const SampIdx&) const;
121  void writeColumn(Column&,uiRetVal&);
122  bool writeColumnHeader(od_ostream&,const Column&,
123  const SampIdx&,const Dimensions&) const;
125  void writeMainFile(uiRetVal&);
126  bool writeMainFileData(od_ostream&);
127  void scanPositions( PosInfo::CubeData& cubedata,
131 
132  friend class ColumnWriter;
133  friend class WriterFinisher;
134 
135 };
136 
137 
138 } // namespace Blocks
139 
140 } // namespace Seis
#define mExpClass(module)
Definition: commondefs.h:157
Seismics.
Definition: segydirectdef.h:20
const Block & firstBlock() const
Definition: seisblockswriter.h:78
OD class for stream write common access to the user log file, or std::cout in batch progs...
Definition: od_ostream.h:25
bool ** visited_
Definition: seisblockswriter.h:85
File::Path basepath_
Definition: seisblockswriter.h:94
Writes provided data into Block Storage.
Definition: seisblockswriter.h:45
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
int nruniquevisits_
Definition: seisblockswriter.h:86
int nrColumnBlocks() const
Definition: seisblockswriter.h:89
ObjectSet< ZEvalPosSet > zevalpositions_
Definition: seisblockswriter.h:108
const int nrpospercolumn_
Definition: seisblockswriter.h:104
FPDataRepType
Definition: commontypes.h:63
File pathname tools.
Definition: filepath.h:35
Set of BufferString objects.
Definition: bufstringset.h:25
ObjectSet< IOPar > auxiops_
Definition: seisblockswriter.h:101
bool writeBlock(std::ostream &, const void *, uint64_t)
Definition: seisblocksdata.h:63
Set of pointers to objects.
Definition: commontypes.h:28
A sorted set of IdxPairs and associated data buffer.
Definition: posidxpairdataset.h:60
Set of (small) copyable elements.
Definition: commontypes.h:26
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
LinScaler * scaler_
Definition: seisblockswriter.h:99
ObjectSet< BlockSet > blocksets_
Definition: seisblockswriter.h:84
bool isfinished_
Definition: seisblockswriter.h:106
Position.
Definition: commontypes.h:38
Base class for Reader and Writer.
Definition: seisblocksdata.h:129
ManagedObjectSet< Block > BlockSet
Definition: seisblockswriter.h:72
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
Single block of data.
Definition: seisblocksdata.h:70
Scaled down survey geometry for an inl/crl geometry.
Definition: survgeom3d.h:26
Seismic trace.
Definition: seistrc.h:31
bool needreset_
Definition: seisblockswriter.h:103
OD::FPDataRepType usefprep_
Definition: seisblockswriter.h:98
Definition: uistring.h:299
int nrcomponents_
Definition: seisblockswriter.h:105
BufferStringSet compnms_
Definition: seisblockswriter.h:100
BufferString cubename_
Definition: seisblockswriter.h:96
const Dimensions dims_
Definition: seisblockswriter.h:83
OD::FPDataRepType specfprep_
Definition: seisblockswriter.h:97
Definition: seisblockswriter.h:70
Pos::IdxPairDataSet & columns_
Definition: seisblockswriter.h:109
Block & firstBlock()
Definition: seisblockswriter.h:77
BufferString filenamebase_
Definition: seisblockswriter.h:95
ObjectSet where the objects contained are owned by this set.
Definition: manobjectset.h:49
Position info for an entire 3D cube. The LineData&#39;s are not sorted.
Definition: posinfo.h:96
Generalization of something (e.g. a computation) that needs to be done in multiple steps...
Definition: task.h:26
TypeSet< ZEvalPos > ZEvalPosSet
Definition: seisblockswriter.h:68
Interval< IdxType > globzidxrg_
Definition: seisblockswriter.h:107
Definition: seisblocksdata.h:65
Linear scaling.
Definition: scaler.h:55
Definition: seisblocksdata.h:64
std::pair< IdxType, float > ZEvalPos
Definition: seisblockswriter.h:67

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