OpendTect  6.6
trckeysampling.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: Feb 2008
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "basicmod.h"
15 #include "binid.h"
16 #include "ranges.h"
17 #include "typeset.h"
18 #include "trckey.h"
19 
20 namespace OD
21 {
22  namespace JSON
23  {
24  class Object;
25  };
26 };
27 
29 
35 {
36 public:
37 
41 
42  bool is2D() const { return TrcKey::is2D(survid_); }
44 
46  const Interval<int>& trcnrrg);
48  void get(Interval<int>& linerg,Interval<int>& trcnrrg) const;
50  TrcKeySampling getLineChunk(int totalchunks,int chunknr) const;
52 
55  float lineDistance() const;
58  float trcDistance() const;
62  void setTrcRange(const Interval<int>&);
63 
64  bool includes(const TrcKeySampling&,
65  bool ignoresteps=false) const;
66  bool includes(const TrcKey&) const;
67  bool includes(const TrcKey&,bool ignoresteps) const;
68  bool lineOK(Pos::LineID) const;
69  bool trcOK(Pos::TraceID) const;
70 
71  bool lineOK(Pos::LineID,bool ignoresteps) const;
72  bool trcOK(Pos::TraceID,bool ignoresteps) const;
73 
74  void include(const TrcKey&);
77  void include(const TrcKeySampling&, bool ignoresteps=false );
78  bool isDefined() const;
79  void limitTo(const TrcKeySampling&,bool ignoresteps=false);
83  void expand(int nrlines,int nrtrcs);
84 
85  int lineIdx(Pos::LineID) const;
86  int trcIdx(Pos::TraceID) const;
87  inline Pos::LineID lineID(int) const;
88  inline Pos::TraceID traceID(int) const;
89 
90  od_int64 globalIdx(const TrcKey&) const;
91  od_int64 globalIdx(const BinID&) const;
92  BinID atIndex(int i0,int i1) const;
93  BinID atIndex(od_int64 globalidx) const;
94  TrcKey trcKeyAt(int i0,int i1) const;
95  TrcKey trcKeyAt(od_int64 globalidx) const;
96  TrcKey toTrcKey(const Coord&,float* distance=nullptr) const;
97  Coord toCoord(const BinID&) const;
98  TrcKey center() const;
99  int nrLines() const;
100  int nrTrcs() const;
101  od_int64 totalNr() const;
102  bool isEmpty() const;
103  void neighbors(od_int64 globalidx,TypeSet<od_int64>&) const;
104  void neighbors(const TrcKey&,TypeSet<TrcKey>&) const;
105 
106  void init(bool settoSI=true);
109  void init(const TrcKey&);
110 
111  void set2DDef();
113  void normalize();
115  void normalise();
116  void getRandomSet(int nr,TypeSet<TrcKey>&) const;
117 
119  TrcKeySampling&) const;
121 
122  BinID getNearest(const BinID&) const;
123  TrcKey getNearest(const TrcKey&) const;
126  void snapToSurvey();
130  bool operator==(const TrcKeySampling&) const;
131  bool operator!=(const TrcKeySampling&) const;
133 
134  bool usePar(const IOPar&);
135  void fillPar(IOPar&) const;
136  static void removeInfo(IOPar&);
138  bool useJSON(const OD::JSON::Object&);
139  void toString(BufferString&) const;
140 
145 
146  //Legacy. Will be removed
147  TrcKeySampling(bool settoSI);
148  StepInterval<int> inlRange() const { return lineRange(); }
149  StepInterval<int> crlRange() const { return trcRange(); }
150  void setInlRange(const Interval<int>& rg) {setLineRange(rg);}
151  void setCrlRange(const Interval<int>& rg) {setTrcRange(rg);}
152 
153  int nrInl() const { return nrLines(); }
154  int nrCrl() const { return nrTrcs(); }
155 
156  int inlIdx( Pos::LineID lid ) const {return lineIdx(lid);}
157  int crlIdx( Pos::TraceID tid ) const { return trcIdx(tid); }
158  inline void include( const BinID& bid )
159  { includeLine(bid.inl()); includeTrc(bid.crl()); }
160  void includeInl( int inl ) { includeLine(inl); }
161  void includeCrl( int crl ) { includeTrc(crl); }
162  inline bool includes( const BinID& bid ) const
163  { return lineOK(bid.inl()) && trcOK(bid.crl()); }
164  inline bool inlOK( int inl ) const { return lineOK(inl); }
165  inline bool crlOK( int crl ) const { return trcOK(crl); }
166 
167  inline bool includes(const BinID& bid, bool ignoresteps) const
168  { return lineOK(bid.inl(), ignoresteps ) &&
169  trcOK(bid.crl(), ignoresteps ); }
170 
171  mDeprecated("Use start_ instead") BinID& start;
172  mDeprecated("Use stop_ instead") BinID& stop;
173  mDeprecated("Use step_ instead") BinID& step;
174 
175  void shrinkTo(const TrcKeySampling& innertks);
176  void growTo(const TrcKeySampling& outertks);
177 private:
178  bool doLimitTo(StepInterval<int>&, const StepInterval<int>&,
179  const bool ignoresteps,
180  const bool nostephandling);
181 };
182 
183 
185 {
186 public:
187 
188  void isOK() const;
191 };
192 
193 
194 
195 
201 {
202 public:
203  TrcKeySamplingIterator() : tks_( true ) { reset(); }
205  { setSampling( hs ); }
206 
208 
209  void reset();
210  void setNextPos(const TrcKey& trk) { curpos_ = tks_.globalIdx(trk); }
211  bool next(TrcKey&) const;
212  bool next(BinID&) const;
213 
214  od_int64 curIdx() const { return curpos_; }
215  TrcKey curTrcKey() const { return tks_.atIndex( curIdx() );}
216 
217 protected:
218 
222 };
223 
224 
225 
226 
229 
230 
231 inline int TrcKeySampling::lineIdx( Pos::LineID line ) const
232 {
233  return step_.lineNr()
234  ? (line-start_.lineNr()) / step_.lineNr()
235  : (line==start_.lineNr() ? 0 : -1);
236 }
237 
238 
239 inline int TrcKeySampling::trcIdx( Pos::TraceID trcid ) const
240 {
241  return step_.trcNr()
242  ? (trcid-start_.trcNr()) / step_.trcNr()
243  : (trcid==start_.trcNr() ? 0 : -1);
244 }
245 
246 
247 inline Pos::LineID TrcKeySampling::lineID( int lidx ) const
248 {
249  return start_.lineNr() + step_.lineNr() * lidx;
250 }
251 
252 
253 inline Pos::TraceID TrcKeySampling::traceID( int tidx ) const
254 {
255  return start_.trcNr() + step_.trcNr() * tidx;
256 }
257 
258 
TrcKeySampling::isEmpty
bool isEmpty() const
TrcKeySampling::get
void get(Interval< int > &linerg, Interval< int > &trcnrrg) const
steps filled if available
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
TrcKeySampling::trcKeyAt
TrcKey trcKeyAt(int64_t globalidx) const
TrcKeySampling::TrcKeySampling
TrcKeySampling(const TrcKeySampling &)
TrcKeySampling::lineID
Pos::LineID lineID(int) const
Definition: trckeysampling.h:247
TrcKeySampling::lineOK
bool lineOK(Pos::LineID) const
TrcKeySampling::totalNr
int64_t totalNr() const
Pos::IdxPair::crl
IdxType & crl()
Definition: posidxpair.h:47
TrcKeySampling::normalise
void normalise()
TrcKeySamplingIterator::curIdx
int64_t curIdx() const
Definition: trckeysampling.h:214
TrcKeySampling::inlIdx
int inlIdx(Pos::LineID lid) const
Definition: trckeysampling.h:156
TrcKeySampling::lineDistance
float lineDistance() const
TrcKeySampling::inlOK
bool inlOK(int inl) const
Definition: trckeysampling.h:164
TrcKeySampling::is2D
bool is2D() const
Definition: trckeysampling.h:42
TrcKeySampling::setCrlRange
void setCrlRange(const Interval< int > &rg)
Definition: trckeysampling.h:151
TrcKeySampling::nrCrl
int nrCrl() const
Definition: trckeysampling.h:154
TrcKeySampling::getGeomID
Pos::GeomID getGeomID() const
TrcKeySampling::removeInfo
static void removeInfo(IOPar &)
trckey.h
od_int64
#define od_int64
Definition: plftypes.h:35
TrcKeySamplingIterator::reset
void reset()
OD
OpendTect.
Definition: commontypes.h:28
TrcKeySampling::TrcKeySampling
TrcKeySampling()
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
TrcKeySamplingIterator::tks_
TrcKeySampling tks_
Definition: trckeysampling.h:219
TrcKeySampling::neighbors
void neighbors(const TrcKey &, TypeSet< TrcKey > &) const
Pos::SurvID
Index_Type SurvID
Definition: commontypes.h:84
TrcKeySampling::trcKeyAt
TrcKey trcKeyAt(int i0, int i1) const
TrcKeySampling::crlOK
bool crlOK(int crl) const
Definition: trckeysampling.h:165
TrcKeySampling::start_
BinID start_
Definition: trckeysampling.h:142
binid.h
TrcKeySampling::limitToWithUdf
void limitToWithUdf(const TrcKeySampling &)
typeset.h
TrcKeySamplingIterator::TrcKeySamplingIterator
TrcKeySamplingIterator()
Definition: trckeysampling.h:203
Pos::IdxPair::trcNr
IdxType & trcNr()
Definition: posidxpair.h:48
TrcKeySamplingIterator
Finds next BinID in TrcKeySampling; initializes to first position.
Definition: trckeysampling.h:201
TrcKeySamplingSet
Definition: trckeysampling.h:185
TrcKeySampling::operator=
TrcKeySampling & operator=(const TrcKeySampling &)
TrcKeySampling::set
TrcKeySampling & set(const Interval< int > &linerg, const Interval< int > &trcnrrg)
steps copied if available
TrcKeySampling::trcRange
StepInterval< int > trcRange() const
TrcKeySampling::crlIdx
int crlIdx(Pos::TraceID tid) const
Definition: trckeysampling.h:157
TrcKeySampling::include
void include(const TrcKeySampling &, bool ignoresteps=false)
TrcKeySampling::getNearest
BinID getNearest(const BinID &) const
TrcKeySamplingIterator::setNextPos
void setNextPos(const TrcKey &trk)
Definition: trckeysampling.h:210
TrcKey::is2D
bool is2D() const
Definition: trckey.h:43
Pos::LineID
Index_Type LineID
Definition: commontypes.h:85
TrcKeySampling::nrTrcs
int nrTrcs() const
TrcKeySampling::operator==
bool operator==(const TrcKeySampling &) const
TrcKeySampling::fillPar
void fillPar(IOPar &) const
Keys as in keystrs.h.
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
StepInterval< int >
TrcKeySampling::atIndex
BinID atIndex(int i0, int i1) const
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
TrcKeySampling::atIndex
BinID atIndex(int64_t globalidx) const
Pos::IdxPair::lineNr
IdxType & lineNr()
Definition: posidxpair.h:43
TrcKeySampling::init
void init(const TrcKey &)
TrcKeySampling::useJSON
bool useJSON(const OD::JSON::Object &)
TrcKeySampling::inlRange
StepInterval< int > inlRange() const
Definition: trckeysampling.h:148
TrcKeySampling::toTrcKey
TrcKey toTrcKey(const Coord &, float *distance=nullptr) const
TrcKeySampling::includeCrl
void includeCrl(int crl)
Definition: trckeysampling.h:161
TrcKeySampling::includes
bool includes(const BinID &bid, bool ignoresteps) const
Definition: trckeysampling.h:167
Pos::TraceID
Index_Type TraceID
Definition: commontypes.h:86
TrcKeySampling::TrcKeySampling
TrcKeySampling(Pos::GeomID)
TrcKeySampling::normalize
void normalize()
Makes sure start_<stop_ and steps are non-zero.
sKey::Object
FixedString Object()
Definition: keystrs.h:112
TrcKeySampling::operator!=
bool operator!=(const TrcKeySampling &) const
TrcKeySampling::survid_
Pos::SurvID survid_
Definition: trckeysampling.h:141
TrcKeySampling::trcOK
bool trcOK(Pos::TraceID) const
TrcKeySampling::lineRange
StepInterval< int > lineRange() const
TrcKeySampling::getInterSection
bool getInterSection(const TrcKeySampling &, TrcKeySampling &) const
Returns false if intersection is empty.
TrcKeySampling::snapToSurvey
void snapToSurvey()
mDeprecated
#define mDeprecated(msg)
Definition: plfdefs.h:215
TrcKeySampling::includes
bool includes(const BinID &bid) const
Definition: trckeysampling.h:162
HorSampling
TrcKeySampling HorSampling
Definition: trckeysampling.h:227
TrcKeySampling::lineIdx
int lineIdx(Pos::LineID) const
Definition: trckeysampling.h:231
TrcKeySampling::includeInl
void includeInl(int inl)
Definition: trckeysampling.h:160
TrcKeySamplingSet::add
void add(Pos::GeomID)
TrcKeySampling::traceID
Pos::TraceID traceID(int) const
Definition: trckeysampling.h:253
TrcKeySampling::init
void init(bool settoSI=true)
Sets to survey values or mUdf(int) (but step 1)
TrcKeySampling::trcDistance
float trcDistance() const
TrcKeySamplingIterator::TrcKeySamplingIterator
TrcKeySamplingIterator(const TrcKeySampling &hs)
Definition: trckeysampling.h:204
TrcKeySampling::step_
BinID step_
Definition: trckeysampling.h:144
TrcKeySampling::isDefined
bool isDefined() const
TrcKeySampling::usePar
bool usePar(const IOPar &)
Keys as in keystrs.h.
TrcKeySampling::TrcKeySampling
TrcKeySampling(bool settoSI)
TrcKeySamplingSet::isPresent
bool isPresent(Pos::GeomID)
TrcKeySampling::getNearest
TrcKey getNearest(const TrcKey &) const
TrcKeySampling::setLineRange
void setLineRange(const Interval< int > &)
TrcKeySampling::toCoord
Coord toCoord(const BinID &) const
TrcKeySampling::limitTo
void limitTo(const TrcKeySampling &, bool ignoresteps=false)
TrcKeySampling::trcOK
bool trcOK(Pos::TraceID, bool ignoresteps) const
TrcKeySamplingIterator::totalnr_
int64_t totalnr_
Definition: trckeysampling.h:220
TrcKeySampling::trcIdx
int trcIdx(Pos::TraceID) const
Definition: trckeysampling.h:239
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
TrcKey
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:28
TrcKeySampling::include
void include(const TrcKey &)
TrcKeySampling::expand
void expand(int nrlines, int nrtrcs)
TrcKeySamplingIterator::curpos_
Threads::Atomic< int64_t > curpos_
Definition: trckeysampling.h:221
TrcKeySampling::fillJSON
void fillJSON(OD::JSON::Object &) const
HorSamplingIterator
TrcKeySamplingIterator HorSamplingIterator
Definition: trckeysampling.h:228
TrcKeySamplingIterator::curTrcKey
TrcKey curTrcKey() const
Definition: trckeysampling.h:215
TrcKeyPath
TypeSet< TrcKey > TrcKeyPath
Definition: trckeysampling.h:26
TrcKeySampling::includes
bool includes(const TrcKey &) const
Pos::IdxPair::inl
IdxType & inl()
Definition: posidxpair.h:42
TrcKeySampling::nrInl
int nrInl() const
Definition: trckeysampling.h:153
TrcKeySampling::neighbors
void neighbors(int64_t globalidx, TypeSet< int64_t > &) const
TrcKeySampling::includes
bool includes(const TrcKey &, bool ignoresteps) const
TrcKeySamplingIterator::setSampling
void setSampling(const TrcKeySampling &)
TrcKeySampling::stop_
BinID stop_
Definition: trckeysampling.h:143
TrcKeySampling::lineOK
bool lineOK(Pos::LineID, bool ignoresteps) const
TrcKeySamplingIterator::next
bool next(TrcKey &) const
TrcKeySampling::setTrcRange
void setTrcRange(const Interval< int > &)
TrcKeySampling::globalIdx
int64_t globalIdx(const BinID &) const
MPE::step_
RowCol step_
Definition: horizontracker.h:140
TrcKeySampling::getLineChunk
TrcKeySampling getLineChunk(int totalchunks, int chunknr) const
totalchunks > 0, 0 <= chunknr < totalchunks
TrcKeySampling::getRandomSet
void getRandomSet(int nr, TypeSet< TrcKey > &) const
TrcKeySampling::includeLine
void includeLine(Pos::LineID)
TrcKeySampling::toString
void toString(BufferString &) const
Nice text for info.
TrcKeySamplingIterator::next
bool next(BinID &) const
TrcKeySampling::globalIdx
int64_t globalIdx(const TrcKey &) const
ranges.h
TrcKeySamplingSet::isOK
void isOK() const
Interval< int >
TrcKeySampling::includeTrc
void includeTrc(Pos::TraceID)
TrcKeySampling::include
void include(const BinID &bid)
Definition: trckeysampling.h:158
TrcKeySampling::includes
bool includes(const TrcKeySampling &, bool ignoresteps=false) const
TrcKeySampling::init
bool init(Pos::GeomID)
TrcKeySampling::center
TrcKey center() const
Threads::Atomic
Definition: atomic.h:27
private
#define private
Definition: winstreambuf.h:13
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
TrcKeySampling::set2DDef
void set2DDef()
Sets ranges to 0-maxint.
TrcKeySampling::nrLines
int nrLines() const
Pos::GeomID
Index_Type GeomID
Definition: commontypes.h:87
OD::JSON::Object
ValueSet where the values and subsets have a key.
Definition: odjson.h:283
TrcKeySampling::setInlRange
void setInlRange(const Interval< int > &rg)
Definition: trckeysampling.h:150
TypeSet< TrcKey >
TrcKeySampling::crlRange
StepInterval< int > crlRange() const
Definition: trckeysampling.h:149

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