Loading...
Searching...
No Matches
supernovas::GeodeticObserver Class Reference
Observer location

An observer location at a geodetic (longitude, latitude, altitude) location at the surface or above it (such as in an aircraft or on balloon). More...

`#include <supernovas.h>`

Inheritance diagram for supernovas::GeodeticObserver:

## Public Member Functions

| GeodeticObserver (const Site &site, const EOP &eop, const ScalarVelocity &horizontal, const Angle &direction, const ScalarVelocity &vertical=ScalarVelocity::stationary())
| Instantiates a new observer that is moving relative to Earth's surface, such as an airborne observer.
| GeodeticObserver (const Site &site, const EOP &eop=EOP::undefined())
| Instantiates a new observer at a fixed location on Earth.
| GeodeticObserver (const Site &site, const Velocity &itrs_vel, const EOP &eop=EOP::undefined())
| Instantiates a new observer that is moving relative to Earth's surface, such as an airborne observer.
const Observer * | copy () const override
| Returns a pointer to a newly allocated copy of this geodetic (Earth-based) observer instance.
Velocity | enu_velocity () const
| Returns the surface velocity, in the local East-North-Up (ENU) directions, of a moving observer, such as an airborne or balloon-borne observatory.
EOP | eop_at (const Time &time) const
| Returns the Earth Orientation Parameters (EOP), including diurnal corrections for libration and ocrean tides.
bool | equals (const Observer &other) const override
| Checks if this observer is essentially the same as the other, within the tolerances associated to their defining components.
bool | is_geodetic () const override
| Checks if this observer can be cast to a GeodeticObserver.
Velocity | itrs_velocity () const
| Returns the surface velocity, in the ITRS, of a moving observer, such as an airborne or balloon-borne observatory.
const EOP & | mean_eop () const
| Returns the mean Earth Orientation Parameters (EOP) appropriate around the time of observation.
Site | site () const
| Returns the fixed or momentary observing site for this observer.
GeocentricObserver | to_geocentric_at (const Time &time, enum novas_accuracy accuracy=NOVAS_FULL_ACCURACY) const
| Returns an equivalent geocentric observer location and motion at the specified time and accuracy.
std::string | to_string () const override
| Returns a string representation of this Earth-based observer location.
Public Member Functions inherited from supernovas::Observer
virtual | ~Observer ()
const observer * | _novas_observer () const
| Returns the underlying NOVAS C observer data structure.
Frame | frame_at (const Time &time, enum novas_accuracy accuracy=NOVAS_FULL_ACCURACY) const
| Returns an observing frame for this observer at the specified time and optionally with a specified accuracy.
virtual bool | is_geocentric () const
| Checks if this observer can be cast to a GeocentricObserver.
bool | operator!= (const Observer &other) const
| Checks if two observers differ given standard tolerances associated to their defining components.
bool | operator== (const Observer &other) const
| Checks if two observers are essentially the same within the tolerances associated to their defining components.
Frame | reduced_accuracy_frame_at (const Time &time) const
| Returns a reduced accuracy observing frame for this observer at the specified time.
Interferometric | to_interferometric (const Apparent &phase_center, enum novas_reference_system system=NOVAS_ICRS) const
| Returns projected u,v,w coordinates for an interferometer station.
enum novas_observer_place | type () const
| Returns the observer type.
Public Member Functions inherited from supernovas::Validating
bool | is_valid () const
| Returns the previously set 'valid' state of the implementing instance.
| operator bool () const
| Objects that implement Validating can be used in conditionals directly, without explicitly calling is_valid().

## Protected Member Functions

Position | gcrs_position_at (const Time &time, enum novas_accuracy accuracy=NOVAS_FULL_ACCURACY) const override
| Returns the geocentric geometric position vector for this observer, in the GCRS, at the specified time and accuracy.
Velocity | gcrs_velocity_at (const Time &time, enum novas_accuracy accuracy=NOVAS_FULL_ACCURACY) const override
| Returns the geocentric geometric velocity vector for this observer, in the GCRS, at the specified time and accuracy.
Protected Member Functions inherited from supernovas::Observer
| Observer (enum novas_observer_place type, const Site &site=Site::undefined(), const Position &pos=Position::origin(), const Velocity &vel=Velocity::stationary())
Protected Member Functions inherited from supernovas::Validating
| Validating ()
| dummy constructor;

