OrbitFile.java

  1. /* Copyright 2002-2012 Space Applications Services
  2.  * Licensed to CS Systèmes d'Information (CS) under one or more
  3.  * contributor license agreements.  See the NOTICE file distributed with
  4.  * this work for additional information regarding copyright ownership.
  5.  * CS licenses this file to You under the Apache License, Version 2.0
  6.  * (the "License"); you may not use this file except in compliance with
  7.  * the License.  You may obtain a copy of the License at
  8.  *
  9.  *   http://www.apache.org/licenses/LICENSE-2.0
  10.  *
  11.  * Unless required by applicable law or agreed to in writing, software
  12.  * distributed under the License is distributed on an "AS IS" BASIS,
  13.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14.  * See the License for the specific language governing permissions and
  15.  * limitations under the License.
  16.  */
  17. package org.orekit.files.general;

  18. import java.util.Collection;
  19. import java.util.List;

  20. import org.orekit.time.AbsoluteDate;

  21. /** Interface for orbit file representations.
  22.  * @author Thomas Neidhart
  23.  */
  24. public interface OrbitFile {

  25.     /** Time system used throughout this orbit file. */
  26.     public enum TimeSystem {
  27.         /** Greenwich Mean Sidereal Time. */
  28.         GMST,
  29.         /** Global Positioning System. */
  30.         GPS,
  31.         /** GLONASS. */
  32.         GLO,
  33.         /** GALILEO. */
  34.         GAL,
  35.         /** International Atomic Time. */
  36.         TAI,
  37.         /** Coordinated Universal Time. */
  38.         UTC,
  39.         /** Universal Time 1. */
  40.         UT1,
  41.         /** Terrestrial Time. */
  42.         TT,
  43.         /** Geocentric Coordinate Time. */
  44.         TCG,
  45.         /** Barycentric Dynamic Time. */
  46.         TDB,
  47.         /** Barycentric Coordinate Time. */
  48.         TCB,
  49.         /** Quasi-Zenith System. */
  50.         QZS,
  51.         /** Mission Elapsed Time. */
  52.         MET,
  53.         /** Mission Relative Time. */
  54.         MRT;
  55.     }

  56.     /** Returns the start epoch of the orbit file.
  57.      * @return the start epoch
  58.      */
  59.     AbsoluteDate getEpoch();

  60.     /** Returns the time interval between epochs (in seconds).
  61.      * @return the time interval between epochs
  62.      */
  63.     double getEpochInterval();

  64.     /** Returns the number of epochs contained in this orbit file.
  65.      * @return the number of epochs
  66.      */
  67.     int getNumberOfEpochs();

  68.     /** Returns the coordinate system of the entries in this orbit file.
  69.      * @return the coordinate system
  70.      */
  71.     String getCoordinateSystem();

  72.     /** Returns the {@link TimeSystem} used to time-stamp position entries.
  73.      * @return the {@link TimeSystem} of the orbit file
  74.      */
  75.     TimeSystem getTimeSystem();

  76.     /** Returns a {@link Collection} of {@link SatelliteInformation} objects for
  77.      * all satellites contained in this orbit file.
  78.      * @return a {@link Collection} of {@link SatelliteInformation} objects
  79.      */
  80.     Collection<SatelliteInformation> getSatellites();

  81.     /** Get the number of satellites contained in this orbit file.
  82.      * @return the number of satellites
  83.      */
  84.     int getSatelliteCount();

  85.     /** Get additional information about a satellite.
  86.      * @param satId the satellite id
  87.      * @return a {@link SatelliteInformation} object describing the satellite if
  88.      *         present, <code>null</code> otherwise
  89.      */
  90.     SatelliteInformation getSatellite(final String satId);

  91.     /** Tests whether a satellite with the given id is contained in this orbit
  92.      * file.
  93.      * @param satId the satellite id
  94.      * @return <code>true</code> if the satellite is contained in the file,
  95.      *         <code>false</code> otherwise
  96.      */
  97.     boolean containsSatellite(final String satId);

  98.     /** Get the time coordinates for the given satellite.
  99.      * @param satId the satellite id
  100.      * @return a {@link List} of {@link SatelliteTimeCoordinate} entries for
  101.      *         this satellite
  102.      */
  103.     List<SatelliteTimeCoordinate> getSatelliteCoordinates(final String satId);
  104. }