OpendTect  6.3
posinfodetector.h
Go to the documentation of this file.
1 #pragma once
2 /*
3 ________________________________________________________________________
4 
5  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
6  Author: Bert Bril
7  Date: Oct 2008
8 ________________________________________________________________________
9 
10 */
11 
12 #include "generalmod.h"
13 #include "posinfo.h"
14 #include "coord.h"
15 #include "bufstring.h"
16 #include "uistring.h"
17 class TrcKeySampling;
18 class BinIDSorting;
20 
21 
22 namespace PosInfo
23 {
24 
28 { mODTextTranslationClass(CrdBidOffs);
29 public:
31  : coord_(0,0), binid_(1,0), offset_(0) {}
32  CrdBidOffs( const Coord& c, int nr, float o=0 )
33  : coord_(c), binid_(1,nr), offset_(o) {}
34  CrdBidOffs( const Coord& c, const BinID& b, float o=0 )
35  : coord_(c), binid_(b), offset_(o) {}
36  bool operator ==( const CrdBidOffs& cbo ) const
37  { return binid_ == cbo.binid_
38  && mIsEqual(offset_,cbo.offset_,mDefEps); }
39 
42  float offset_;
43 };
44 
45 
51 { mODTextTranslationClass(Detector);
52 public:
53 
54  struct Setup
55  {
56  Setup( bool istwod )
57  : is2d_(istwod), isps_(false)
58  , reqsorting_(false) {}
59  mDefSetupMemb(bool,is2d)
60  mDefSetupMemb(bool,isps)
61  mDefSetupMemb(bool,reqsorting)
62  };
63 
64  Detector(const Setup&);
65  Detector(const Detector&);
66  Detector& operator =(const Detector&);
67  ~Detector();
68 
69  bool is2D() const { return setup_.is2d_; }
70  bool isPS() const { return setup_.isps_; }
71  void reInit();
72 
73  bool add(const Coord&,const BinID&);
74  bool add(const Coord&,const BinID&,float offs);
75  bool add(const Coord&,int nr);
76  bool add(const Coord&,int nr,float offs);
77  bool add(const Coord&,const BinID&,int nr,float offs);
78  bool add(const CrdBidOffs&);
79 
80 
81  bool finish();
82  bool usable() const { return errmsg_.isEmpty(); }
83  uiString errMsg() const { return errmsg_; }
84  void appendResults(const Detector&); // after finish only
85  void mergeResults(const Detector&); // after finish only
86 
87  int nrPositions( bool uniq=true ) const
88  { return uniq ? nruniquepos_ : nrpos_; }
89 
90  // available after finish()
91  Coord minCoord() const { return mincoord_; }
92  Coord maxCoord() const { return maxcoord_; }
93  BinID start() const { return start_; }
94  BinID stop() const { return stop_; }
95  BinID step() const { return step_; }
96  void getTrcKeySampling(TrcKeySampling&) const;
97  Interval<float> offsRg() const { return offsrg_; }
98  float avgDist() const { return avgdist_; }
99  CrdBidOffs firstPosition() const { return userCBO(firstcbo_); }
100  CrdBidOffs lastPosition() const { return userCBO(lastcbo_); }
101  bool haveGaps( bool inldir=false ) const
102  { return inldir ? inlirreg_ : crlirreg_; }
103 
104  void report(IOPar&) const;
105 
106  const BinIDSorting& sorting() const { return sorting_; }
107  bool inlSorted() const;
108  bool crlSorted() const;
109  void getCubeData(CubeData&) const;
111  uiString getSurvInfo(TrcKeySampling&,Coord crd[3]) const;
112 
113  StepInterval<int> getRange(bool inldir=false) const;
114  bool haveStep(bool) const; // to check during detection
115 
116 protected:
117 
122  int nrpos_;
127  bool allstd_;
131  bool inlirreg_, crlirreg_;
133  float avgdist_;
140 
143  int curline_;
144  int curseg_;
152 
153  bool applySortAnal();
154  void addFirst(const PosInfo::CrdBidOffs&);
155  bool addNext(const PosInfo::CrdBidOffs&);
156  void addLine();
157  void addPos();
158  void setCur(const PosInfo::CrdBidOffs&);
159  void getBinIDRanges();
160  int getStep(bool inl) const;
161  int getRawStep(bool,bool) const;
162  uiString createPositionString(const CrdBidOffs&) const;
163 
164  CrdBidOffs workCBO(const CrdBidOffs&) const;
165  CrdBidOffs userCBO(const CrdBidOffs&) const;
166 
167 };
168 
169 
170 } // namespace PosInfo
int curseg_
Definition: posinfodetector.h:144
#define mExpClass(module)
Definition: commondefs.h:157
TypeSet< CrdBidOffs > cbobuf_
Definition: posinfodetector.h:142
int nroffsthispos_
Definition: posinfodetector.h:150
Setup(bool istwod)
Definition: posinfodetector.h:56
BinID start() const
Definition: posinfodetector.h:93
Coord minCoord() const
Definition: posinfodetector.h:91
BinIDSortingAnalyser * sortanal_
Definition: posinfodetector.h:141
CrdBidOffs curcbo_
Definition: posinfodetector.h:145
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:51
CrdBidOffs prevcbo_
Definition: posinfodetector.h:146
CrdBidOffs curlnstart_
Definition: posinfodetector.h:149
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
BinID sorting parameters.
Definition: binidsorting.h:25
Coord mincoord_
Definition: posinfodetector.h:123
Interval< float > distrg_
2D
Definition: posinfodetector.h:132
Interval< float > offsrg_
Definition: posinfodetector.h:125
CrdBidOffs curusrcbo_
Definition: posinfodetector.h:147
BinID start_
Definition: posinfodetector.h:128
RowCol step_
Definition: horizontracker.h:139
Coord maxcoord_
Definition: posinfodetector.h:124
Definition: uistring.h:88
Coord coord_
Definition: posinfodetector.h:40
const BinIDSorting & sorting() const
Definition: posinfodetector.h:106
float avgdist_
2D
Definition: posinfodetector.h:133
bool is2D() const
Definition: posinfodetector.h:69
CrdBidOffs firstduppos_
Definition: posinfodetector.h:138
int nrpos_
Definition: posinfodetector.h:122
CrdBidOffs firstPosition() const
Definition: posinfodetector.h:99
BinID step() const
Definition: posinfodetector.h:95
#define mIsEqual(x, y, eps)
Definition: commondefs.h:56
BinID stop_
Definition: posinfodetector.h:129
Coord maxCoord() const
Definition: posinfodetector.h:92
CrdBidOffs lastcbo_
Definition: posinfodetector.h:135
CrdBidOffs lastPosition() const
Definition: posinfodetector.h:100
Set of (small) copyable elements.
Definition: commontypes.h:26
bool inlirreg_
Definition: posinfodetector.h:131
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:53
bool usable() const
Definition: posinfodetector.h:82
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:25
Just hold inl, crl, x, y and offs. For 2D, crl=nr.
Definition: posinfodetector.h:27
CrdBidOffs llnstop_
in 3D, of longest line
Definition: posinfodetector.h:137
int nroffsperpos_
Definition: posinfodetector.h:126
uiString errmsg_
Definition: posinfodetector.h:151
#define mDefSetupMemb(typ, memb)
Definition: commondefs.h:129
float offset_
Definition: posinfodetector.h:42
CrdBidOffs llnstart_
in 3D, of longest line
Definition: posinfodetector.h:136
ObjectSet< LineData > lds_
Definition: posinfodetector.h:120
CrdBidOffs(const Coord &c, int nr, float o=0)
Definition: posinfodetector.h:32
int nrPositions(bool uniq=true) const
Definition: posinfodetector.h:87
#define mDefEps
Definition: commondefs.h:60
BinID stop() const
Definition: posinfodetector.h:94
Analyses whether input BinIDs are sorted.
Definition: binidsorting.h:66
Position info, often segmented.
Definition: posinfo.h:38
bool allstd_
Definition: posinfodetector.h:127
bool isEmpty() const
Definition: odstring.h:49
CrdBidOffs firstaltnroffs_
Definition: posinfodetector.h:139
CrdBidOffs prevusrcbo_
Definition: posinfodetector.h:148
BinID binid_
Definition: posinfodetector.h:41
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:28
BinIDSorting & sorting_
Definition: posinfodetector.h:119
BufferString errmsg_
Definition: horizontracker.h:117
bool isPS() const
Definition: posinfodetector.h:70
Determines many geometry parameters from a series of Coords with corresponding BinID or trace numbers...
Definition: posinfodetector.h:50
CrdBidOffs()
Definition: posinfodetector.h:30
int curline_
Definition: posinfodetector.h:143
CrdBidOffs(const Coord &c, const BinID &b, float o=0)
Definition: posinfodetector.h:34
bool haveGaps(bool inldir=false) const
Definition: posinfodetector.h:101
BinID step_
Definition: posinfodetector.h:130
2D point or vector class.
Definition: commontypes.h:58
CrdBidOffs firstcbo_
Definition: posinfodetector.h:134
int nruniquepos_
Definition: posinfodetector.h:121
Setup setup_
Definition: posinfodetector.h:118
Position info for an entire 3D cube. The LineData&#39;s are not sorted.
Definition: posinfo.h:96
Interval< float > offsRg() const
Definition: posinfodetector.h:97
uiString errMsg() const
Definition: posinfodetector.h:83
Definition: posinfodetector.h:54
float avgDist() const
Definition: posinfodetector.h:98

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