OpendTect  6.6
datapointset.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: Jan 2008
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "generalmod.h"
15 #include "binidvalset.h"
16 #include "color.h"
17 #include "datapackbase.h"
18 class DataColDef;
19 class BinIDValueSet;
20 class PosVecDataSet;
21 class UnitOfMeasure;
22 class BufferStringSet;
23 class TaskRunner;
24 class TrcKeyZSampling;
25 
26 namespace Pos { class Filter; class Provider; }
27 
28 
48 {
49 public:
50 
51  typedef int RowID;
52  typedef int ColID;
53  class DataRow;
54 
57  mExpClass(General) Pos
58  {
59  public:
60  Pos() : offsx_(0), offsy_(0), z_(0), nr_(0) {}
61  Pos( const BinID& bid, float _z )
62  : binid_(bid), nr_(0), z_(_z)
63  , offsx_(0), offsy_(0) {}
64  Pos(const Coord&,float z);
65  Pos(const Coord3&);
66 
67  bool operator ==(const Pos& pos) const
68  { return binid_==pos.binid_ && offsx_ ==pos.offsx_
69  && offsy_==pos.offsy_ && z_==pos.z_; }
70  const BinID& binID() const { return binid_; }
71  Coord coord() const;
72  float z() const { return z_; }
73 
74  void set( const BinID& bid )
75  { binid_ = bid; offsx_ = offsy_ = 0; }
76  void set(const Coord&);
77  void set(const Coord3&);
78 
80  float z_;
81  int nr_;
82 
83  float binIDOffSet( bool inx ) const
84  { return inx ? offsx_ : offsy_; }
85  void setBinIDOffset( bool inx, float o )
86  { (inx ? offsx_ : offsy_) = o; }
87  void setBinIDOffsets( float ox, float oy )
88  { offsx_ = ox; offsy_ = oy; }
89 
90  protected:
91 
92  float offsx_, offsy_;
93  void setOffs(const Coord&);
94  friend class DataRow;
95 
96  };
97 
102  {
103  public:
105  : grp_(1) { setSel(false); }
106  DataRow( const Pos& p, unsigned short grp=1,
107  bool issel=false )
108  : pos_(p), grp_((short)grp)
109  { setSel( issel ); }
110 
111  bool operator ==(const DataRow& dr) const
112  { return pos_==dr.pos_ && grp_==dr.grp_
113  && data_==dr.data_; }
114  const BinID& binID() const { return pos_.binID(); }
115  Coord coord() const { return pos_.coord(); }
116  const TypeSet<float>& data() const { return data_; }
117  unsigned short group() const;
118  bool isSel() const { return grp_ > 0; }
119  bool isInactive() const { return grp_ == 0; }
120  void setSel( bool yn )
121  { if ( (grp_ >= 0) != yn ) grp_ = -grp_; }
122  void setGroup(unsigned short grp);
123  void getBVSValues(TypeSet<float>&,bool is2d,
124  bool ismini) const;
125 
128  short grp_;
129  };
130 
132  const ObjectSet<DataColDef>&,
133  bool is2d,bool minimal=false);
135  const BufferStringSet& valnms,
136  bool is2d,bool minimal=false);
137  DataPointSet(const PosVecDataSet&,bool is2d,
138  bool minimal=false);
141  virtual ~DataPointSet();
142  DataPointSet& operator =(const DataPointSet&);
143  bool is2D() const { return is2d_; }
144  bool isMinimal() const { return minimal_; }
145  bool isEmpty() const { return bvsidxs_.isEmpty(); }
146  void setEmpty();
147  void clearData();
148 
149  int nrCols() const;
150  int nrFixedCols() const { return nrfixedcols_; }
151  const char* colName(ColID) const;
152  const UnitOfMeasure* unit(ColID) const;
153  const DataColDef& colDef( ColID i ) const { return gtColDef(i); }
154  ColID indexOf(const char*) const;
155  bool validColID(ColID) const;
156 
157  // size, binID, coord, z and trcNr impl PointDataPack
158  int size() const { return bvsidxs_.size(); }
159  BinID binID(RowID) const;
160  Coord coord(RowID) const;
161  float z(RowID) const;
162  int trcNr(RowID) const;
163 
164  Pos pos(RowID) const;
166  float value(ColID,RowID) const;
167  bool setValue(ColID,RowID,float);
168  float* getValues(RowID);
169  const float* getValues(RowID) const;
170  unsigned short group(RowID) const;
171  bool isSelected(RowID) const;
172  int selGroup(RowID) const;
173  bool isInactive( RowID rid ) const { return group(rid) == 0;}
174 
175  void setGroup(RowID,unsigned short);
176  void setSelected(RowID,int selgrp);
177  void setInactive(RowID,bool);
178 
179  int nrActive() const;
181  void purgeSelected(bool selected_rows=true);
182 
183  RowID find(const Pos&) const;
184  RowID find(const Pos&,float horradius,float deltaz) const;
185  RowID findFirst(const Coord&) const;
186  RowID findFirst(const BinID&) const;
187 
188  const PosVecDataSet& dataSet() const { return data_; }
189  const BinIDValueSet& bivSet() const { return const_cast<DataPointSet*>
190  (this)->bivSet(); }
195  PosVecDataSet& dataSet() { return data_; }
198 
200  const TypeSet<int>* selected_cols=0,
201  bool allow_udf_values=true,
202  const ObjectSet<Interval<float> >* value_ranges=0)
203  const;
204  void randomSubselect(int maxsz);
205 
206  int bivSetIdx( ColID idx ) const
207  { return idx+nrfixedcols_; }
208  bool getRange(TrcKeyZSampling&) const;
209 
210  void dataChanged() { calcIdxs(); }
214  void addRow(const DataRow&);
216  bool setRow(const DataRow&);
220  DataColDef& colDef( ColID i ) { return gtColDef(i); }
221  BinIDValueSet::SPos bvsPos( RowID rid ) const { return bvsidxs_[rid];}
222 
223  // Building from scratch
224  DataPointSet(bool is2d,bool minimal=false);
226  const ObjectSet<DataColDef>&,
227  const ::Pos::Filter* f=0,
228  TaskRunner* tr=0, bool filterAccept=true);
229  void addCol(const char* nm,const char* ref=0,
230  const UnitOfMeasure* un=0);
232 
233  // DataPack interface impl
234  bool simpleCoords() const { return minimal_; }
235  float nrKBytes() const;
236  void dumpInfo(IOPar&) const;
237 
238 
239 protected:
240 
243  bool is2d_;
244  bool minimal_;
245 
246  void initPVDS();
247  void init(const TypeSet<DataRow>&,
248  const ObjectSet<DataColDef>&);
249  void calcIdxs();
250 
251  static const int groupcol_;
252  const int nrfixedcols_;
253 
255 };
256 
257 
263 public:
264  DPSFromVolumeFiller(DataPointSet&,int firstcol,
265  const SeisDataPack&,
266  int component);
268 
269  virtual uiString uiMessage() const;
270  virtual uiString uiNrDoneText() const;
271 
273 
274 protected:
275  virtual od_int64 nrIterations() const;
276  virtual bool doWork(od_int64 start,od_int64 stop,int thridx);
277 
282 
286 };
287 
DataPointSet::setInactive
void setInactive(RowID, bool)
Coord3
A cartesian coordinate in 3D space.
Definition: coord.h:72
DataPointSet::colDef
const DataColDef & colDef(ColID i) const
Definition: datapointset.h:153
DataPointSet::selGroup
int selGroup(RowID) const
DataPointSet::Pos::z
float z() const
Definition: datapointset.h:72
binidvalset.h
DataPointSet::nrKBytes
float nrKBytes() const
DataPointSet::DataRow::getBVSValues
void getBVSValues(TypeSet< float > &, bool is2d, bool ismini) const
DPSFromVolumeFiller::nrIterations
virtual od_int64 nrIterations() const
DataPointSet::Pos::offsy_
float offsy_
Definition: datapointset.h:92
DataPointSet::ColID
int ColID
Definition: datapointset.h:52
DataPointSet::coord
Coord coord(RowID) const
DPSFromVolumeFiller::sampling_
const TrcKeyZSampling * sampling_
Definition: datapointset.h:285
DataPointSet::bivSet
const BinIDValueSet & bivSet() const
Definition: datapointset.h:189
DataPointSet::DataPointSet
DataPointSet(const TypeSet< DataRow > &, const ObjectSet< DataColDef > &, bool is2d, bool minimal=false)
DataPointSet::is2D
bool is2D() const
Definition: datapointset.h:143
Pos
Position.
Definition: commontypes.h:78
DataPointSet::Pos::binID
const BinID & binID() const
Definition: datapointset.h:70
DataPointSet::randomSubselect
void randomSubselect(int maxsz)
ObjectSet< DataColDef >
DataPointSet::trcNr
int trcNr(RowID) const
BinIDValueSet
A Pos::IdxPairValueSet with BinIDs.
Definition: binidvalset.h:23
DataPointSet::nrCols
int nrCols() const
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
DataPointSet::getSubselected
DataPointSet * getSubselected(int maxsz, const TypeSet< int > *selected_cols=0, bool allow_udf_values=true, const ObjectSet< Interval< float > > *value_ranges=0) const
DataPointSet::findFirst
RowID findFirst(const Coord &) const
DataPointSet::DataRow
Data point with group. Group 0 means 'inactive', it can never be selected.
Definition: datapointset.h:102
DataPointSet::nrActive
int nrActive() const
Pos::IdxPairValueSet::SPos
position in IdxPairValueSet; an iterator.
Definition: posidxpairvalset.h:96
DataPointSet::DataPointSet
DataPointSet(bool is2d, bool minimal=false)
od_int64
#define od_int64
Definition: plftypes.h:35
DataPointSet::colDef
DataColDef & colDef(ColID i)
Definition: datapointset.h:220
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
DataPointSet::getValues
float * getValues(RowID)
DataPointSet::Pos::coord
Coord coord() const
DataPointSet::groupcol_
static const int groupcol_
Definition: datapointset.h:251
DataPointSet::simpleCoords
bool simpleCoords() const
If true, coords are always SI().tranform(b)
Definition: datapointset.h:234
DPSFromVolumeFiller::uiMessage
virtual uiString uiMessage() const
will be message() again in 7.x
PointDataPack
DataPack for point data.
Definition: datapackbase.h:37
DataPointSet::dumpInfo
void dumpInfo(IOPar &) const
DataPointSet::Pos::Pos
Pos(const BinID &bid, float _z)
Definition: datapointset.h:61
PosVecDataSet
Data set consisting of data vectors.
Definition: posvecdataset.h:32
DataPointSet::purgeSelected
void purgeSelected(bool selected_rows=true)
DataPointSet::indexOf
ColID indexOf(const char *) const
DPSFromVolumeFiller::setSampling
void setSampling(const TrcKeyZSampling *)
DataPointSet::nrFixedCols
int nrFixedCols() const
Definition: datapointset.h:150
DataPointSet::Pos::z_
float z_
Definition: datapointset.h:80
DataPointSet::bvsidxs_
TypeSet< BinIDValueSet::SPos > bvsidxs_
Definition: datapointset.h:242
DataPointSet::setValue
bool setValue(ColID, RowID, float)
DataPointSet::RowID
int RowID
Definition: datapointset.h:51
DataPointSet::setGroup
void setGroup(RowID, unsigned short)
DataPointSet::colName
const char * colName(ColID) const
operator==
bool operator==(const ArrayNDInfo &a1, const ArrayNDInfo &a2)
Definition: arrayndinfo.h:81
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
DPSFromVolumeFiller::uiNrDoneText
virtual uiString uiNrDoneText() const
will be nrDoneText() in 7.x
DataPointSet::Pos::setBinIDOffsets
void setBinIDOffsets(float ox, float oy)
Definition: datapointset.h:87
DataPointSet::Pos::Pos
Pos(const Coord3 &)
TrcKeyZSampling
Hor+Vert sampling in 3D surveys.
Definition: trckeyzsampling.h:35
DataPointSet::size
int size() const
Definition: datapointset.h:158
DPSFromVolumeFiller
Fills DataPointSet with data from a VolumeDataPack.
Definition: datapointset.h:262
DataPointSet::DataRow::group
unsigned short group() const
DataPointSet::calcIdxs
void calcIdxs()
DataPointSet::group
unsigned short group(RowID) const
DataPointSet
Set of data points with group selection.
Definition: datapointset.h:48
DataPointSet::minimal_
bool minimal_
Definition: datapointset.h:244
BinID
Positioning in a seismic survey: inline/crossline or lineNr/trcNr.
Definition: binid.h:31
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
SeisDataPack
DataPack for volume data. Should be renamed to VolumeDataPack later.
Definition: datapackbase.h:201
sKey::Filter
FixedString Filter()
Definition: keystrs.h:69
DataPointSet::isMinimal
bool isMinimal() const
Definition: datapointset.h:144
DPSFromVolumeFiller::hasstorage_
bool hasstorage_
Definition: datapointset.h:284
DataPointSet::binID
BinID binID(RowID) const
DataPointSet::clearData
void clearData()
Keeps structure.
DPSFromVolumeFiller::component_
int component_
Definition: datapointset.h:280
DPSFromVolumeFiller::sdp_
const SeisDataPack & sdp_
Definition: datapointset.h:279
DataPointSet::init
void init(const TypeSet< DataRow > &, const ObjectSet< DataColDef > &)
DataPointSet::pos
Pos pos(RowID) const
DataPointSet::DataPointSet
DataPointSet(const PosVecDataSet &, bool is2d, bool minimal=false)
DataPointSet::setRow
bool setRow(const DataRow &)
DataPointSet::Pos::setOffs
void setOffs(const Coord &)
DataPointSet::find
RowID find(const Pos &, float horradius, float deltaz) const
DataPointSet::bivSet
BinIDValueSet & bivSet()
DataPointSet::data_
PosVecDataSet & data_
Definition: datapointset.h:241
DataPointSet::getRowID
RowID getRowID(BinIDValueSet::SPos) const
DPSFromVolumeFiller::hastrcdata_
bool hastrcdata_
Definition: datapointset.h:283
DataPointSet::dataRow
DataRow dataRow(RowID) const
DataPointSet::dataChanged
void dataChanged()
Definition: datapointset.h:210
DataPointSet::Pos::nr_
int nr_
unused if not 2D
Definition: datapointset.h:81
DataPointSet::isEmpty
bool isEmpty() const
Definition: datapointset.h:145
DataPointSet::DataRow::setGroup
void setGroup(unsigned short grp)
DataPointSet::Pos::set
void set(const Coord &)
TaskRunner
Class that can execute a task.
Definition: task.h:170
DataPointSet::getValues
const float * getValues(RowID) const
DataPointSet::find
RowID find(const Pos &) const
DataPointSet::value
float value(ColID, RowID) const
DataPointSet::DataRow::grp_
short grp_
Definition: datapointset.h:128
DataPointSet::Pos::Pos
Pos(const Coord &, float z)
DataPointSet::DataPointSet
DataPointSet(const TypeSet< DataRow > &, const BufferStringSet &valnms, bool is2d, bool minimal=false)
datapackbase.h
DataPointSet::unit
const UnitOfMeasure * unit(ColID) const
ParallelTask
Generalization of a task that can be run in parallel.
Definition: paralleltask.h:66
DataPointSet::DataRow::pos_
Pos pos_
Definition: datapointset.h:126
DataPointSet::DataRow::isInactive
bool isInactive() const
Definition: datapointset.h:119
DataPointSet::addRow
void addRow(const DataRow &)
When finished, you have to call dataChanged()
DataPointSet::DataPointSet
DataPointSet(const DataPointSet &)
UnitOfMeasure
Unit of Measure.
Definition: unitofmeasure.h:35
DataPointSet::setSelected
void setSelected(RowID, int selgrp)
DataPointSet::Pos::set
void set(const Coord3 &)
DataPointSet::extractPositions
bool extractPositions(::Pos::Provider &, const ObjectSet< DataColDef > &, const ::Pos::Filter *f=0, TaskRunner *tr=0, bool filterAccept=true)
DataPointSet::bivSetIdx
int bivSetIdx(ColID idx) const
Definition: datapointset.h:206
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
DataPointSet::validColID
bool validColID(ColID) const
DataPointSet::getRange
bool getRange(TrcKeyZSampling &) const
DPSFromVolumeFiller::~DPSFromVolumeFiller
mODTextTranslationClass(DPSFromVolumeFiller) public ~DPSFromVolumeFiller()
DataPointSet::Pos::binIDOffSet
float binIDOffSet(bool inx) const
Definition: datapointset.h:83
DataPointSet::DataRow::DataRow
DataRow()
Definition: datapointset.h:104
DataPointSet::~DataPointSet
virtual ~DataPointSet()
DataPointSet::isInactive
bool isInactive(RowID rid) const
Definition: datapointset.h:173
DataPointSet::is2d_
bool is2d_
Definition: datapointset.h:243
DataPointSet::z
float z(RowID) const
DataPointSet::DataRow::setSel
void setSel(bool yn)
Definition: datapointset.h:120
DataPointSet::dataSet
PosVecDataSet & dataSet()
Definition: datapointset.h:195
DataPointSet::Pos::binid_
BinID binid_
Definition: datapointset.h:79
DataPointSet::Pos::set
void set(const BinID &bid)
Definition: datapointset.h:74
color.h
DataPointSet::DataRow::DataRow
DataRow(const Pos &p, unsigned short grp=1, bool issel=false)
Definition: datapointset.h:106
DataPointSet::Pos::setBinIDOffset
void setBinIDOffset(bool inx, float o)
Definition: datapointset.h:85
DataPointSet::gtColDef
DataColDef & gtColDef(ColID) const
DataPointSet::DataRow::data_
TypeSet< float > data_
Definition: datapointset.h:127
DataPointSet::bvsPos
BinIDValueSet::SPos bvsPos(RowID rid) const
Definition: datapointset.h:221
DataPointSet::DataRow::coord
Coord coord() const
Definition: datapointset.h:115
DataPointSet::DataRow::data
const TypeSet< float > & data() const
Definition: datapointset.h:116
DataPointSet::DataRow::binID
const BinID & binID() const
Definition: datapointset.h:114
DataPointSet::addCol
void addCol(const char *nm, const char *ref=0, const UnitOfMeasure *un=0)
or use dataSet() to add columns
Interval< float >
DataPointSet::isSelected
bool isSelected(RowID) const
DataPointSet::initPVDS
void initPVDS()
DataPointSet::Pos::Pos
Pos()
Definition: datapointset.h:60
DPSFromVolumeFiller::dps_
DataPointSet & dps_
Definition: datapointset.h:278
Pos::Provider
Provides a series of positions; can also be used for subselection.
Definition: posprovider.h:33
DataPointSet::DataPointSet
DataPointSet(const DataPointSet &, const ::Pos::Filter &)
DataPointSet::purgeInactive
void purgeInactive()
DPSFromVolumeFiller::doWork
virtual bool doWork(od_int64 start, od_int64 stop, int thridx)
DataPointSet::setEmpty
void setEmpty()
DataPointSet::DataRow::isSel
bool isSel() const
Definition: datapointset.h:118
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
DataPointSet::nrfixedcols_
const int nrfixedcols_
Definition: datapointset.h:252
DPSFromVolumeFiller::firstcol_
int firstcol_
Definition: datapointset.h:281
DataPointSet::dataSet
const PosVecDataSet & dataSet() const
Definition: datapointset.h:188
TypeSet< float >
DataPointSet::findFirst
RowID findFirst(const BinID &) const
DataColDef
Column definition in tabular data sets.
Definition: datacoldef.h:29

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