org.orekit.estimation.measurements

Class GroundStation

• public class GroundStation
extends Object
Class modeling a ground station that can perform some measurements.

This class adds a position offset parameter to a base topocentric frame.

Since 9.0, this class also adds parameters for an additional polar motion and an additional prime meridian orientation. Since these parameters will have the same name for all ground stations, they will be managed consistently and allow to estimate Earth orientation precisely (this is needed for precise orbit determination). The polar motion and prime meridian orientation will be applied after regular Earth orientation parameters, so the value of the estimated parameters will be correction to EOP, they will not be the complete EOP values by themselves. Basically, this means that for Earth, the following transforms are applied in order, between inertial frame and ground station frame (for non-Earth based ground stations, different precession nutation models and associated planet oritentation parameters would be applied, if available):

Since 9.3, this class also adds a station clock offset parameter, which manages the value that must be subtracted from the observed measurement date to get the real physical date at which the measurement was performed (i.e. the offset is negative if the ground station clock is slow and positive if it is fast).

1. precession/nutation, as theoretical model plus celestial pole EOP parameters
2. body rotation, as theoretical model plus prime meridian EOP parameters
3. polar motion, which is only from EOP parameters (no theoretical models)
4. additional body rotation, controlled by getPrimeMeridianOffsetDriver() and getPrimeMeridianDriftDriver()
5. additional polar motion, controlled by getPolarOffsetXDriver(), getPolarDriftXDriver(), getPolarOffsetYDriver() and getPolarDriftYDriver()
6. station clock offset, controlled by getClockOffsetDriver()
7. station position offset, controlled by getEastOffsetDriver(), getNorthOffsetDriver() and getZenithOffsetDriver()
Since:
8.0
Author:
Luc Maisonobe
• Field Summary

Fields
Modifier and Type Field and Description
static String DRIFT_SUFFIX
Suffix for ground clock drift parameters name.
static String INTERMEDIATE_SUFFIX
Suffix for ground station intermediate frame name.
static String OFFSET_SUFFIX
Suffix for ground station position and clock offset parameters names.
• Constructor Summary

Constructors
Constructor and Description
GroundStation(TopocentricFrame baseFrame)
Build a ground station ignoring station displacements.
GroundStation(TopocentricFrame baseFrame, EOPHistory eopHistory, StationDisplacement... displacements)
Simple constructor.
• Method Summary

All Methods
Modifier and Type Method and Description
TopocentricFrame getBaseFrame()
Get the base frame associated with the station.
ParameterDriver getClockDriftDriver()
Get a driver allowing to change station clock drift (which is related to measurement date).
ParameterDriver getClockOffsetDriver()
Get a driver allowing to change station clock (which is related to measurement date).
StationDisplacement[] getDisplacements()
Get the displacement models.
ParameterDriver getEastOffsetDriver()
Get a driver allowing to change station position along East axis.
Frame getEstimatedEarthFrame()
Get the estimated Earth frame, including the estimated linear models for pole and prime meridian.
UT1Scale getEstimatedUT1()
Get the estimated UT1 scale, including the estimated linear models for prime meridian.
ParameterDriver getNorthOffsetDriver()
Get a driver allowing to change station position along North axis.
GeodeticPoint getOffsetGeodeticPoint(AbsoluteDate date)
Get the geodetic point at the center of the offset frame.
Transform getOffsetToInertial(Frame inertial, AbsoluteDate clockDate)
Get the transform between offset frame and inertial frame.
FieldTransform<Gradient> getOffsetToInertial(Frame inertial, AbsoluteDate clockDate, int freeParameters, Map<String,Integer> indices)
Get the transform between offset frame and inertial frame with derivatives.
FieldTransform<Gradient> getOffsetToInertial(Frame inertial, FieldAbsoluteDate<Gradient> offsetCompensatedDate, int freeParameters, Map<String,Integer> indices)
Get the transform between offset frame and inertial frame with derivatives.
ParameterDriver getPolarDriftXDriver()
Get a driver allowing to add a polar drift along X.
ParameterDriver getPolarDriftYDriver()
Get a driver allowing to add a polar drift along Y.
ParameterDriver getPolarOffsetXDriver()
Get a driver allowing to add a polar offset along X.
ParameterDriver getPolarOffsetYDriver()
Get a driver allowing to add a polar offset along Y.
ParameterDriver getPrimeMeridianDriftDriver()
Get a driver allowing to add a prime meridian rotation rate.
ParameterDriver getPrimeMeridianOffsetDriver()
Get a driver allowing to add a prime meridian rotation.
ParameterDriver getZenithOffsetDriver()
Get a driver allowing to change station position along Zenith axis.
• Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
• Field Detail

• OFFSET_SUFFIX

public static final String OFFSET_SUFFIX
Suffix for ground station position and clock offset parameters names.
Constant Field Values
• DRIFT_SUFFIX

public static final String DRIFT_SUFFIX
Suffix for ground clock drift parameters name.
Constant Field Values
• INTERMEDIATE_SUFFIX

public static final String INTERMEDIATE_SUFFIX
Suffix for ground station intermediate frame name.
Constant Field Values
• Method Detail

• getDisplacements

public StationDisplacement[] getDisplacements()
Get the displacement models.
Returns:
displacement models (empty if no model has been set up)
Since:
9.1
• getClockOffsetDriver

