public class GroundStation extends Object
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).
getPrimeMeridianOffsetDriver()
and getPrimeMeridianDriftDriver()
getPolarOffsetXDriver()
, getPolarDriftXDriver()
,
getPolarOffsetYDriver()
and getPolarDriftYDriver()
getClockOffsetDriver()
getEastOffsetDriver()
,
getNorthOffsetDriver()
and getZenithOffsetDriver()
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
GroundStation(TopocentricFrame baseFrame)
Build a ground station ignoring
station displacements . |
GroundStation(TopocentricFrame baseFrame,
EOPHistory eopHistory,
StationDisplacement... displacements)
Simple constructor.
|
Modifier and Type | Method and Description |
---|---|
TopocentricFrame |
getBaseFrame()
Get the base frame associated with the station.
|
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<DerivativeStructure> |
getOffsetToInertial(Frame inertial,
AbsoluteDate clockDate,
DSFactory factory,
Map<String,Integer> indices)
Get the transform between offset frame and inertial frame with derivatives.
|
FieldTransform<DerivativeStructure> |
getOffsetToInertial(Frame inertial,
FieldAbsoluteDate<DerivativeStructure> offsetCompensatedDate,
DSFactory factory,
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.
|
public static final String OFFSET_SUFFIX
public static final String INTERMEDIATE_SUFFIX
public GroundStation(TopocentricFrame baseFrame)
station displacements
.
The initial values for the pole and prime meridian parametric linear models
(getPrimeMeridianOffsetDriver()
, getPrimeMeridianDriftDriver()
,
getPolarOffsetXDriver()
, getPolarDriftXDriver()
,
getPolarOffsetXDriver()
, getPolarDriftXDriver()
) are set to 0.
The initial values for the station offset model (getClockOffsetDriver()
,
getEastOffsetDriver()
, getNorthOffsetDriver()
,
getZenithOffsetDriver()
) are set to 0.
This implies that as long as these values are not changed, the offset frame is
the same as the base frame
. As soon as some of these models
are changed, the offset frame moves away from the base frame
.
baseFrame
- base frame associated with the station, without *any* parametric
model (no station offset, no polar motion, no meridian shift)GroundStation(TopocentricFrame, EOPHistory, StationDisplacement...)
public GroundStation(TopocentricFrame baseFrame, EOPHistory eopHistory, StationDisplacement... displacements)
The initial values for the pole and prime meridian parametric linear models
(getPrimeMeridianOffsetDriver()
, getPrimeMeridianDriftDriver()
,
getPolarOffsetXDriver()
, getPolarDriftXDriver()
,
getPolarOffsetXDriver()
, getPolarDriftXDriver()
) are set to 0.
The initial values for the station offset model (getClockOffsetDriver()
,
getEastOffsetDriver()
, getNorthOffsetDriver()
,
getZenithOffsetDriver()
, getClockOffsetDriver()
) are set to 0.
This implies that as long as these values are not changed, the offset frame is
the same as the base frame
. As soon as some of these models
are changed, the offset frame moves away from the base frame
.
baseFrame
- base frame associated with the station, without *any* parametric
model (no station offset, no polar motion, no meridian shift)eopHistory
- EOP history associated with Earth framesdisplacements
- ground station displacement model (tides, ocean loading,
atmospheric loading, thermal effects...)public StationDisplacement[] getDisplacements()
public ParameterDriver getClockOffsetDriver()
public ParameterDriver getEastOffsetDriver()
public ParameterDriver getNorthOffsetDriver()
public ParameterDriver getZenithOffsetDriver()
public ParameterDriver getPrimeMeridianOffsetDriver()
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).
public ParameterDriver getPrimeMeridianDriftDriver()
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).
public ParameterDriver getPolarOffsetXDriver()
The parameter is an angle in radians
public ParameterDriver getPolarDriftXDriver()
The parameter is an angle rate in radians per second
public ParameterDriver getPolarOffsetYDriver()
The parameter is an angle in radians
public ParameterDriver getPolarDriftYDriver()
The parameter is an angle rate in radians per second
public TopocentricFrame getBaseFrame()
The base frame corresponds to a null position offset, null polar motion, null meridian shift
public Frame getEstimatedEarthFrame()
This frame is bound to the driver for prime meridian offset
,
driver prime meridian drift
,
driver for polar offset along X
,
driver for polar drift along X
,
driver for polar offset along Y
,
driver for polar drift along Y
, so its orientation changes when
the setValue
methods of the drivers are called.
public UT1Scale getEstimatedUT1()
This time scale is bound to the driver for prime meridian offset
,
and driver prime meridian drift
, so its offset from UTC changes when
the setValue
methods of the drivers are called.
public GeodeticPoint getOffsetGeodeticPoint(AbsoluteDate date)
date
- current date (may be null if displacements are ignored)public Transform getOffsetToInertial(Frame inertial, AbsoluteDate clockDate)
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.
inertial
- inertial frame to transform toclockDate
- date of the transform as read by the ground station clock (i.e. clock offset not compensated)public FieldTransform<DerivativeStructure> getOffsetToInertial(Frame inertial, AbsoluteDate clockDate, DSFactory factory, Map<String,Integer> indices)
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.
inertial
- inertial frame to transform toclockDate
- date of the transform as read by the ground station clock (i.e. clock offset not compensated)factory
- factory for the derivativesindices
- indices of the estimated parameters in derivatives computationsgetOffsetToInertial(Frame, FieldAbsoluteDate, DSFactory, Map)
public FieldTransform<DerivativeStructure> getOffsetToInertial(Frame inertial, FieldAbsoluteDate<DerivativeStructure> offsetCompensatedDate, DSFactory factory, Map<String,Integer> indices)
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.
inertial
- inertial frame to transform tooffsetCompensatedDate
- date of the transform, clock offset and its derivatives already compensatedfactory
- factory for the derivativesindices
- indices of the estimated parameters in derivatives computationsgetOffsetToInertial(Frame, AbsoluteDate, DSFactory, Map)
Copyright © 2002-2020 CS Group. All rights reserved.