HiRISE

HiRISE.HiPlan.HiSEAS
Class BasicObservationData

java.lang.Object
  extended by HiRISE.HiPlan.HiSEAS.BasicObservationData

public final class BasicObservationData
extends Object

A basic data model for an observation of a target by an observer at a particular ephemeris time.

The basic model includes a position vector for the observer relative to the target's Body, a velocity vector, and a view vector, all in rectangular coordinates. The view vector is a line between the target site and the observer; the position vector is a line between the center of the target body and the observer. The observer's east-leading longitude, planetocentric latitude, and altitude above the target body's reference spheroid are also components of the model.

The model includes the position of the subsolar point on the target body at that time and the local photometric angles (incidence, phase, and emission angles), as well as the solar longitude, Ls.

All calculations are performed at construction using the JPL NAIF SPICE library. It is assumed that all necessary SPICE kernels are loaded into the SPICE kernel pool when the observation is constructed; if not, a SpiceException will be thrown.

Version:
1.5
Author:
Christian Schaller - UA/PIRL

Field Summary
static String ID
          Class identification name with source code version and date.
 
Constructor Summary
BasicObservationData(Observer observer, Target target, double et)
          Creates a new observation data model for an observer viewing a target at a particular ephemeris time.
 
Method Summary
 boolean equals(Object o)
          Indicates whether some other object is "equal to" this one.
 double getAltitude()
          Gets the altitude of the observer in kilometers above the target body's reference ellipsoid.
 double getEmissionAngle()
          Gets the emission angle at the target site for this observation.
 double getEt()
          Gets the ephemeris time of this observation.
 double getIncidenceAngle()
          Gets the incidence angle at the target site for this observation.
 double getLatitude()
          Gets the planetocentric latitude of the observer with respect to the target body in the observer's reference frame.
 double getLongitude()
          Gets the east-leading longitude of the observer with respect to the target body in the observer's reference frame.
 Observer getObserver()
          Gets this observation's observer.
 double getPhaseAngle()
          Gets the phase angle at the target site for this observation.
 Triplet getPositionVector()
          Gets the position vector of the observer with respect to the target body at this observation's ephemeris time.
 double getSolarAltitude()
          Gets the altitude of the sun at the time of the observation.
 double getSolarAzimuth()
          Gets the azimuth of the sun at the time of the observation.
 double getSolarDeclination()
          Gets the declination of the sun at the time of the observation.
 double getSolarLongitude()
          Gets the solar longitude at the time of the observation.
 double getSolarRightAscension()
          Gets the right ascension of the sun at the time of the observation.
 double getSubsolarLatitude()
          Gets the planetocentric latitude of the subsolar point on the target body.
 double getSubsolarLatitudeSlope()
          Gets the time rate of change of the planetocentric latitude of the subsolar point on the target body.
 double getSubsolarLongitude()
          Gets the east-leading longitude of the subsolar point on the target body.
 double getSubsolarLongitudeSlope()
          Gets the time rate of change of the east-leading longitude of the subsolar point on the target body.
 Target getTarget()
          Gets the target of this observation.
 Triplet getVelocityVector()
          Gets the velocity vector of the observer with respect to the target body at this observation's ephemeris time.
 Triplet getViewVector()
          Gets the vector between the observer and the target site at this observation's ephemeris time.
 int hashCode()
          Returns a hash code value for this observation.
 String toString()
          Gets a string representation of this observation.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

ID

public static final String ID
Class identification name with source code version and date.

See Also:
Constant Field Values
Constructor Detail

BasicObservationData

public BasicObservationData(Observer observer,
                            Target target,
                            double et)
Creates a new observation data model for an observer viewing a target at a particular ephemeris time.

At construction, the location of the observer is calculated with respect to the target body in the observer's frame of reference at that time. The position of the subsolar point on the target body at that time and the local photometric angles (incidence, phase, and emission angles) are also calculated, as is the solar longitude, Ls.

It is assumed that all necessary SPICE kernels are loaded into the SPICE kernel pool when the observation is constructed; if not, a SpiceException will be thrown.

Parameters:
observer - the observer.
target - the target site being observed.
et - the ephemeris time of the observation.
Throws:
NullPointerException - if either the observer or the target are null.
edu.asu.jmars.layer.obs.mro.SpiceException - if the SPICE kernel pool lacks the necessary kernels for calculating the observation data.
Method Detail

getObserver

public Observer getObserver()
Gets this observation's observer.

Returns:
the observer.