public ParameterDriver getClockOffsetDriver()
Get a driver allowing to change station clock (which is related to measurement date).
Returns:
driver for station clock offset
Since:
9.3
• getClockDriftDriver

public ParameterDriver getClockDriftDriver()
Get a driver allowing to change station clock drift (which is related to measurement date).
Returns:
driver for station clock drift
Since:
10.3
• getEastOffsetDriver

public ParameterDriver getEastOffsetDriver()
Get a driver allowing to change station position along East axis.
Returns:
driver for station position offset along East axis
• getNorthOffsetDriver

public ParameterDriver getNorthOffsetDriver()
Get a driver allowing to change station position along North axis.
Returns:
driver for station position offset along North axis
• getZenithOffsetDriver

public ParameterDriver getZenithOffsetDriver()
Get a driver allowing to change station position along Zenith axis.
Returns:
driver for station position offset along Zenith axis
• getPrimeMeridianOffsetDriver

public ParameterDriver getPrimeMeridianOffsetDriver()
Get a driver allowing to add a prime meridian rotation.

The parameter is an angle in radians. In order to convert this value to a DUT1 in seconds, the value must be divided by ave = 7.292115146706979e-5 (which is the nominal Angular Velocity of Earth from the TIRF model).

Returns:
driver for prime meridian rotation
• getPrimeMeridianDriftDriver

public ParameterDriver getPrimeMeridianDriftDriver()
Get a driver allowing to add a prime meridian rotation rate.

The parameter is an angle rate in radians per second. In order to convert this value to a LOD in seconds, the value must be multiplied by -86400 and divided by ave = 7.292115146706979e-5 (which is the nominal Angular Velocity of Earth from the TIRF model).

Returns:
driver for prime meridian rotation rate
• getPolarOffsetXDriver

public ParameterDriver getPolarOffsetXDriver()
Get a driver allowing to add a polar offset along X.

The parameter is an angle in radians

Returns:
driver for polar offset along X
• getPolarDriftXDriver

public ParameterDriver getPolarDriftXDriver()
Get a driver allowing to add a polar drift along X.

The parameter is an angle rate in radians per second

Returns:
driver for polar drift along X
• getPolarOffsetYDriver

public ParameterDriver getPolarOffsetYDriver()
Get a driver allowing to add a polar offset along Y.

The parameter is an angle in radians

Returns:
driver for polar offset along Y
• getPolarDriftYDriver

public ParameterDriver getPolarDriftYDriver()
Get a driver allowing to add a polar drift along Y.

The parameter is an angle rate in radians per second

Returns:
driver for polar drift along Y
• getBaseFrame

public TopocentricFrame getBaseFrame()
Get the base frame associated with the station.

The base frame corresponds to a null position offset, null polar motion, null meridian shift

Returns:
base frame associated with the station
• getOffsetGeodeticPoint

public GeodeticPoint getOffsetGeodeticPoint(AbsoluteDate date)
Get the geodetic point at the center of the offset frame.
Parameters:
date - current date (may be null if displacements are ignored)
Returns:
geodetic point at the center of the offset frame
Since:
9.1
• getOffsetToInertial

public Transform getOffsetToInertial(Frame inertial,
AbsoluteDate clockDate)
Get the transform between offset frame and inertial frame.

The offset frame takes the current position offset, polar motion and the meridian shift into account. The frame returned is disconnected from later changes in the parameters. When the parameters managing these offsets are changed, the method must be called again to retrieve a new offset frame.

Parameters:
inertial - inertial frame to transform to
clockDate - date of the transform as read by the ground station clock (i.e. clock offset not compensated)
Returns:
transform between offset frame and inertial frame, at real measurement date (i.e. with clock, Earth and station offsets applied)
• getOffsetToInertial

public FieldTransform<Gradient> getOffsetToInertial(Frame inertial,
AbsoluteDate clockDate,
int freeParameters,
Map<String,Integer> indices)
Get the transform between offset frame and inertial frame with derivatives.

As the East and North vectors are not well defined at pole, the derivatives of these two vectors diverge to infinity as we get closer to the pole. So this method should not be used for stations less than 0.0001 degree from either poles.

Parameters:
inertial - inertial frame to transform to
clockDate - date of the transform as read by the ground station clock (i.e. clock offset not compensated)
freeParameters - total number of free parameters in the gradient
indices - indices of the estimated parameters in derivatives computations
Returns:
transform between offset frame and inertial frame, at real measurement date (i.e. with clock, Earth and station offsets applied)
Since:
10.2
getOffsetToInertial(Frame, FieldAbsoluteDate, int, Map)
• getOffsetToInertial

public FieldTransform<Gradient> getOffsetToInertial(Frame inertial,
int freeParameters,
Map<String,Integer> indices)
Get the transform between offset frame and inertial frame with derivatives.

As the East and North vectors are not well defined at pole, the derivatives of these two vectors diverge to infinity as we get closer to the pole. So this method should not be used for stations less than 0.0001 degree from either poles.

Parameters:
inertial - inertial frame to transform to
offsetCompensatedDate - date of the transform, clock offset and its derivatives already compensated
freeParameters - total number of free parameters in the gradient
indices - indices of the estimated parameters in derivatives computations
Returns:
transform between offset frame and inertial frame, at specified date
Since:
10.2