OpendTect  6.6
seisposindexer.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  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "seismod.h"
16 #include "seisposkey.h"
17 #include "threadlock.h"
18 #include "ranges.h"
19 #include "sets.h"
20 #include "od_iosfwd.h"
21 
22 
23 template <class T> class DataInterpreter;
24 
25 namespace Seis
26 {
27 
29 {
30 public:
31 
33 
34  virtual ~PosKeyList() {}
35  virtual od_int64 size() const = 0;
36  virtual bool key(od_int64,PosKey&) const = 0;
37 
38 };
39 
48 {
49 public:
50 
60 
61 
62  PosIndexer(const PosKeyList&,bool doindex,
63  bool excludeunreasonable);
66  virtual ~PosIndexer();
67 
68  od_int64 findFirst(const BinID&) const;
71  od_int64 findFirst(int) const;
75  bool chckoffs=true) const;
79  od_int64 findOcc(const PosKey&,int occ) const;
83 
84  inline bool validIdx( od_int64 idx ) const
85  { return idx >= 0 && idx < maxidx_; }
86  inline od_int64 maxIdx() const { return maxidx_; }
87 
88  void reIndex();
89 
90  inline Seis::GeomType geomType() const
91  { return Seis::geomTypeOf(is2d_,isps_); }
92 
93  const Interval<int>& inlRange() const { return inlrg_; }
94  const Interval<int>& crlRange() const { return crlrg_; }
95  const Interval<int>& trcNrRange() const { return crlrg_; }
96  const Interval<float>& offsetRange() const { return offsrg_; }
97  od_int64 nrRejected() const { return nrrejected_; }
98 
99  bool ioCompressed() const
100  { return iocompressedmgr_; }
101  void setIOCompressed(bool yn=true)
102  { iocompressedmgr_ = yn; }
103  bool dumpTo(od_ostream& strm) const;
104  bool readFrom(const char* nm, od_int64 offset,
105  bool all,
109 
110  const TypeSet<int>& getInls() const { return inls_; }
111  void getCrls(int inl,TypeSet<int>&) const;
112 
113  void add(const Seis::PosKey&, od_int64 offset );
115 
116  mDeprecated("Use setEmpty") void empty() { setEmpty(); }
117  void setEmpty();
118 
119 protected:
120 
127  DataInterpreter<od_int64>* ) const;
128 
133 
137  int curinl_;
138 
139  const PosKeyList& pkl_;
140  bool is2d_;
141  bool isps_;
147 
151 
156 
157  bool isReasonable(const BinID&) const;
158  int getFirstIdxs(const BinID&,int&,int&);
160  const FileIdxSet&) const;
162  FileIdxSet&) const;
163 
164 };
165 
166 
167 
168 } // namespace
169 
Seis::PosIndexer::offsetRange
const Interval< float > & offsetRange() const
Definition: seisposindexer.h:96
Seis::PosIndexer
builds an index of a list of positions, making it easy to find a specific position.
Definition: seisposindexer.h:48
Seis::PosIndexer::KeyIdxType
Index_Type KeyIdxType
Definition: seisposindexer.h:51
Seis::PosIndexer::inlfileoffsets_
TypeSet< od_int64 > inlfileoffsets_
Definition: seisposindexer.h:132
Seis::PosIndexer::mDeprecated
mDeprecated("Use setEmpty") void empty()
Definition: seisposindexer.h:116
Seis::PosIndexer::ioCompressed
bool ioCompressed() const
Definition: seisposindexer.h:99
Seis::PosIndexer::excludeunreasonable_
bool excludeunreasonable_
Definition: seisposindexer.h:142
ObjectSet
Set of pointers to objects.
Definition: commontypes.h:31
Seis::PosIndexer::getFirstIdxs
int getFirstIdxs(const BinID &, int &, int &)
Seis
Summary for a Seismic object.
Definition: segydirectdef.h:22
Seis::PosIndexer::validIdx
bool validIdx(od_int64 idx) const
Definition: seisposindexer.h:84
od_int64
#define od_int64
Definition: plftypes.h:35
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Seis::PosIndexer::curidxset_
TypeSet< od_int64 > curidxset_
Definition: seisposindexer.h:135
od_istream
OD class for stream read common access to the std::cin.
Definition: od_istream.h:24
seisposkey.h
Seis::PosIndexer::trcNrRange
const Interval< int > & trcNrRange() const
Definition: seisposindexer.h:95
Seis::PosIndexer::int32interp_
DataInterpreter< int > * int32interp_
Definition: seisposindexer.h:130
Seis::PosIndexer::Int64Interpreter
DataInterpreter< od_int64 > Int64Interpreter
Definition: seisposindexer.h:58
Seis::PosIndexer::setIOCompressed
void setIOCompressed(bool yn=true)
Definition: seisposindexer.h:101
Seis::PosIndexer::isps_
bool isps_
Definition: seisposindexer.h:141
Seis::PosIndexer::maxIdx
od_int64 maxIdx() const
Definition: seisposindexer.h:86
Seis::PosIndexer::inlRange
const Interval< int > & inlRange() const
Definition: seisposindexer.h:93
od_stream_Pos
od_int64 od_stream_Pos
Definition: od_iosfwd.h:20
DataInterpreter
Byte-level data interpreter.
Definition: cbvswriter.h:21
Seis::PosIndexer::strm_
od_istream * strm_
Definition: seisposindexer.h:129
Seis::PosIndexer::inlrg_
Interval< int > inlrg_
Definition: seisposindexer.h:148
Seis::PosIndexer::crlsets_
ObjectSet< TypeSet< int > > crlsets_
Definition: seisposindexer.h:144
Seis::PosIndexer::readLineCompressed
bool readLineCompressed(KeyIdxSet &, FileIdxSet &) const
Seis::PosIndexer::dumpTo
bool dumpTo(od_ostream &strm) const
Seis::PosIndexer::iocompressedmgr_
bool iocompressedmgr_
Definition: seisposindexer.h:155
Seis::PosKeyList::size
virtual od_int64 size() const =0
Seis::PosIndexer::idxsets_
ObjectSet< TypeSet< od_int64 > > idxsets_
Definition: seisposindexer.h:145
Seis::PosIndexer::Int32Interpreter
DataInterpreter< int > Int32Interpreter
Definition: seisposindexer.h:57
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
Seis::PosIndexer::getInls
const TypeSet< int > & getInls() const
Definition: seisposindexer.h:110
Seis::PosIndexer::geomType
Seis::GeomType geomType() const
Definition: seisposindexer.h:90
Seis::PosIndexer::KeyIdxSet
TypeSet< KeyIdxType > KeyIdxSet
Definition: seisposindexer.h:52
Seis::PosKeyList::key
virtual bool key(od_int64, PosKey &) const =0
Seis::PosIndexer::int64interp_
DataInterpreter< od_int64 > * int64interp_
Definition: seisposindexer.h:131
Seis::PosIndexer::FileIdxType
PosKeyList::FileIdxType FileIdxType
Definition: seisposindexer.h:53
Seis::PosIndexer::curcrlset_
TypeSet< int > curcrlset_
Definition: seisposindexer.h:136
Seis::PosIndexer::crlRange
const Interval< int > & crlRange() const
Definition: seisposindexer.h:94
Seis::PosIndexer::PosIndexer
PosIndexer(const PosKeyList &, bool doindex, bool excludeunreasonable)
Seis::PosIndexer::nrRejected
od_int64 nrRejected() const
Definition: seisposindexer.h:97
Seis::geomTypeOf
GeomType geomTypeOf(const char *)
all
@ all
Definition: i_layout.h:35
Seis::PosIndexer::findFirst
od_int64 findFirst(const BinID &) const
Seis::PosIndexer::dumpLineCompressed
void dumpLineCompressed(od_ostream &, const KeyIdxSet &, const FileIdxSet &) const
Seis::PosIndexer::maxidx_
od_int64 maxidx_
Definition: seisposindexer.h:146
Seis::PosIndexer::reIndex
void reIndex()
Seis::PosKeyList::FileIdxType
od_int64 FileIdxType
Definition: seisposindexer.h:32
Index_Type
od_int32 Index_Type
Definition: commontypes.h:32
Seis::PosIndexer::readHeader
bool readHeader(DataInterpreter< int > *, DataInterpreter< od_int64 > *, DataInterpreter< float > *)
Seis::PosIndexer::goodcrlrg_
Interval< int > goodcrlrg_
Definition: seisposindexer.h:153
Seis::PosIndexer::is2d_
bool is2d_
Definition: seisposindexer.h:140
Seis::PosIndexer::findOcc
od_int64 findOcc(const PosKey &, int occ) const
ignores offset
Seis::PosIndexer::findAll
TypeSet< od_int64 > findAll(const PosKey &) const
ignores offset
Seis::PosIndexer::FileOffsType
od_stream_Pos FileOffsType
Definition: seisposindexer.h:55
Seis::PosIndexer::crlrg_
Interval< int > crlrg_
Definition: seisposindexer.h:149
Seis::PosIndexer::FloatInterpreter
DataInterpreter< float > FloatInterpreter
Definition: seisposindexer.h:59
Seis::PosIndexer::findFirst
od_int64 findFirst(const PosKey &, bool chckoffs=true) const
Seis::PosKeyList::~PosKeyList
virtual ~PosKeyList()
Definition: seisposindexer.h:34
Seis::PosIndexer::nrrejected_
od_int64 nrrejected_
Definition: seisposindexer.h:154
od_iosfwd.h
Seis::PosIndexer::findFirst
od_int64 findFirst(int) const
Seis::PosIndexer::pkl_
const PosKeyList & pkl_
Definition: seisposindexer.h:139
threadlock.h
Seis::PosIndexer::goodinlrg_
Interval< int > goodinlrg_
Definition: seisposindexer.h:152
Seis::PosIndexer::FileOffsSet
TypeSet< FileOffsType > FileOffsSet
Definition: seisposindexer.h:56
Seis::PosKey
Definition: seisposkey.h:23
Seis::PosIndexer::readFrom
bool readFrom(const char *nm, od_int64 offset, bool all, DataInterpreter< int > *=0, DataInterpreter< od_int64 > *=0, DataInterpreter< float > *=0)
Seis::PosIndexer::FileIdxSet
TypeSet< FileIdxType > FileIdxSet
Definition: seisposindexer.h:54
Seis::PosIndexer::add
void add(const Seis::PosKey &, od_int64 offset)
Adds the pk to index. Called from reIndex.
ranges.h
Seis::GeomType
GeomType
Definition: seistype.h:32
sets.h
Interval< int >
Seis::PosIndexer::readLine
bool readLine(TypeSet< int > &crl, TypeSet< od_int64 > &, DataInterpreter< int > *, DataInterpreter< od_int64 > *) const
od_ostream
OD class for stream write common access to the user log file, or std::cout in other than od_main.
Definition: od_ostream.h:26
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
Seis::PosIndexer::curinl_
int curinl_
Definition: seisposindexer.h:137
Seis::PosKeyList
Definition: seisposindexer.h:29
Seis::PosIndexer::setEmpty
void setEmpty()
Seis::PosIndexer::inls_
TypeSet< int > inls_
Definition: seisposindexer.h:143
Seis::PosIndexer::getCrls
void getCrls(int inl, TypeSet< int > &) const
Seis::PosIndexer::lock_
Threads::Lock lock_
Definition: seisposindexer.h:134
Seis::PosIndexer::offsrg_
Interval< float > offsrg_
Definition: seisposindexer.h:150
Seis::PosIndexer::isReasonable
bool isReasonable(const BinID &) const
Seis::PosIndexer::~PosIndexer
virtual ~PosIndexer()
TypeSet
Sets of (small) copyable elements.
Definition: commontypes.h:29

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