HiRISE

HiRISE.HiPlan.HiSEAS
Class MroObservation

java.lang.Object
  extended by HiRISE.HiPlan.HiSEAS.AbstractObservation
      extended by HiRISE.HiPlan.HiSEAS.MroObservation
All Implemented Interfaces:
Observation

public final class MroObservation
extends AbstractObservation

An immutable MRO observation of Mars in the IAU Mars body-fixed reference frame at a given ephemeris time.

To instantiate a new MRO observation, use the MroObservation.Builder. Create a new builder with an MroObservation.OrbitalData model derived from a Target and orbit number of interest, optionally set a label and/or comment, and invoke the builder's build method. For example, to create a new observation of a target called aramChaos on orbit 13203, use the following code:

        OrbitalData orbitalData = MroObservation.OrbitalData.findData (
                aramChaos,
                13203
        );
        MroObservation observation = new MroObservation.Builder (
                orbitalData
        ).label ("ESP_013203_1825").comment ("Stereo-1 of Aram Chaos").build ();

Alternatively, if the ephemeris time and roll angle are already known via another source, the builder may be instantiated with the target, orbit, ephemeris time, and roll angle directly. For exmaple, the same observation may be obtained with the following code:

        MroObservation observation = new MroObservation.Builder (
                aramChaos,
                Orbit.valueOf ("13203a"),
                296161196.352,
                Math.toRadians (-23.653)
        ).label ("ESP_013203_1825").comment ("Stereo-1 of Aram Chaos").build ();

Note that the builder (and the resultant observation) assume the roll angle is in radians. If the angle is obtained via the MTT findTargeted method in particular, the roll angle is in degrees and must be converted to radians as shown above.

The NAIF ID of the target's body must be 499 (Mars). If not, an IllegalArgumentException will be thrown.

At construction, the location of MRO with respect to the target's body at that time is calculated, as are the subsolar point on the target's body, the photometric angles (phase, incidence, and emission), and 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.

If the builder's optional label (or comment) is null, the MRO observation's label (or comment) will be set to the empty string ("") at construction; neither will be null.

Version:
1.9
Author:
Christian Schaller - UA/PIRL
See Also:
"Allison, M. 1997. Accurate analytic representations of solar time and seasons on Mars with applications to the Pathfinder/Surveyor missions. Geophys. Res. Lett. 24, 1967-1970."

Nested Class Summary
static class MroObservation.Builder
          A builder for an immutable MRO observation.
static class MroObservation.Orbit
          An immutable MRO orbit.
static class MroObservation.OrbitalData
          A simple data model representing a subset of orbital data necessary for planning an MRO-based observation.
static class MroObservation.OrbitPass
          An enumeration of the MRO orbit "passes." The orbit pass indicates whether the spacecraft is on the ascending or descending portion of the orbit.
 
Field Summary
static String ID
          Class identification name with source code version and date.
 
Fields inherited from class HiRISE.HiPlan.HiSEAS.AbstractObservation
basicObservationData
 
Method Summary
 boolean equals(Object o)
          Indicates whether some other object is "equal to" this one.
 String getComment()
          Gets the observation's optional comment.
 String getLabel()
          Gets the observation's optional label.
static Observer getMro()
          Gets the MRO observer associated with the MRO observation class.
 MroObservation.Orbit getOrbit()
          Gets the observation's orbit.
 double getRollAngle()
          Gets the observation's roll angle in radians.
 int hashCode()
          Returns a hash code value for this MRO observation.
 String toString()
          Gets a string representation of this MRO observation.
 
Methods inherited from class HiRISE.HiPlan.HiSEAS.AbstractObservation
getAltitude, getEmissionAngle, getEt, getIncidenceAngle, getLatitude, getLongitude, getObserver, getPhaseAngle, getPositionVector, getSolarAltitude, getSolarAzimuth, getSolarDeclination, getSolarLongitude, getSolarRightAscension, getSubsolarLatitude, getSubsolarLatitudeSlope, getSubsolarLongitude, getSubsolarLongitudeSlope, getTarget, getVelocityVector, getViewVector
 
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
Method Detail

getLabel

public String getLabel()
Gets the observation's optional label. The label is guaranteed not to be null.

Specified by:
getLabel in interface Observation
Specified by:
getLabel in class AbstractObservation
Returns:
the observation's optional label, which will not be null but which may be the empty string.

getComment

public String getComment()
Gets the observation's optional comment. The comment is guaranteed not to be null.

Specified by:
getComment in interface Observation
Specified by:
getComment in class AbstractObservation
Returns:
the observation's optional comment, which will not be null but which may be the empty string.

getOrbit

public MroObservation.Orbit getOrbit()
Gets the observation's orbit.

Returns:
the observation's orbit.

getRollAngle

public double getRollAngle()
Gets the observation's roll angle in radians.

Returns:
the roll angle in radians.

toString

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

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

hashCode

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

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

equals

public boolean equals(Object o)
Indicates whether some other object is "equal to" this one. An MRO observation is equal to another if and only if the observation data, label, and comment are the same.

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

getMro

public static Observer getMro()
Gets the MRO observer associated with the MRO observation class. All such observations use this instance of Observer, which represents the MRO spacecraft in the IAU Mars body-fixed reference frame.

Returns:
the MRO spacecraft as an observer.

HiRISE

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