## Additional Inherited Members

Static Public Member Functions inherited from supernovas::Observer
static GeocentricObserver | at_geocenter ()
| Returns a fictitious observer placed at the location of the geocenter.
static SolarSystemObserver | at_ssb ()
| Returns a fictitious observer placed at the location of the Solar-System Barycenter (SSB).
static GeocentricObserver | in_earth_orbit (const Position &pos, const Velocity &vel)
| Returns a new observer orbiting the Earth.
static SolarSystemObserver | in_solar_system (const Position &pos, const Velocity &vel)
| Returns a new observer in some Solar-system location.
static GeodeticObserver | moving_on_earth (const Site &site, const EOP &eop, const ScalarVelocity &horizontal, const Angle &direction, const ScalarVelocity &vertical=ScalarVelocity::stationary())
| Instantiates a new observer that is moving relative to Earth's surface, such as an airborne observer.
static GeodeticObserver | moving_on_earth (const Site &site, const Velocity &itrs_vel, const EOP &eop=EOP::undefined())
| Returns a new observer that is moving, at some velocitym relative to Earth's surface, such as an airborne aircraft or balloon based observatory.
static GeodeticObserver | on_earth (const Site &site, const EOP &eop=EOP::undefined())
| Returns a new observer located at a fixed observing site.
static const Observer & | undefined ()
| Returns a reference to a statically defined standard invalid observer.
Protected Attributes inherited from supernovas::Observer
observer | _observer = {}
| stored observer data
Protected Attributes inherited from supernovas::Validating
bool | _valid = false
| the state variable.

## Detailed Description

An observer location at a geodetic (longitude, latitude, altitude) location at the surface or above it (such as in an aircraft or on balloon).

The observer may be fixed at that location, or else moving with some velocity over the ground.

Since
  1.6

See also
  GeodeticFrame, GeocentricObserver

## Constructor & Destructor Documentation

## GeodeticObserver() [1/3]

supernovas::GeodeticObserver::GeodeticObserver | ( | const Site & | site,
|  | const EOP & | eop = EOP::undefined() )

explicit

Instantiates a new observer at a fixed location on Earth.

Parameters

  site | the observing site
  eop | (optional) Mean (preferably interpolated) Earth Orientation Parameters (EOP) appropriate around the time of observation, such as obtained from the IERS bulletins or data service, or EOP::undefined() to let Frame fetch polar offsets from IERS as needed (default: undefined).

Since
  1.6

See also
  novas_set_auto_fetch_eop()

References supernovas::Validating::_valid, supernovas::Validating::is_valid(), novas_is_auto_fetch_eop(), NOVAS_OBSERVER_ON_EARTH, and site().

Referenced by GeodeticObserver(), copy(), and equals().

## GeodeticObserver() [2/3]

supernovas::GeodeticObserver::GeodeticObserver | ( | const Site & | site,
|  | const Velocity & | vel,
|  | const EOP & | eop = EOP::undefined() )

Instantiates a new observer that is moving relative to Earth's surface, such as an airborne observer.

Parameters

  site | the momentary geodetic location of the observer
  vel | the momentaty velocity of the observer relative to Earth's surface (in ITRS),
  eop | (optional) Mean (preferably interpolated) Earth Orientation Parameters (EOP) appropriate around the time of observation, such as obtained from the IERS bulletins or data service, or EOP::undefined() to let Frame fetch polar offsets from IERS as needed (default: undefined).

Since
  1.6

See also
  Site::enu_to_itrf(), novas_set_auto_fetch_eop()

References supernovas::Vector::_array(), supernovas::Observer::_observer, supernovas::Validating::_valid, supernovas::Validating::is_valid(), supernovas::Unit::km, make_airborne_observer(), NOVAS_AIRBORNE_OBSERVER, novas_is_auto_fetch_eop(), supernovas::Unit::s, supernovas::Vector::scaled(), and site().

## GeodeticObserver() [3/3]

supernovas::GeodeticObserver::GeodeticObserver | ( | const Site & | site,
|  | const EOP & | eop,
|  | const ScalarVelocity & | horizontal,
|  | const Angle & | direction,
|  | const ScalarVelocity & | vertical = ScalarVelocity::stationary() )

