OpendTect  6.6
faulttrace.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: Nanne Hemstra
8  Date: October 2008
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "earthmodelmod.h"
15 #include "executor.h"
16 #include "paralleltask.h"
17 #include "trckeysampling.h"
18 #include "multiid.h"
19 #include "positionlist.h"
20 #include "sets.h"
21 #include "posinfo2dsurv.h"
22 #include "trigonometry.h"
23 #include "threadlock.h"
24 
25 namespace EM { class Fault; class Horizon; }
26 namespace Geometry { class ExplFaultStickSurface; }
27 namespace PosInfo { class Line2DData; }
28 class BinIDValueSet;
29 
34 mExpClass(EarthModel) FaultTrace : public Coord3List
36 public:
37 
38  int nextID(int) const;
39  int add(const Coord3&);
40  int add(const Coord3&,float trcnr);
41  Coord3 get(int) const;
42  const TypeSet<int>& getIndices() const;
43  float getTrcNr(int) const;
44  void set(int,const Coord3&);
45  void set(int,const Coord3&,float);
46  void setIndices(const TypeSet<int>&);
47  void remove(int);
48  void remove(const TypeSet<int>&) {}
49  bool isDefined(int) const;
50  int size() const { return coords_.size(); }
51  FaultTrace* clone() const;
52 
53  bool isInl() const { return isinl_; }
54  bool isEditedOnCrl() const { return editedoncrl_; }
55  int lineNr() const { return nr_; }
56  const Interval<int>& trcRange() const { return trcrange_; }
57  const Interval<float>& zRange() const { return zrange_; }
58  void setIsInl(bool yn) { isinl_ = yn; }
59  void setEditedOnCrl(bool yn) { editedoncrl_ = yn; }
60  void setLineNr(int nr) { nr_ = nr; }
61 
62  bool isCrossing(const BinID&,float,const BinID&,float) const;
63  bool getIntersection(const BinID&,float,const BinID&,float,
64  BinID&,float&,
65  const StepInterval<int>* trcrg=0,
66  bool snappositive=true) const;
68  Interval<float>& topzvals,
69  Interval<float>& botzvals) const;
70  bool getHorIntersection(const EM::Horizon&,BinID&) const;
71 
72  bool getCoordsBetween(int trc0,float z0,int trc1,float z1,
73  TypeSet<Coord>& coords) const;
74  bool getIntersectionZs(int trcnr,TypeSet<float>& zs) const;
75  bool getIntersectionTraces(float zval,
76  TypeSet<int>& trcs) const;
78  int& trace,float& zval) const;
79 
81  Pos::GeomID geomid,
82  TypeSet<BinID>& pos1bids,TypeSet<float>& pos1zs,
83  TypeSet<BinID>& pos2bids,TypeSet<float>& pos2zs,
84  TypeSet<Coord>& intersections,
85  bool findfirstonly=true,
86  bool allowextention=false) const;
87  bool getImage(const BinID& srcbid,float srcz,
88  const Interval<float>& tophorzvals,
89  const Interval<float>& bothorzvals,
90  const StepInterval<int>& trcrg,BinID& imgbid,
91  float& imgz,bool forward) const;
92 
93  float getZValFor(const BinID&) const;
94  bool isOnPosSide(const BinID&,float) const;
95  void addValue(int id,const Coord3&) {}
96  void computeRange();
97  bool includes(const BinID&) const;
98  bool isOK() const;
99  bool isOnFault(const BinID&,float z,float threshold) const;
100  // threshold dist in measured in BinID units
101 
102  enum Act { AllowCrossing, ForbidCrossing,
103  ForbidCrossHigher, ForbidCrossLower,
104  AllowMinTraceToFault, AllowMaxTraceToFault,
105  AllowMinInlToFault, AllowMaxInlToFault,
106  AllowMinCrlToFault, AllowMaxCrlToFault };
108  static void getActNames(BufferStringSet&,bool is2d);
109  static const char* sKeyFaultAct() { return "Fault Act"; }
110 
111 protected:
112 
114 
117  const BinID&,float) const;
119  const BinID&,const BinID&,bool) const;
120 
121  bool isinl_;
123  int nr_;
126  TypeSet<float> trcnrs_; // For 2D only;
130 
132 };
133 
134 
141 public:
144 
145  const FaultTrace* getTrc(int linenr,bool isinl) const;
146  int indexOf(int linenr,bool isinl) const;
147 
148  bool isEditedOnCrl() const;
149 
151  /*For 3D: one for each inline followed by
152  one for each crossline.
153  For 2D: One for each stick.*/
154 
156 };
157 
158 
165 public:
168 
170 
171 protected:
172 
173  virtual bool extractFaultTrace(int) = 0;
174  virtual od_int64 nrIterations() const;
175  virtual bool doPrepare(int);
176  virtual bool doWork(od_int64,od_int64,int);
177  virtual bool doFinish(bool) { return true; }
178 
183 };
184 
185 
188 public:
191 
192 protected:
193 
194  bool extractFaultTrace(int);
195 
196  virtual bool doPrepare(int);
197 
199 
200 };
201 
202 
205 public:
207  Pos::GeomID);
209 
210 protected:
211 
212  bool extractFaultTrace(int);
213  virtual bool doPrepare(int);
214  virtual bool doFinish(bool);
215 
217 };
218 
219 
226 public:
230 
232  TaskRunner* =0);
233 
234  bool is2D() const { return is2d_; }
235  int nrFaults() const;
236  TrcKeySampling range(int) const;
237  int nrSticks(int fltidx) const;
238  bool isEditedOnCrl(int fltidx) const;
239 
240  bool hasFaults(const BinID&) const;
241  const FaultTrace* getFaultTrace(int fltidx,int trcnr,bool isinl) const;
242  const FaultTrace* getFaultTrace2D(int fltidx,int stickidx) const;
243  bool isCrossingFault(const BinID& b1,float z1,
244  const BinID& b2,float z2) const;
245  bool getFaultZVals(const BinID&,TypeSet<float>&) const;
246  bool isOnFault(const BinID&,float z,float threshold) const;
247 
248  void clear();
249  bool isEmpty() const;
250  uiString errMsg() const;
251 
252 protected:
253 
256 
258 
261  bool is2d_;
262 };
263 
FaultTrcDataProvider::clear
void clear()
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
FaultTrace::coords_
TypeSet< Coord3 > coords_
Definition: faulttrace.h:124
FaultTrcDataProvider::geomid_
Pos::GeomID geomid_
Definition: faulttrace.h:259
FaultTraceExtractor::mODTextTranslationClass
mODTextTranslationClass(FaultTraceExtractor)
FaultTrcDataProvider::getFaultTrace
const FaultTrace * getFaultTrace(int fltidx, int trcnr, bool isinl) const
FaultTrace::getActNames
static void getActNames(BufferStringSet &, bool is2d)
FaultTraceExtractor2D::doFinish
virtual bool doFinish(bool)
FaultTraceExtractor::doPrepare
virtual bool doPrepare(int)
FaultTrace::mODTextTranslationClass
mODTextTranslationClass(FaultTrace)
FaultTrcDataProvider::nrFaults
int nrFaults() const
FaultTrace::set
void set(int, const Coord3 &, float)
FaultTraceExtractor::doWork
virtual bool doWork(od_int64, od_int64, int)
FaultTrace::setIsInl
void setIsInl(bool yn)
Definition: faulttrace.h:58
FaultTrace::isInl
bool isInl() const
Definition: faulttrace.h:53
FaultTraceExtractor::~FaultTraceExtractor
~FaultTraceExtractor()
FaultTrcDataProvider::is2d_
bool is2d_
Definition: faulttrace.h:261
FaultTrace::computeRange
void computeRange()
FaultTrace::addValue
void addValue(int id, const Coord3 &)
Adds value to existing value at id.
Definition: faulttrace.h:95
FaultTrcDataProvider::FaultTrcDataProvider
FaultTrcDataProvider()
FaultTraceExtractor2D
Definition: faulttrace.h:204
FaultTrcHolder::isEditedOnCrl
bool isEditedOnCrl() const
FaultTraceExtractor::holder_
FaultTrcHolder & holder_
Definition: faulttrace.h:180
FaultTrcDataProvider::holders_
ObjectSet< FaultTrcHolder > holders_
Definition: faulttrace.h:257
FaultTrace::get
Coord3 get(int) const
FaultTrace::trcRange
const Interval< int > & trcRange() const
Definition: faulttrace.h:56
ObjectSet< FaultTrace >
FaultTrcDataProvider::hasFaults
bool hasFaults(const BinID &) const
FaultTraceExtractor2D::doPrepare
virtual bool doPrepare(int)
BinIDValueSet
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:23
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
FaultTrace::trcrange_
Interval< int > trcrange_
Definition: faulttrace.h:127
Geometry
Definition: arraytesselator.h:21
FaultTraceExtractor
FaultTrace extractor.
Definition: faulttrace.h:164
FaultTrcDataProvider::mODTextTranslationClass
mODTextTranslationClass(FaultTrcDataProvider)
FaultTrace::nextID
int nextID(int) const
FaultTrcDataProvider::init
bool init(const TypeSet< MultiID > &, const TrcKeySampling &, TaskRunner *=0)
od_int64
#define od_int64
Definition: plftypes.h:35
FaultTrcDataProvider::isCrossingFault
bool isCrossingFault(const BinID &b1, float z1, const BinID &b2, float z2) const
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
FaultTrace::getHorIntersection
bool getHorIntersection(const EM::Horizon &, BinID &) const
FaultTrcDataProvider
FaultTrace data provider.
Definition: faulttrace.h:225
FaultTrace::ForbidCrossLower
@ ForbidCrossLower
Definition: faulttrace.h:103
FaultTrace::set
void set(int, const Coord3 &)
FaultTrcDataProvider::isEditedOnCrl
bool isEditedOnCrl(int fltidx) const
FaultTrcHolder::~FaultTrcHolder
~FaultTrcHolder()
FaultTraceExtractor::nrIterations
virtual od_int64 nrIterations() const
FaultTrcDataProvider::range
TrcKeySampling range(int) const
FaultTraceExtractor2D::mODTextTranslationClass
mODTextTranslationClass(FaultTraceExtractor2D)
FaultTraceExtractor2D::geomid_
Pos::GeomID geomid_
Definition: faulttrace.h:216
FaultTrace::AllowMinInlToFault
@ AllowMinInlToFault
Definition: faulttrace.h:105
FaultTrace::size
int size() const
Definition: faulttrace.h:50
sKey::Fault
FixedString Fault()
Definition: keystrs.h:66
sKey::Horizon
FixedString Horizon()
Definition: keystrs.h:77
FaultTrace::getIntersectionTraces
bool getIntersectionTraces(float zval, TypeSet< int > &trcs) const
FaultTrace::remove
void remove(int)
FaultTrace::AllowMinTraceToFault
@ AllowMinTraceToFault
Definition: faulttrace.h:104
EM
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: bulk2dhorizonscanner.h:26
FaultTrcDataProvider::errmsg_
uiString errmsg_
Definition: faulttrace.h:260
FaultTrcDataProvider::getFaultZVals
bool getFaultZVals(const BinID &, TypeSet< float > &) const
FaultTraceExtractor::totalnr_
od_int64 totalnr_
Definition: faulttrace.h:182
FaultTraceExtractor3D::extractFaultTrace
bool extractFaultTrace(int)
FaultTrcDataProvider::getFaultTrace2D
const FaultTrace * getFaultTrace2D(int fltidx, int stickidx) const
FaultTrcDataProvider::calcFaultBBox
bool calcFaultBBox(const EM::Fault &, TrcKeySampling &) const
FaultTrcDataProvider::is2D
bool is2D() const
Definition: faulttrace.h:234
FaultTrcHolder::indexOf
int indexOf(int linenr, bool isinl) const
FaultTrace::coordindices_
TypeSet< int > coordindices_
Definition: faulttrace.h:125
FaultTraceExtractor::doFinish
virtual bool doFinish(bool)
Definition: faulttrace.h:177
FaultTrace::getFaultTraceIntersection
bool getFaultTraceIntersection(const FaultTrace &, int &trace, float &zval) const
FaultTrace::Act
Act
Definition: faulttrace.h:102
multiid.h
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
StepInterval< int >
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
FaultTrcDataProvider::get2DTraces
bool get2DTraces(const TypeSet< MultiID > &, TaskRunner *)
FaultTrace::isEditedOnCrl
bool isEditedOnCrl() const
Definition: faulttrace.h:54
FaultTrace::getAllActNames
static void getAllActNames(BufferStringSet &)
FaultTrcHolder::getTrc
const FaultTrace * getTrc(int linenr, bool isinl) const
FaultTrcDataProvider::nrSticks
int nrSticks(int fltidx) const
FaultTrace::isCrossing
bool isCrossing(const BinID &, float, const BinID &, float) const
FaultTrace::editedoncrl_
bool editedoncrl_
Definition: faulttrace.h:122
FaultTrace::lock_
Threads::Lock lock_
Definition: faulttrace.h:131
FaultTraceExtractor::uiMessage
uiString uiMessage() const
will be message() again in 7.x
EM::Horizon
Horizon Surface.
Definition: emhorizon.h:47
FaultTraceExtractor3D::FaultTraceExtractor3D
FaultTraceExtractor3D(const EM::Fault &, FaultTrcHolder &)
FaultTrcHolder::mODTextTranslationClass
mODTextTranslationClass(FaultTrcHolder)
FaultTrace::~FaultTrace
~FaultTrace()
Definition: faulttrace.h:113
FaultTrace::clone
FaultTrace * clone() const
FaultTrace::includes
bool includes(const BinID &) const
FaultTrace::getZValFor
float getZValFor(const BinID &) const
FaultTraceExtractor3D
Definition: faulttrace.h:187
TaskRunner
Class that can execute a task.
Definition: task.h:170
FaultTrace::handleUntrimmed
bool handleUntrimmed(const BinIDValueSet &, Interval< float > &, const BinID &, const BinID &, bool) const
FaultTrace::getCoordsBetween
bool getCoordsBetween(int trc0, float z0, int trc1, float z1, TypeSet< Coord > &coords) const
executor.h
FaultTrace::nr_
int nr_
Definition: faulttrace.h:123
FaultTraceExtractor2D::extractFaultTrace
bool extractFaultTrace(int)
FaultTrace::getIntersection
bool getIntersection(const BinID &, float, const BinID &, float, BinID &, float &, const StepInterval< int > *trcrg=0, bool snappositive=true) const
FaultTrcDataProvider::isOnFault
bool isOnFault(const BinID &, float z, float threshold) const
FaultTrace::zRange
const Interval< float > & zRange() const
Definition: faulttrace.h:57
FaultTrcDataProvider::~FaultTrcDataProvider
~FaultTrcDataProvider()
FaultTrcDataProvider::FaultTrcDataProvider
FaultTrcDataProvider(Pos::GeomID)
FaultTrace::zrange_
Interval< float > zrange_
Definition: faulttrace.h:128
FaultTrace::getIndices
const TypeSet< int > & getIndices() const
FaultTrace::getTrcNr
float getTrcNr(int) const
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
FaultTraceExtractor3D::fltsurf_
Geometry::ExplFaultStickSurface * fltsurf_
Definition: faulttrace.h:198
FaultTrcDataProvider::errMsg
uiString errMsg() const
FaultTraceExtractor::extractFaultTrace
virtual bool extractFaultTrace(int)=0
FaultTrace::isinl_
bool isinl_
Definition: faulttrace.h:121
FaultTrace::getImage
bool getImage(const BinID &srcbid, float srcz, const Interval< float > &tophorzvals, const Interval< float > &bothorzvals, const StepInterval< int > &trcrg, BinID &imgbid, float &imgz, bool forward) const
positionlist.h
FaultTrcDataProvider::isEmpty
bool isEmpty() const
FaultTraceExtractor3D::~FaultTraceExtractor3D
~FaultTraceExtractor3D()
FaultTrace::ForbidCrossing
@ ForbidCrossing
Definition: faulttrace.h:102
trigonometry.h
FaultTrace::isDefined
bool isDefined(int) const
FaultTraceExtractor::FaultTraceExtractor
FaultTraceExtractor(const EM::Fault &, FaultTrcHolder &)
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
PosInfo
Position info, often segmented.
Definition: posinfo.h:40
FaultTrace::tracesegs_
TypeSet< Line2 > tracesegs_
Definition: faulttrace.h:129
FaultTrcHolder::FaultTrcHolder
FaultTrcHolder()
threadlock.h
FaultTrace::isOK
bool isOK() const
FaultTraceExtractor2D::FaultTraceExtractor2D
FaultTraceExtractor2D(const EM::Fault &, FaultTrcHolder &, Pos::GeomID)
FaultTrace::computeTraceSegments
void computeTraceSegments()
FaultTrace::lineNr
int lineNr() const
Definition: faulttrace.h:55
FaultTrcHolder::traces_
ObjectSet< FaultTrace > traces_
Definition: faulttrace.h:150
FaultTrace::setEditedOnCrl
void setEditedOnCrl(bool yn)
Definition: faulttrace.h:59
FaultTrace
Subclass of Coord3List that represents a fault trace.
Definition: faulttrace.h:35
FaultTrace::sKeyFaultAct
static const char * sKeyFaultAct()
Definition: faulttrace.h:109
FaultTrace::AllowMinCrlToFault
@ AllowMinCrlToFault
Definition: faulttrace.h:106
FaultTraceExtractor2D::~FaultTraceExtractor2D
~FaultTraceExtractor2D()
trckeysampling.h
Coord3List
Interface for a list of Coord3 with automatically maintained IDs.
Definition: positionlist.h:72
FaultTrace::getIntersectionZs
bool getIntersectionZs(int trcnr, TypeSet< float > &zs) const
FaultTraceExtractor3D::mODTextTranslationClass
mODTextTranslationClass(FaultTraceExtractor3D)
FaultTrcHolder
FaultTrace holder.
Definition: faulttrace.h:140
Geometry::ExplFaultStickSurface
Definition: explfaultsticksurface.h:38
FaultTrace::setIndices
void setIndices(const TypeSet< int > &)
FaultTraceExtractor3D::doPrepare
virtual bool doPrepare(int)
FaultTrace::remove
void remove(const TypeSet< int > &)
May contain duplicates.
Definition: faulttrace.h:48
sets.h
Interval< int >
FaultTrace::isOnFault
bool isOnFault(const BinID &, float z, float threshold) const
FaultTrace::setLineNr
void setLineNr(int nr)
Definition: faulttrace.h:60
FaultTrace::getIntersection
Coord getIntersection(const BinID &, float, const BinID &, float) const
paralleltask.h
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
FaultTraceExtractor::fault_
const EM::Fault & fault_
Definition: faulttrace.h:179
EM::Fault
Fault Surface base class.
Definition: emfault.h:84
posinfo2dsurv.h
FaultTraceExtractor::editedoncrl_
bool editedoncrl_
Definition: faulttrace.h:181
FaultTrace::isOnPosSide
bool isOnPosSide(const BinID &, float) const
FaultTrace::add
int add(const Coord3 &, float trcnr)
Pos::GeomID
Index_Type GeomID
Definition: commontypes.h:87
FaultTrace::getHorCrossings
bool getHorCrossings(const BinIDValueSet &, Interval< float > &topzvals, Interval< float > &botzvals) const
FaultTrace::add
int add(const Coord3 &)
Return new id, or -1 if unsuccessful.
FaultTrcHolder::hs_
TrcKeySampling hs_
Definition: faulttrace.h:155
TypeSet< int >
FaultTrace::getHorizonIntersectionInfo
bool getHorizonIntersectionInfo(const EM::Horizon &hor, Pos::GeomID geomid, TypeSet< BinID > &pos1bids, TypeSet< float > &pos1zs, TypeSet< BinID > &pos2bids, TypeSet< float > &pos2zs, TypeSet< Coord > &intersections, bool findfirstonly=true, bool allowextention=false) const
FaultTrace::trcnrs_
TypeSet< float > trcnrs_
Definition: faulttrace.h:126

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