OpendTect  6.3
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 ________________________________________________________________________
10 
11 -*/
12 
13 #include "basicmod.h"
14 #include "binid.h"
15 #include "ranges.h"
16 #include "typeset.h"
17 #include "trckey.h"
18 
20 
26 {
27 public:
28 
29  TrcKeySampling();
30  TrcKeySampling(Pos::GeomID);
31  TrcKeySampling(const TrcKey&);
32  TrcKeySampling(const TrcKeySampling&);
33 
34  bool is2D() const { return TrcKey::is2D(survid_); }
35  Pos::GeomID getGeomID() const;
36 
37  TrcKeySampling& set(const Interval<int>& linerg,
38  const Interval<int>& trcnrrg);
40  void get(Interval<int>& linerg,Interval<int>& trcnrrg) const;
42  TrcKeySampling getLineChunk(int totalchunks,int chunknr) const;
44 
45  StepInterval<int> lineRange() const;
46  StepInterval<int> trcRange() const;
47  float lineDistance() const;
50  float trcDistance() const;
53  void setLineRange(const Interval<int>&);
54  void setTrcRange(const Interval<int>&);
55 
56  bool includes(const TrcKeySampling&,
57  bool ignoresteps=false) const;
58  bool includes(const TrcKey&) const;
59  bool lineOK(Pos::LineID,bool ignoresteps=false) const;
60  bool trcOK(Pos::TraceID,bool ignoresteps=false) const;
61 
62  void include(const TrcKey&);
63  void includeLine(Pos::LineID);
64  void includeTrc(Pos::TraceID);
65  void include(const TrcKeySampling&, bool ignoresteps=false );
66  bool isDefined() const;
67  void limitTo(const TrcKeySampling&,bool ignoresteps=false);
68  void limitToWithUdf(const TrcKeySampling&);
71  void shrinkTo(const TrcKeySampling& innertks);
72  void growTo(const TrcKeySampling& outertks);
73  void expand(int nrlines,int nrtrcs);
74 
75  inline int lineIdx(Pos::LineID) const;
76  inline int trcIdx(Pos::TraceID) const;
77  inline Pos::LineID lineID(int) const;
78  inline Pos::TraceID traceID(int) const;
79 
80  od_int64 globalIdx(const TrcKey&) const;
81  od_int64 globalIdx(const BinID&) const;
82  BinID atIndex(int i0,int i1) const;
83  BinID atIndex(od_int64 globalidx) const;
84  TrcKey trcKeyAt(int i0,int i1) const;
85  TrcKey trcKeyAt(od_int64 globalidx) const;
86  TrcKey toTrcKey(const Coord&,float* distance=0) const;
87  Coord toCoord(const BinID&) const;
88  TrcKey center() const;
89  int nrLines() const;
90  int nrTrcs() const;
91  od_int64 totalNr() const;
92  bool isEmpty() const;
93  void neighbors(od_int64 globalidx,TypeSet<od_int64>&) const;
94  void neighbors(const TrcKey&,TypeSet<TrcKey>&) const;
95  bool toNext(BinID&) const;
96 
97  void init(bool settoSI=true);
99  bool init(Pos::GeomID);
100 
101  void set2DDef();
103  void normalise();
105  void getRandomSet(int nr,TypeSet<TrcKey>&) const;
106 
107  bool getInterSection(const TrcKeySampling&,
108  TrcKeySampling&) const;
110 
111  BinID getNearest(const BinID&) const;
112  TrcKey getNearest(const TrcKey&) const;
115  void snapToSurvey();
119  bool operator==(const TrcKeySampling&) const;
120  bool operator!=(const TrcKeySampling&) const;
121  TrcKeySampling& operator=(const TrcKeySampling&);
122 
123  bool usePar(const IOPar&);
124  void fillPar(IOPar&) const;
125  static void removeInfo(IOPar&);
126  void toString(BufferString&) const;
127 
132 
133  //Legacy. Will be removed
134  TrcKeySampling(bool settoSI);
135  StepInterval<int> inlRange() const { return lineRange(); }
136  StepInterval<int> crlRange() const { return trcRange(); }
137  void setInlRange(const Interval<int>& rg) {setLineRange(rg);}
138  void setCrlRange(const Interval<int>& rg) {setTrcRange(rg);}
139 
140  int nrInl() const { return nrLines(); }
141  int nrCrl() const { return nrTrcs(); }
142 
143  int inlIdx( Pos::LineID lid ) const {return lineIdx(lid);}
144  int crlIdx( Pos::TraceID tid ) const { return trcIdx(tid); }
145  inline void include( const BinID& bid )
146  { includeLine(bid.inl()); includeTrc(bid.crl()); }
147  void includeInl( int inl ) { includeLine(inl); }
148  void includeCrl( int crl ) { includeTrc(crl); }
149  inline bool includes(const BinID& bid,bool ignoresteps=false) const
150  { return lineOK(bid.inl(),ignoresteps) &&
151  trcOK(bid.crl(),ignoresteps); }
152  inline bool inlOK( int inl ) const { return lineOK(inl); }
153  inline bool crlOK( int crl ) const { return trcOK(crl); }
154 
158 private:
159  bool doLimitTo(StepInterval<int>&, const StepInterval<int>&,
160  const bool ignoresteps,
161  const bool nostephandling);
162 };
163 
164 
166 {
167 public:
168 
169  void isOK() const;
170  void add(Pos::GeomID);
171  bool isPresent(Pos::GeomID);
172 };
173 
174 
175 
176 
182 {
183 public:
184  TrcKeySamplingIterator();
185  TrcKeySamplingIterator(const TrcKeySampling&);
186 
187  void setSampling(const TrcKeySampling&);
188  void setCurrentPos( od_int64 pos ) { curpos_ = pos; }
189  void reset();
190 
191  bool next() const;
192 
193  TrcKey curTrcKey() const;
194  BinID curBinID() const;
195 
196  od_int64 curIdx() const { return curpos_; }
197  od_int64 totalNr() const { return totalnr_; }
198 
199  void fillPar(IOPar&) const;
200  void usePar(const IOPar&);
201 
202 protected:
203 
207 };
208 
209 
210 
211 
214 
215 
216 inline int TrcKeySampling::lineIdx( Pos::LineID line ) const
217 {
218  return step_.lineNr()
219  ? (line-start_.lineNr()) / step_.lineNr()
220  : (line==start_.lineNr() ? 0 : -1);
221 }
222 
223 
224 inline int TrcKeySampling::trcIdx( Pos::TraceID trcid ) const
225 {
226  return step_.trcNr()
227  ? (trcid-start_.trcNr()) / step_.trcNr()
228  : (trcid==start_.trcNr() ? 0 : -1);
229 }
230 
231 
232 inline Pos::LineID TrcKeySampling::lineID( int lidx ) const
233 {
234  return start_.lineNr() + step_.lineNr() * lidx;
235 }
236 
237 
238 inline Pos::TraceID TrcKeySampling::traceID( int tidx ) const
239 {
240  return start_.trcNr() + step_.trcNr() * tidx;
241 }
#define mExpClass(module)
Definition: commondefs.h:157
Index_Type LineID
Definition: commontypes.h:46
int64_t totalnr_
Definition: trckeysampling.h:205
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
TrcKeySampling HorSampling
Definition: trckeysampling.h:212
void setCrlRange(const Interval< int > &rg)
Definition: trckeysampling.h:138
Pos::LineID lineID(int) const
Definition: trckeysampling.h:232
Index_Type TraceID
Definition: commontypes.h:47
int inlIdx(Pos::LineID lid) const
Definition: trckeysampling.h:143
bool crlOK(int crl) const
Definition: trckeysampling.h:153
void usePar(const IOPar &iop, ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:200
#define od_int64
Definition: plftypes.h:34
TrcKeySamplingIterator HorSamplingIterator
Definition: trckeysampling.h:213
Pos::SurvID survid_
Definition: trckeysampling.h:128
bool init()
IdxType & inl()
Definition: posidxpair.h:41
bool inlOK(int inl) const
Definition: trckeysampling.h:152
int64_t curIdx() const
Definition: trckeysampling.h:196
int nrInl() const
Definition: trckeysampling.h:140
TypeSet< TrcKey > TrcKeyPath
Definition: trckeysampling.h:19
Finds next BinID in TrcKeySampling; initializes to first position.
Definition: trckeysampling.h:181
BinID & step
Definition: trckeysampling.h:157
Pos::TraceID traceID(int) const
Definition: trckeysampling.h:238
IdxType & trcNr()
Definition: posidxpair.h:47
void includeCrl(int crl)
Definition: trckeysampling.h:148
int lineIdx(Pos::LineID) const
Definition: trckeysampling.h:216
BinID step_
Definition: trckeysampling.h:131
Threads::Atomic< int64_t > curpos_
Definition: trckeysampling.h:206
BinID & stop
Definition: trckeysampling.h:156
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
Index_Type SurvID
Definition: commontypes.h:45
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
int trcIdx(Pos::TraceID) const
Definition: trckeysampling.h:224
int crlIdx(Pos::TraceID tid) const
Definition: trckeysampling.h:144
bool includes(const BinID &bid, bool ignoresteps=false) const
Definition: trckeysampling.h:149
int64_t totalNr() const
Definition: trckeysampling.h:197
bool operator!=(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:60
BufferString toString(const DBKey &ky)
Definition: dbkey.h:115
void fillPar(IOPar &iop, const ODPolygon< T > &poly, const char *inpkey)
Definition: polygon.h:187
void include(const BinID &bid)
Definition: trckeysampling.h:145
StepInterval< int > crlRange() const
Definition: trckeysampling.h:136
Index_Type GeomID
Definition: commontypes.h:48
void setCurrentPos(int64_t pos)
Definition: trckeysampling.h:188
IdxType & crl()
Definition: posidxpair.h:46
BinID & start
Definition: trckeysampling.h:155
#define mDeprecated
Definition: plfdefs.h:213
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
bool isEmpty(const char *)
IdxType & lineNr()
Definition: posidxpair.h:42
BinID stop_
Definition: trckeysampling.h:130
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
bool is2D() const
Definition: trckey.h:45
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:26
bool is2D() const
Definition: trckeysampling.h:34
int nrCrl() const
Definition: trckeysampling.h:141
void includeInl(int inl)
Definition: trckeysampling.h:147
2D point or vector class.
Definition: commontypes.h:58
TrcKeySampling tks_
Definition: trckeysampling.h:204
StepInterval< int > inlRange() const
Definition: trckeysampling.h:135
Definition: trckeysampling.h:165
void setInlRange(const Interval< int > &rg)
Definition: trckeysampling.h:137
BinID start_
Definition: trckeysampling.h:129

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