Instantiates a new observer that is moving relative to Earth's surface, such as an airborne observer.

Parameters

  site | the momentary geodetic location of the observer.
  eop | Mean (preferably interpolated) Earth Orientation Parameters (EOP) appropriate around the time of observation, such as obtained from the IERS bulletins or data service, or EOP::undefined() to let Frame fetch polar offsets from IERS as needed.
  horizontal | momentary horizontal speed of moving observer.
  direction | azimuthal direction of motion (from North, measured to the East).
  vertical | (optional) momentary vertical speed of observer (default: 0).

Since
  1.6

See also
  Site::enu_to_itrf(), novas_set_auto_fetch_eop()

References GeodeticObserver(), supernovas::Observer::_observer, supernovas::Validating::_valid, supernovas::Validating::is_valid(), supernovas::ScalarVelocity::km_per_s(), novas_enu_to_itrs(), supernovas::Angle::rad(), and site().

## Member Function Documentation

## copy()

const Observer * supernovas::GeodeticObserver::copy | ( |  | ) | const

override virtual

Returns a pointer to a newly allocated copy of this geodetic (Earth-based) observer instance.

Returns
  pointer to new copy of this geodetic (Earth-based) observer instance.

Since
  1.6

Reimplemented from supernovas::Observer.

References GeodeticObserver().

## enu_velocity()

Velocity supernovas::GeodeticObserver::enu_velocity | ( |  | ) | const

Returns the surface velocity, in the local East-North-Up (ENU) directions, of a moving observer, such as an airborne or balloon-borne observatory.

Returns
  the momentary surface velocity vector of the moving observer in the East-North-Up (ENU) directions at the current location.

Since
  1.6

See also
  itrs_velocity(), Site::itrs_to_enu()

References supernovas::Observer::_observer, supernovas::Validating::is_valid(), supernovas::Unit::km_per_s, and novas_itrs_to_enu().

Referenced by to_string().

## eop_at()

EOP supernovas::GeodeticObserver::eop_at | ( | const Time & | time | ) | const

Returns the Earth Orientation Parameters (EOP), including diurnal corrections for libration and ocrean tides.

Parameters

  time | Astrometric time for which to apply diurnal corrections

Returns
  EOP corrected for libration and ocean tides at the specified time.

Since
  1.6

See also
  mean_eop()

References supernovas::Time::_novas_timespec(), supernovas::Unit::arcsec, novas_eop::dut1, supernovas::Validating::is_valid(), supernovas::Time::jd(), novas_eop::leap, novas_diurnal_eop_at_time(), novas_fetch_eop(), novas_is_auto_fetch_eop(), NOVAS_UTC, novas_eop::xp, and novas_eop::yp.

Referenced by gcrs_position_at(), and gcrs_velocity_at().

## equals()

bool supernovas::GeodeticObserver::equals | ( | const Observer & | other | ) | const

override virtual

Checks if this observer is essentially the same as the other, within the tolerances associated to their defining components.

Note, that an observer may not equal itself if it contains NAN or infinite components.

Parameters

  other | the other observer

Returns
  true if both observers effectively describe the same observing location, within tolerances, or else false.

Since
  1.7

See also
  operator==(), operator!=()

Reimplemented from supernovas::Observer.

References GeodeticObserver(), supernovas::Observer::equals(), supernovas::Observer::is_geodetic(), supernovas::Angle::uas(), supernovas::EOP::xp(), and supernovas::EOP::yp().

## gcrs_position_at()

Position supernovas::GeodeticObserver::gcrs_position_at | ( | const Time & | time,
|  | enum novas_accuracy | accuracy = NOVAS_FULL_ACCURACY ) const

override protected virtual

Returns the geocentric geometric position vector for this observer, in the GCRS, at the specified time and accuracy.

Parameters

  time | Astrometric time of observation
  accuracy | (optional) NOVAS_FULL_ACCURACY (default) or NOVAS_REDUCED_ACCURACY.

Returns
  The ICRS geometric geocentric position vector of this observer at the specified time.

Since
  1.6

See also
  gcrs_velocity_at()

Reimplemented from supernovas::Observer.