getTarget

public Target getTarget()
Gets the target of this observation.

Returns:
the target o this observation.

getEt

public double getEt()
Gets the ephemeris time of this observation.

Returns:
the ephemeris time of the observation.

getPositionVector

public Triplet getPositionVector()
Gets the position vector of the observer with respect to the target body at this observation's ephemeris time. Units are kilometers.

Returns:
the observer's position vector in kilometers.

getVelocityVector

public Triplet getVelocityVector()
Gets the velocity vector of the observer with respect to the target body at this observation's ephemeris time. Units are kilometers/second.

Returns:
the observer's velocity vector in kilometers/second.

getViewVector

public Triplet getViewVector()
Gets the vector between the observer and the target site at this observation's ephemeris time. The target site is the vector's origin. Units are kilometers.

Returns:
the observation's view vector in kilometers.

getLongitude

public double getLongitude()
Gets the east-leading longitude of the observer with respect to the target body in the observer's reference frame.

Returns:
the observer's east-leading longitude in radians.

getLatitude

public double getLatitude()
Gets the planetocentric latitude of the observer with respect to the target body in the observer's reference frame.

Returns:
the observer's planetocentric latitude in radians.

getAltitude

public double getAltitude()
Gets the altitude of the observer in kilometers above the target body's reference ellipsoid.

Returns:
the observer's altitude in km.

getSolarLongitude

public double getSolarLongitude()
Gets the solar longitude at the time of the observation. This longitude, Ls, is a measure of the season.

Returns:
the solar longitude in radians.

getSolarRightAscension

public double getSolarRightAscension()
Gets the right ascension of the sun at the time of the observation. The right ascension is computed in the observer's frame.

Returns:
the solar right ascension in radians.

getSolarDeclination

public double getSolarDeclination()
Gets the declination of the sun at the time of the observation. The declination is computed in the observer's frame.

Returns:
the solar declination in radians.

getSolarAltitude

public double getSolarAltitude()
Gets the altitude of the sun at the time of the observation. The solar altitude is angle between the Sun's rays and the ground plane as viewed from the target site in the observer's frame.

Altitude is also known as elevation.

Returns:
the solar altitude in radians.

getSolarAzimuth

public double getSolarAzimuth()
Gets the azimuth of the sun at the time of the observation. The solar azimuth is the (clockwise) compass angle of the Sun's position as viewed from the target site, relative to due north, in the observer's frame.

Returns:
the solar azimuth in radians.

getSubsolarLongitude

public double getSubsolarLongitude()
Gets the east-leading longitude of the subsolar point on the target body.

Returns:
the east-leading subsolar longitude in radians.

getSubsolarLatitude

public double getSubsolarLatitude()
Gets the planetocentric latitude of the subsolar point on the target body.

Returns:
the planetocentric subsolar latitude in radians.

getSubsolarLongitudeSlope

public double getSubsolarLongitudeSlope()
Gets the time rate of change of the east-leading longitude of the subsolar point on the target body.

Returns:
the east-leading subsolar longitude rate of change in radians per second.

getSubsolarLatitudeSlope

public double getSubsolarLatitudeSlope()
Gets the time rate of change of the planetocentric latitude of the subsolar point on the target body.

Returns:
the planetocentric subsolar latitude rate of change in radians per second.

getPhaseAngle

public double getPhaseAngle()
Gets the phase angle at the target site for this observation.

Returns:
the phase angle in radians.

getIncidenceAngle

public double getIncidenceAngle()
Gets the incidence angle at the target site for this observation.

Returns:
the incidence angle in radians.

getEmissionAngle

public double getEmissionAngle()
Gets the emission angle at the target site for this observation.

Returns:
the emission angle in radians.

toString

public String toString()
Gets a string representation of this observation.

Overrides:
toString in class Object
Returns:
a string representation of this observation.

hashCode

public int hashCode()
Returns a hash code value for this observation.

Overrides:
hashCode in class Object
Returns:
a hash code value for this observation.

equals

public boolean equals(Object o)
Indicates whether some other object is "equal to" this one.

Two observations are equal if and only if they have the same observer, target, ephemeris time, label, comment, and derived values.

Overrides:
equals in class Object
Parameters:
o - the object to which this object is compared.
Returns:
true if the objects are equal; false otherwise.

HiRISE

Copyright (C) Arizona Board of Regents on behalf of the Planetary Image Research Laboratory, Lunar and Planetary Laboratory at the University of Arizona