OpendTect  6.6
emhorizon3d.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: Kristofer Tingdahl
8  Date: 4-11-2002
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 
13 -*/
14 
15 #include "earthmodelmod.h"
16 #include "emhorizon.h"
17 #include "binidsurface.h"
18 #include "task.h"
19 
20 class BinIDValueSet;
21 class DataPointSet;
22 class BufferStringSet;
23 class TrcKeySampling;
24 class Scaler;
25 class ZAxisTransform;
26 namespace Pick { class Set; }
27 namespace Pos { class Provider3D; }
28 namespace Table { class FormatDesc; }
29 namespace Threads { class WorkManager; }
30 
31 namespace EM
32 {
33 class SurfaceAuxData;
34 
41 public:
43 
46 
47  bool removeSection(const SectionID&,bool hist);
49 
50  bool isFullResolution() const;
51  RowCol loadedStep() const;
52  RowCol step() const;
53  void setStep(const RowCol& step,
54  const RowCol& loadedstep);
55 
56  PosID getPosID(const TrcKey&) const;
57  TrcKey getTrcKey(const PosID&) const;
58 
59  bool enableChecks(bool yn);
60  bool isChecksEnabled() const;
61  bool isNodeOK(const PosID&) const;
62 
63  bool isAtEdge(const PosID& pid) const;
64  PosID getNeighbor(const PosID&,const RowCol&) const;
65  int getConnectedPos(const PosID&,
66  TypeSet<PosID>*) const;
67 
69  Pick::Set&) const;
70  void getDataPointSet( const SectionID&,
71  DataPointSet&,
72  float shift=0.0) const;
75  Pos::Provider3D* prov=0) const;
76 
78  const TrcKeyZSampling* =0) const;
79 protected:
80 
82 
86 };
87 
88 
95 mExpClass(EarthModel) Horizon3D : public Horizon
97 public:
98 
99  virtual float getZ(const TrcKey&) const;
101  virtual bool setZ(const TrcKey&,float z,bool addtohist);
103  virtual bool setZAndNodeSourceType(const TrcKey&,float z,
104  bool addtohist, NodeSourceType type=Auto);
105 
107  virtual void setNodeSourceType(const PosID&,NodeSourceType);
108  virtual bool isNodeSourceType(const PosID&,
109  NodeSourceType) const;
110  virtual bool isNodeSourceType(const TrcKey&,
111  NodeSourceType) const;
112  virtual bool isNodeLocked(const PosID&)const;
113 
114  bool hasNodeSourceType(const PosID&) const;
115 
116  virtual bool hasZ(const TrcKey&) const;
118  virtual Coord3 getCoord(const TrcKey&) const;
119  virtual void setAttrib(const TrcKey&,int attr,int yn,
120  bool addtohist);
121  virtual bool isAttrib(const TrcKey&,int attr) const;
122 
123  virtual float getZValue(const Coord&,bool allow_udf=true,
124  int nr=0) const;
126 
129 
130  void removeAll();
132  const Horizon3DGeometry& geometry() const;
133 
134  virtual void setArray(const SectionID&,const BinID& start,
135  const BinID& step, Array2D<float>* arr,
136  bool takeover);
137  static Horizon3D* createWithConstZ(float z,const TrcKeySampling&);
139  const ZAxisTransform* zt=0) const;
141  bool onlyfillundefs,
142  const char* histdesc,bool trimundef);
146  bool setArray2D(Array2D<float>*,const BinID& origin,
147  const BinID& step,
148  bool takeoverarr=true);
154  const TrcKeySampling& hs);
159  const BufferStringSet& attribnms,int,
160  const TrcKeySampling& hs);
161 
162 
163  Pos::GeomID getSurveyGeomID() const { return survgeomid_; }
167 
168  uiString getUserTypeStr() const { return userTypeStr(); }
170  { return tr("3D Horizon"); }
171 
172  void initAllAuxData(float val=mUdf(float));
174 
175  void initTrackingAuxData(float val=mUdf(float));
182 
184  void setParent(const TrcKey&,const TrcKey& parent);
185  TrcKey getParent(const TrcKey&) const;
186  void getParents(const TrcKey&,
187  TypeSet<TrcKey>&) const;
188  bool selectChildren(const TrcKey&);
192  void setNodeLocked(const TrcKey&,bool locked);
193  bool isNodeLocked(const TrcKey&) const;
194  void lockAll();
195  void unlockAll();
197 
198  void setParentColor(const Color&);
199  const Color& getParentColor() const;
200 
201  virtual bool setPos(const EM::PosID&,const Coord3&,
202  bool addtohistory);
203  virtual bool setPos(const EM::SectionID&,const EM::SubID&,
204  const Coord3&,bool addtohistory);
205 protected:
206  enum ArrayType{Parents,Children,LockNode,NodeSource};
207 
208  void fillPar(IOPar&) const;
209  bool usePar(const IOPar&);
210  void fillDisplayPar(IOPar&) const;
211  bool useDisplayPar(const IOPar&);
212 
215  const StepInterval<int>&);
219  ArrayType);
223  const StepInterval<int>&,
224  ArrayType);
226 
227  friend class EMManager;
228  friend class EMObject;
230 
235 
237 
244 
245 public:
246  /*mDeprecated*/ float getZ(const BinID&) const;
248  /*mDeprecated*/ bool setZ(const BinID&,float z,bool addtohist);
251  { return getChildren(); }
252  TrcKey::SurvID getSurveyID() const { return getSurveyGeomID();}
253 
256 };
257 
258 
260 {
261 friend class FindTask;
262 friend class Horizon3D;
263 protected:
265  const Array2D<od_int64>& parents,
266  Array2D<char>& children );
268 
269 
272  int nextStep();
273 
275  int queueid_;
279 
282 
285 };
286 
287 } // namespace EM
288 
EM::Horizon3D::createArray2D
Array2D< float > * createArray2D(SectionID, const ZAxisTransform *zt=0) const
EM::Horizon3DGeometry::isChecksEnabled
bool isChecksEnabled() const
EM::Horizon3D::getChildren
Array2D< char > * getChildren(const TrcKey &) const
Definition: emhorizon3d.h:250
EM::Horizon3D::children_
Array2D< char > * children_
Definition: emhorizon3d.h:233
EM::Horizon3D::updateTrackingSampling
void updateTrackingSampling()
TrcKeySampling
Horizontal sampling (inline and crossline range and steps).
Definition: trckeysampling.h:35
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
EM::Horizon3D::Parents
@ Parents
Definition: emhorizon3d.h:206
EM::HorizonGeometry
Horizon RowColSurfaceGeometry.
Definition: emhorizon.h:32
EM::Horizon3D::geometry
const Horizon3DGeometry & geometry() const
task.h
EM::Horizon3D::sDefaultSelectionColor
static Color sDefaultSelectionColor()
Pick::Set
Set of picks with something in common.
Definition: pickset.h:34
EM::ChildFinder::addlock_
Threads::Lock addlock_
Definition: emhorizon3d.h:283
EM::Horizon3D::getParentColor
const Color & getParentColor() const
EM::ChildFinder::nrtodo_
Threads::Atomic< int > nrtodo_
Definition: emhorizon3d.h:280
EM::Horizon3DGeometry::getBoundingPolygon
bool getBoundingPolygon(const SectionID &, Pick::Set &) const
EM::Horizon3D::setArray2D
bool setArray2D(Array2D< float > *, const BinID &origin, const BinID &step, bool takeoverarr=true)
Pos
Position.
Definition: commontypes.h:78
EM::Horizon3DGeometry::sectionGeometry
Geometry::BinIDSurface * sectionGeometry(const SectionID &)
EM::Horizon3D::geometry_
Horizon3DGeometry geometry_
Definition: emhorizon3d.h:229
EM::Horizon3D::importer
Executor * importer(const ObjectSet< BinIDValueSet > &, const TrcKeySampling &hs)
EM::SubID
od_int64 SubID
Definition: emposid.h:25
ObjectSet< BinIDValueSet >
EM::Horizon3DGeometry::isAtEdge
bool isAtEdge(const PosID &pid) const
emhorizon.h
BinIDValueSet
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:23
EM::Horizon3D::userTypeStr
static uiString userTypeStr()
Definition: emhorizon3d.h:169
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
Pos::Provider3D
Provides a subselection for 3D surveys.
Definition: posprovider.h:61
EM::Horizon3D::setNodeSourceType
virtual void setNodeSourceType(const PosID &, NodeSourceType)
od_int64
#define od_int64
Definition: plftypes.h:35
EM::Horizon3D::usePar
bool usePar(const IOPar &)
EM::Horizon3D::setNodeSourceArray
void setNodeSourceArray(Array2D< char > *, ArrayType)
Pick
Definition: picklocation.h:21
EM::ChildFinder
Definition: emhorizon3d.h:260
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
EM::Horizon3D::readParentArray
bool readParentArray()
EM::Horizon3D::getChildren
Array2D< char > * getChildren() const
EM::Horizon3D::isNodeLocked
bool isNodeLocked(const TrcKey &) const
EM::Horizon3DGeometry::step
RowCol step() const
EM::Horizon3D::arrayinited_
bool arrayinited_
Definition: emhorizon3d.h:243
EM::Horizon3D::getUserTypeStr
uiString getUserTypeStr() const
Definition: emhorizon3d.h:168
EM::Horizon3D::setArray
virtual void setArray(const SectionID &, const BinID &start, const BinID &step, Array2D< float > *arr, bool takeover)
EM::Horizon3DGeometry::isFullResolution
bool isFullResolution() const
EM::Horizon3D::saveNodeArrays
bool saveNodeArrays()
EM::Horizon3D::getCoord
virtual Coord3 getCoord(const TrcKey &) const
EM::Horizon3D::initTrackingArrays
void initTrackingArrays()
EM::Horizon3D::getSurveyGeomID
Pos::GeomID getSurveyGeomID() const
Definition: emhorizon3d.h:163
EM::Horizon3D::geometry
Horizon3DGeometry & geometry()
EM::Horizon3D::parents_
Array2D< od_int64 > * parents_
Definition: emhorizon3d.h:234
EM::Horizon3D::isNodeLocked
virtual bool isNodeLocked(const PosID &) const
Table
Definition: geom2dascio.h:20
EM::Horizon3D::readNodeArrays
bool readNodeArrays()
EM::Horizon3D::getParent
TrcKey getParent(const TrcKey &) const
EM::Horizon3D::isAttrib
virtual bool isAttrib(const TrcKey &, int attr) const
EM::Horizon3D::auxDataImporter
Executor * auxDataImporter(const ObjectSet< BinIDValueSet > &, const BufferStringSet &attribnms, int, const TrcKeySampling &hs)
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
EM::Horizon3D::hasNodeSourceType
bool hasNodeSourceType(const PosID &) const
EM::ChildFinder::children_
Array2D< char > & children_
Definition: emhorizon3d.h:277
EM::Horizon3DGeometry::loadedStep
RowCol loadedStep() const
EM::Horizon3D::ArrayType
ArrayType
Definition: emhorizon3d.h:206
EM::ChildFinder::~ChildFinder
~ChildFinder()
EM
Earth Model objects like horizons, faults, fault-sticks and bodies.
Definition: bulk2dhorizonscanner.h:26
EM::Horizon3DGeometry::createIterator
EMObjectIterator * createIterator(const EM::SectionID &, const TrcKeyZSampling *=0) const
EM::Horizon3DGeometry::enableChecks
bool enableChecks(bool yn)
EM::Horizon3DGeometry::loadedstep_
RowCol loadedstep_
Definition: emhorizon3d.h:83
EM::Horizon3D::setAttrib
virtual void setAttrib(const TrcKey &, int attr, int yn, bool addtohist)
TrcKeyZSampling
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
EM::Surface
Base class for surfaces like horizons and faults. A surface is made up of one or more segments or pat...
Definition: emsurface.h:33
EM::Horizon3D::lockednodes_
Array2D< char > * lockednodes_
Definition: emhorizon3d.h:232
EM::Horizon3D::fillPar
void fillPar(IOPar &) const
EM::Horizon3DGeometry::isNodeOK
bool isNodeOK(const PosID &) const
EM::Horizon3D::fillDisplayPar
void fillDisplayPar(IOPar &) const
EM::Horizon3DGeometry::createSectionGeometry
Geometry::BinIDSurface * createSectionGeometry() const
EM::Horizon3D::setSurveyGeomID
void setSurveyGeomID(Pos::GeomID)
EM::ChildFinder::twm_
Threads::WorkManager & twm_
Definition: emhorizon3d.h:274
DataPointSet
Set of data points with group selection.
Definition: datapointset.h:48
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
EM::Horizon3D::getSurveyID
TrcKey::SurvID getSurveyID() const
Definition: emhorizon3d.h:252
StepInterval< int >
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
ZAxisTransform
Base class for z-axis transforms.
Definition: zaxistransform.h:37
EM::ChildFinder::nrdone_
Threads::Atomic< int > nrdone_
Definition: emhorizon3d.h:281
EM::ChildFinder::finishlock_
Threads::Lock finishlock_
Definition: emhorizon3d.h:284
EM::EMObject::NodeSourceType
NodeSourceType
Definition: emobject.h:161
Scaler
Scaling of floating point numbers.
Definition: scaler.h:33
EM::Horizon3D::getZ
float getZ(const BinID &) const
Fast: reads from the first section.
EM::Horizon3DGeometry::sectionGeometry
const Geometry::BinIDSurface * sectionGeometry(const SectionID &) const
EM::Horizon3DGeometry::checksupport_
bool checksupport_
Definition: emhorizon3d.h:85
EM::Horizon3DGeometry::setStep
void setStep(const RowCol &step, const RowCol &loadedstep)
EM::Horizon3D::sDefaultLockColor
static Color sDefaultLockColor()
EM::Horizon3D::parentcolor_
Color parentcolor_
Definition: emhorizon3d.h:236
EM::Horizon3D::range
TrcKeySampling range() const
EM::Horizon3D::getNodeSourceArray
Array2D< char > * getNodeSourceArray(ArrayType) const
Threads::WorkManager
Takes work and puts it on a queue for execution either in parallel, singlethread or manual.
Definition: threadwork.h:41
EM::Horizon
Horizon Surface.
Definition: emhorizon.h:47
EM::Horizon3D::setZ
bool setZ(const BinID &, float z, bool addtohist)
Fast: writes to the first section.
EM::Horizon3DGeometry::mODTextTranslationClass
mODTextTranslationClass(Horizon3DGeometry)
EM::Horizon3D::getParents
void getParents(const TrcKey &, TypeSet< TrcKey > &) const
EM::Horizon3D::lockAll
void lockAll()
EM::Horizon3D::initNodeArraysSize
void initNodeArraysSize(const StepInterval< int > &, const StepInterval< int > &)
Executor
Specification to enable chunkwise execution of a process.
Definition: executor.h:39
EM::Horizon3D::updateNodeSourceArray
void updateNodeSourceArray(const TrcKeySampling, ArrayType)
EM::Horizon3D::deleteChildren
void deleteChildren()
IOObjContext
Holds the context for selecting and/or creating IOObjs.
Definition: ctxtioobj.h:62
EM::Horizon3D::survgeomid_
Pos::GeomID survgeomid_
Definition: emhorizon3d.h:238
EM::Horizon3D::setNodeLocked
void setNodeLocked(const TrcKey &, bool locked)
EM::Horizon3D::getIOObjContext
const IOObjContext & getIOObjContext() const
mDefineEMObjFuncs
#define mDefineEMObjFuncs(clss)
Definition: emobject.h:374
EM::Horizon3DGeometry::getConnectedPos
int getConnectedPos(const PosID &, TypeSet< PosID > *) const
EM::Horizon3D::getTrackingSampling
TrcKeySampling getTrackingSampling() const
EM::Horizon3D::setZ
virtual bool setZ(const TrcKey &, float z, bool addtohist)
Fast: writes to the first section.
EM::Horizon3DGeometry::step_
RowCol step_
Definition: emhorizon3d.h:84
EM::Horizon3D::setArray2D
bool setArray2D(const Array2D< float > &, SectionID, bool onlyfillundefs, const char *histdesc, bool trimundef)
EM::Horizon3D::auxdata
SurfaceAuxData & auxdata
Definition: emhorizon3d.h:173
EM::Horizon3D::isNodeSourceType
virtual bool isNodeSourceType(const TrcKey &, NodeSourceType) const
EM::EMObjectIterator
Iterator that iterates a number of positions (normally all) on an EMObject. The object is created by ...
Definition: emobject.h:122
EM::Horizon3D::hasZ
virtual bool hasZ(const TrcKey &) const
Fast: checks only the first section.
EM::Horizon3D::initTrackingAuxData
void initTrackingAuxData(float val=mUdf(float))
EM::ChildFinder::tks_
TrcKeySampling tks_
Definition: emhorizon3d.h:278
EM::Horizon3D::setNodeArraySize
void setNodeArraySize(const StepInterval< int > &, const StepInterval< int > &, ArrayType)
EM::Horizon3D::selectChildren
bool selectChildren(const TrcKey &)
EM::Horizon3D::resetChildren
void resetChildren()
EM::ChildFinder::addTask
void addTask(od_int64)
EM::SurfaceAuxData
Surface data.
Definition: emsurfaceauxdata.h:41
EM::Horizon3D::initAllAuxData
void initAllAuxData(float val=mUdf(float))
TrcKey
Represents a unique trace position in one of the surveys that OpendTect is managing.
Definition: trckey.h:28
EM::Horizon3DGeometry::getDataPointSet
void getDataPointSet(const SectionID &, DataPointSet &, float shift=0.0) const
EM::SectionID
od_int16 SectionID
Definition: emposid.h:24
EM::Horizon3D::createWithConstZ
static Horizon3D * createWithConstZ(float z, const TrcKeySampling &)
EM::Horizon3D::saveParentArray
bool saveParentArray()
binidsurface.h
EM::ChildFinder::nextStep
int nextStep()
EM::Horizon3D::removeAll
void removeAll()
EM::Horizon3D::setParent
void setParent(const TrcKey &, const TrcKey &parent)
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
TrcKey::SurvID
Pos::SurvID SurvID
Definition: trckey.h:31
EM::Horizon3DGeometry::getNeighbor
PosID getNeighbor(const PosID &, const RowCol &) const
EM::Horizon3DGeometry::getTrcKey
TrcKey getTrcKey(const PosID &) const
EM::Horizon3D::getZValue
virtual float getZValue(const Coord &, bool allow_udf=true, int nr=0) const
Slow: if you need the choices.
EM::EMManager
Manages the loaded/half loaded EM objects in OpendTect.
Definition: emmanager.h:46
EM::Horizon3D::getSectionTrckeySampling
TrcKeySampling getSectionTrckeySampling() const
EM::ChildFinder::queueid_
int queueid_
Definition: emhorizon3d.h:275
EM::Horizon3D::setParentColor
void setParentColor(const Color &)
EM::Horizon3D::getZ
virtual float getZ(const TrcKey &) const
Fast: reads from the first section.
EM::ChildFinder::parents_
const Array2D< od_int64 > & parents_
Definition: emhorizon3d.h:276
EM::Horizon3DGeometry::getPosID
PosID getPosID(const TrcKey &) const
EM::Horizon3D::getZRange
Interval< float > getZRange() const
EM::Horizon3DGeometry::cloneSection
SectionID cloneSection(const SectionID &)
EM::Horizon3D::useDisplayPar
bool useDisplayPar(const IOPar &)
mUdf
#define mUdf(type)
Use this macro to get the undefined for simple types.
Definition: undefval.h:274
EM::Horizon3D::setNodeSourceType
virtual void setNodeSourceType(const TrcKey &, NodeSourceType)
EM::Horizon3D::isNodeSourceType
virtual bool isNodeSourceType(const PosID &, NodeSourceType) const
RowCol
IdxPair used for its row() and col().
Definition: rowcol.h:25
EM::Horizon3DGeometry
3D HorizonGeometry
Definition: emhorizon3d.h:40
EM::ChildFinder::ChildFinder
ChildFinder(const TrcKeySampling &tks, const Array2D< od_int64 > &parents, Array2D< char > &children)
EM::Horizon3D::setPos
virtual bool setPos(const EM::PosID &, const Coord3 &, bool addtohistory)
EM::Horizon3D::setPos
virtual bool setPos(const EM::SectionID &, const EM::SubID &, const Coord3 &, bool addtohistory)
EM::EMObject
Base class for all EarthModel objects.
Definition: emobject.h:159
Geometry::BinIDSurface
Definition: binidsurface.h:27
EM::ChildFinder::taskFinished
void taskFinished(CallBacker *)
Interval< float >
EM::Horizon3D::trackingsamp_
TrcKeySampling trackingsamp_
Definition: emhorizon3d.h:231
EM::Horizon3D::createNodeSourceArray
void createNodeSourceArray(const StepInterval< int > &, const StepInterval< int > &, ArrayType)
EM::Horizon3DGeometry::removeSection
bool removeSection(const SectionID &, bool hist)
Color
Color is an RGB color object, with a transparancy. The storage is in a 4-byte integer,...
Definition: color.h:26
Threads
interface to threads that should be portable.
Definition: atomic.h:23
EM::Horizon3D::nodesource_
Array2D< char > * nodesource_
Definition: emhorizon3d.h:239
Threads::Lock
A lock of a type that (hopefully) suits your needs. To use it, you need the Locker class.
Definition: threadlock.h:53
Threads::Atomic< int >
SequentialTask
The generalization of something (e.g. a computation) where the steps must be done in sequence,...
Definition: task.h:125
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
EM::Horizon3D
3D Horizon. A Horizon is made up of one or more grids (so they can overlap at faults)....
Definition: emhorizon3d.h:96
EM::Horizon3D::setZAndNodeSourceType
virtual bool setZAndNodeSourceType(const TrcKey &, float z, bool addtohist, NodeSourceType type=Auto)
EM::Horizon3DGeometry::Horizon3DGeometry
Horizon3DGeometry(Surface &)
Array2D< float >
EM::Horizon3D::getLockedNodes
const Array2D< char > * getLockedNodes() const
EM::PosID
Is an identifier for each position in the earthmodel.
Definition: emposid.h:37
Pos::GeomID
Index_Type GeomID
Definition: commontypes.h:87
TypeSet
Sets of (small) copyable elements.
Definition: commontypes.h:29
EM::Horizon3D::unlockAll
void unlockAll()
EM::Horizon3DGeometry::fillBinIDValueSet
void fillBinIDValueSet(const SectionID &, BinIDValueSet &, Pos::Provider3D *prov=0) const

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