OpendTect  6.6
coordsystem.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: K. Tingdahl
8  Date: August 2016
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "factory.h"
14 
15 #include "bufstring.h"
16 #include "callback.h"
17 #include "coord.h"
18 #include "latlong.h"
19 #include "refcount.h"
20 
21 namespace Coords
22 {
23 
32 public:
33 
34  bool operator==(const CoordSystem&) const;
35 
36  static void initRepository(NotifierAccess* = 0);
42 
43  static void getSystemNames(bool onlyorthogonal,
44  bool onlyprojection,
45  uiStringSet&,
53  virtual CoordSystem* clone() const = 0;
54 
55  virtual uiString description() const = 0;
56  virtual BufferString summary() const = 0;
57 
58  virtual bool isOK() const = 0;
59 
60  virtual bool geographicTransformOK() const = 0;
61 
62  static Coord convert(const Coord&,const CoordSystem& from,
63  const CoordSystem& to);
65  const CoordSystem& from) const;
66 
67  virtual uiString toUiString(const Coord&) const;
68  virtual BufferString toString(const Coord&,
69  bool withsystem=false) const;
73  virtual Coord fromString(const char*) const;
74 
75  virtual bool isOrthogonal() const = 0;
76  virtual bool isProjection() const { return false; }
77  virtual bool isFeet() const { return false; }
78  virtual bool isMeter() const { return false; }
79 
80  bool usePar(const IOPar&);
81  void fillPar(IOPar&) const;
82 
83  static const char* sKeyFactoryName();
84  static const char* sKeyUiName();
85 
86 protected:
87 
88  virtual LatLong toGeographic(const Coord&,
89  bool wgs84) const = 0;
90  virtual Coord fromGeographic(const LatLong&,
91  bool wgs84) const = 0;
92  virtual void doFillPar(IOPar&) const = 0;
93  virtual bool doUsePar(const IOPar&) = 0;
94 
95 private:
96 
97  friend class ::LatLong;
98 };
99 
100 
103 public:
105  tr("Unlocated XY") );
106 
108 
109  virtual CoordSystem* clone() const;
110  virtual uiString description() const { return
111  tr("Coordinate system in an undefined projection.");}
112  virtual BufferString summary() const
113  { return sFactoryKeyword(); }
114 
115  void setIsFeet( bool isfeet ) { isfeet_ = isfeet; }
116  bool geographicTransformOK() const { return false; }
117 
118  virtual bool isOK() const { return true; }
119  virtual bool isOrthogonal() const { return true; }
120  virtual bool isFeet() const { return isfeet_; }
121  virtual bool isMeter() const { return !isfeet_; }
122 
123 private:
124 
125  virtual LatLong toGeographic(const Coord&,bool wgs84) const;
126  virtual Coord fromGeographic(const LatLong&,bool wgs84) const;
127  virtual bool doUsePar(const IOPar&);
128  virtual void doFillPar(IOPar&) const;
129 
130  bool isfeet_;
131 };
132 
133 
136 public:
138  tr("Anchor Point Based XY") );
139 
141  AnchorBasedXY(const LatLong&,const Coord&);
142  virtual CoordSystem* clone() const;
143  virtual uiString description() const { return
144  tr("Coordinate system has an anchor point "
145  "for which Latitude/Longitude is known");}
146  virtual BufferString summary() const;
147 
148  void setIsFeet( bool isfeet ) { isfeet_ = isfeet; }
149  bool geographicTransformOK() const;
150  void setLatLongEstimate(const LatLong&,const Coord&);
151 
152  virtual bool isOK() const { return true; }
153  virtual bool isOrthogonal() const { return true; }
154  virtual bool isFeet() const { return isfeet_; }
155  virtual bool isMeter() const { return !isfeet_; }
156 
157  const Coord& refCoord() const { return refcoord_; }
158  const LatLong& refLatLong() const { return reflatlng_; }
159 
160 private:
161 
162  virtual LatLong toGeographic(const Coord&,bool wgs84) const;
164  virtual Coord fromGeographic(const LatLong&,bool wgs84) const;
165 
166  bool isfeet_;
169 
170  double lngdist_;
171 
172  virtual bool doUsePar(const IOPar&);
173  virtual void doFillPar(IOPar&) const;
174 
175 };
176 
177 } // namespace Coords
178 
Coords::CoordSystem::isFeet
virtual bool isFeet() const
Definition: coordsystem.h:77
Coords::UnlocatedXY::isMeter
virtual bool isMeter() const
Definition: coordsystem.h:121
Coords::CoordSystem::description
virtual uiString description() const =0
Coords::CoordSystem::isOrthogonal
virtual bool isOrthogonal() const =0
Coords::UnlocatedXY::description
virtual uiString description() const
Definition: coordsystem.h:110
Coords::CoordSystem::toGeographic
virtual LatLong toGeographic(const Coord &, bool wgs84) const =0
Coords::CoordSystem::clone
virtual CoordSystem * clone() const =0
Coords::UnlocatedXY::doUsePar
virtual bool doUsePar(const IOPar &)
Coords::UnlocatedXY::doFillPar
virtual void doFillPar(IOPar &) const
Conv::to
T to(const F &fr)
Definition: convert.h:34
factory.h
uiStringSet
Definition: uistringset.h:23
ObjectSet< IOPar >
Coords::CoordSystem::initRepository
static void initRepository(NotifierAccess *=0)
Coords::UnlocatedXY::isFeet
virtual bool isFeet() const
Definition: coordsystem.h:120
Coords::UnlocatedXY::toGeographic
virtual LatLong toGeographic(const Coord &, bool wgs84) const
Coords::AnchorBasedXY::refCoord
const Coord & refCoord() const
Definition: coordsystem.h:157
Coords::CoordSystem::isOK
virtual bool isOK() const =0
mDefaultFactoryInstantiation
#define mDefaultFactoryInstantiation(baseclss, clss, keywrd, usernm)
Definition: factory.h:288
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
Coords::UnlocatedXY::UnlocatedXY
UnlocatedXY()
Coords::CoordSystem::doFillPar
virtual void doFillPar(IOPar &) const =0
Coords::AnchorBasedXY::refcoord_
Coord refcoord_
Definition: coordsystem.h:167
Coords::UnlocatedXY::isOK
virtual bool isOK() const
Definition: coordsystem.h:118
Coords::CoordSystem::fromString
virtual Coord fromString(const char *) const
Coords::CoordSystem::summary
virtual BufferString summary() const =0
Coords::CoordSystem::fillPar
void fillPar(IOPar &) const
Coords::CoordSystem::operator==
bool operator==(const CoordSystem &) const
Coords::CoordSystem::sKeyFactoryName
static const char * sKeyFactoryName()
Coords::CoordSystem::usePar
bool usePar(const IOPar &)
Coords::CoordSystem::geographicTransformOK
virtual bool geographicTransformOK() const =0
callback.h
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
Coords::CoordSystem::isProjection
virtual bool isProjection() const
Definition: coordsystem.h:76
Coords::CoordSystem::convertFrom
Coord convertFrom(const Coord &, const CoordSystem &from) const
Coords::AnchorBasedXY::isOrthogonal
virtual bool isOrthogonal() const
Definition: coordsystem.h:153
Coords::AnchorBasedXY::doUsePar
virtual bool doUsePar(const IOPar &)
mODTextTranslationClass
#define mODTextTranslationClass(clss)
Definition: uistring.h:40
bufstring.h
Coords::CoordSystem::isMeter
virtual bool isMeter() const
Definition: coordsystem.h:78
Coord
A cartesian coordinate in 2D space.
Definition: coord.h:25
Coords::AnchorBasedXY::toGeographic
virtual LatLong toGeographic(const Coord &, bool wgs84) const
Very approximate! Be Aware!
Coords::AnchorBasedXY::fromGeographic
virtual Coord fromGeographic(const LatLong &, bool wgs84) const
latlong.h
Coords::AnchorBasedXY::AnchorBasedXY
AnchorBasedXY()
Coords::AnchorBasedXY::isMeter
virtual bool isMeter() const
Definition: coordsystem.h:155
Coords::AnchorBasedXY::doFillPar
virtual void doFillPar(IOPar &) const
Coords::CoordSystem::convert
static Coord convert(const Coord &, const CoordSystem &from, const CoordSystem &to)
Coords::UnlocatedXY::geographicTransformOK
bool geographicTransformOK() const
Definition: coordsystem.h:116
NotifierAccess
Interface class for Notifier. See comments there.
Definition: notify.h:22
Coords::AnchorBasedXY::setLatLongEstimate
void setLatLongEstimate(const LatLong &, const Coord &)
Coords::AnchorBasedXY::setIsFeet
void setIsFeet(bool isfeet)
Definition: coordsystem.h:148
Coords::CoordSystem::toString
virtual BufferString toString(const Coord &, bool withsystem=false) const
mDefineFactoryInClass
#define mDefineFactoryInClass(T, funcname)
Definition: factory.h:425
Coords::CoordSystem
Definition: coordsystem.h:31
Coords::AnchorBasedXY::lngdist_
double lngdist_
Definition: coordsystem.h:170
Coords::CoordSystem::sKeyUiName
static const char * sKeyUiName()
Coords::AnchorBasedXY::isFeet
virtual bool isFeet() const
Definition: coordsystem.h:154
Coords::UnlocatedXY
Definition: coordsystem.h:102
Coords::UnlocatedXY::isOrthogonal
virtual bool isOrthogonal() const
Definition: coordsystem.h:119
Coords::AnchorBasedXY::isfeet_
bool isfeet_
Definition: coordsystem.h:166
Coords
Definition: coordsystem.h:22
Coords::UnlocatedXY::setIsFeet
void setIsFeet(bool isfeet)
Definition: coordsystem.h:115
Coords::AnchorBasedXY::refLatLong
const LatLong & refLatLong() const
Definition: coordsystem.h:158
Coords::UnlocatedXY::summary
virtual BufferString summary() const
Definition: coordsystem.h:112
Coords::CoordSystem::createSystem
static RefMan< CoordSystem > createSystem(const IOPar &)
Creates subclass with settings.
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
Coords::CoordSystem::fromGeographic
virtual Coord fromGeographic(const LatLong &, bool wgs84) const =0
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
Coords::CoordSystem::getSystemNames
static void getSystemNames(bool onlyorthogonal, bool onlyprojection, uiStringSet &, ObjectSet< IOPar > &)
Creates the subclasses without settings.
LatLong
Geographical coordinates in Decimal Degrees but with conv to deg, min, sec.
Definition: latlong.h:27
Coords::UnlocatedXY::isfeet_
bool isfeet_
Definition: coordsystem.h:130
refcount.h
Coords::AnchorBasedXY::isOK
virtual bool isOK() const
Definition: coordsystem.h:152
Coords::AnchorBasedXY::clone
virtual CoordSystem * clone() const
Coords::CoordSystem::toUiString
virtual uiString toUiString(const Coord &) const
Coords::CoordSystem::mRefCountImpl
mRefCountImpl(CoordSystem)
Coords::UnlocatedXY::clone
virtual CoordSystem * clone() const
Coords::AnchorBasedXY::description
virtual uiString description() const
Definition: coordsystem.h:143
Coords::AnchorBasedXY::geographicTransformOK
bool geographicTransformOK() const
Coords::AnchorBasedXY::reflatlng_
LatLong reflatlng_
Definition: coordsystem.h:168
Coords::CoordSystem::doUsePar
virtual bool doUsePar(const IOPar &)=0
IOPar
Generalized set of parameters of the keyword-value type.
Definition: iopar.h:55
Coords::AnchorBasedXY::AnchorBasedXY
AnchorBasedXY(const LatLong &, const Coord &)
Coords::UnlocatedXY::fromGeographic
virtual Coord fromGeographic(const LatLong &, bool wgs84) const
Coords::AnchorBasedXY
Definition: coordsystem.h:135
Coords::AnchorBasedXY::summary
virtual BufferString summary() const
RefMan
Definition: ptrman.h:206
coord.h

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