References supernovas::Time::_novas_timespec(), supernovas::Observer::_observer, supernovas::Angle::arcsec(), supernovas::Unit::AU, eop_at(), supernovas::Validating::is_valid(), novas_site_gcrs_posvel(), supernovas::Position::undefined(), supernovas::EOP::xp(), and supernovas::EOP::yp().

Referenced by to_geocentric_at().

## gcrs_velocity_at()

Velocity supernovas::GeodeticObserver::gcrs_velocity_at | ( | const Time & | time,
|  | enum novas_accuracy | accuracy = NOVAS_FULL_ACCURACY ) const

override protected virtual

Returns the geocentric geometric velocity vector for this observer, in the GCRS, at the specified time and accuracy.

Parameters

  time | Astrometric time of observation
  accuracy | (optional) NOVAS_FULL_ACCURACY (default) or NOVAS_REDUCED_ACCURACY.

Returns
  The ICRS geometric geocentric velocity vector of this observer at the specified time.

Since
  1.6

See also
  gcrs_position_at()

Reimplemented from supernovas::Observer.

References supernovas::Time::_novas_timespec(), supernovas::Observer::_observer, supernovas::Angle::arcsec(), supernovas::Unit::AU_per_day, eop_at(), supernovas::Validating::is_valid(), novas_site_gcrs_posvel(), supernovas::Velocity::undefined(), supernovas::EOP::xp(), and supernovas::EOP::yp().

Referenced by to_geocentric_at().

## is_geodetic()

bool supernovas::GeodeticObserver::is_geodetic | ( |  | ) | const

override virtual

Checks if this observer can be cast to a GeodeticObserver.

Returns
  true is this observer is an instance of GeodeticObserver, otherwise false.

Since
  1.6

See also
  GeodeticObserver, is_geocentric()

Reimplemented from supernovas::Observer.

## itrs_velocity()

Velocity supernovas::GeodeticObserver::itrs_velocity | ( |  | ) | const

Returns the surface velocity, in the ITRS, of a moving observer, such as an airborne or balloon-borne observatory.

Returns
  the momentary ITRS surface velocity vector of the moving observer.

Since
  1.6

See also
  enu_velocity(), Site::itrs_to_enu()

References supernovas::Observer::_observer, supernovas::Validating::is_valid(), and supernovas::Unit::km_per_s.

## mean_eop()

const EOP & supernovas::GeodeticObserver::mean_eop | ( |  | ) | const

Returns the mean Earth Orientation Parameters (EOP) appropriate around the time of observation.

Returns
  the mean Earth Orientation Parameters (EOP) defined for this observer, not including libration and ocean tides.

Since
  1.6

See also
  eop_at()

References novas_is_auto_fetch_eop().

## site()

Site supernovas::GeodeticObserver::site | ( |  | ) | const

Returns the fixed or momentary observing site for this observer.

Returns
  the observing site (fixed or momentary).

Since
  1.6

See also
  velocity()

References supernovas::Observer::_observer, supernovas::Unit::deg, novas_on_surface::height, novas_on_surface::latitude, novas_on_surface::longitude, and site().

Referenced by GeodeticObserver(), GeodeticObserver(), GeodeticObserver(), site(), and to_string().

## to_geocentric_at()

GeocentricObserver supernovas::GeodeticObserver::to_geocentric_at | ( | const Time & | time,
|  | enum novas_accuracy | accuracy = NOVAS_FULL_ACCURACY ) const

Returns an equivalent geocentric observer location and motion at the specified time and accuracy.

Parameters

  time | Astrometric time at which to convert this geodetic observing location to a geocentric observer place and movement.
  accuracy | (ooptional) NOVAS_FULL_ACCURACY (default) or NOVAS_REDUCED_ACCURACY.

Returns
  The equivalent geocentric observer place and movement at the specified instant of time.

Since
  1.6

References gcrs_position_at(), gcrs_velocity_at(), and supernovas::Validating::is_valid().

## to_string()

std::string supernovas::GeodeticObserver::to_string | ( |  | ) | const

override virtual

Returns a string representation of this Earth-based observer location.

Returns
  a new string that describes this observer.

Since
  1.6

Reimplemented from supernovas::Observer.

References enu_velocity(), supernovas::Vector::is_zero(), site(), supernovas::Site::to_string(), and supernovas::Velocity::to_string().