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
19 import java.util.Collection;
20 import java.util.List;
21
22 import org.orekit.time.AbsoluteDate;
23
24 /** Interface for orbit file representations.
25 * @author Thomas Neidhart
26 */
27 public interface OrbitFile {
28
29 /** Time system used throughout this orbit file. */
30 enum TimeSystem {
31 /** Greenwich Mean Sidereal Time. */
32 GMST,
33 /** Global Positioning System. */
34 GPS,
35 /** GLONASS. */
36 GLO,
37 /** GALILEO. */
38 GAL,
39 /** International Atomic Time. */
40 TAI,
41 /** Coordinated Universal Time. */
42 UTC,
43 /** Universal Time 1. */
44 UT1,
45 /** Terrestrial Time. */
46 TT,
47 /** Geocentric Coordinate Time. */
48 TCG,
49 /** Barycentric Dynamic Time. */
50 TDB,
51 /** Barycentric Coordinate Time. */
52 TCB,
53 /** Quasi-Zenith System. */
54 QZS,
55 /** Mission Elapsed Time. */
56 MET,
57 /** Mission Relative Time. */
58 MRT;
59 }
60
61 /** Returns the start epoch of the orbit file.
62 * @return the start epoch
63 */
64 AbsoluteDate getEpoch();
65
66 /** Returns the time interval between epochs (in seconds).
67 * @return the time interval between epochs
68 */
69 double getEpochInterval();
70
71 /** Returns the number of epochs contained in this orbit file.
72 * @return the number of epochs
73 */
74 int getNumberOfEpochs();
75
76 /** Returns the coordinate system of the entries in this orbit file.
77 * @return the coordinate system
78 */
79 String getCoordinateSystem();
80
81 /** Returns the {@link TimeSystem} used to time-stamp position entries.
82 * @return the {@link TimeSystem} of the orbit file
83 */
84 TimeSystem getTimeSystem();
85
86 /** Returns a {@link Collection} of {@link SatelliteInformation} objects for
87 * all satellites contained in this orbit file.
88 * @return a {@link Collection} of {@link SatelliteInformation} objects
89 */
90 Collection<SatelliteInformation> getSatellites();
91
92 /** Get the number of satellites contained in this orbit file.
93 * @return the number of satellites
94 */
95 int getSatelliteCount();
96
97 /** Get additional information about a satellite.
98 * @param satId the satellite id
99 * @return a {@link SatelliteInformation} object describing the satellite if
100 * present, <code>null</code> otherwise
101 */
102 SatelliteInformation getSatellite(final String satId);
103
104 /** Tests whether a satellite with the given id is contained in this orbit
105 * file.
106 * @param satId the satellite id
107 * @return <code>true</code> if the satellite is contained in the file,
108 * <code>false</code> otherwise
109 */
110 boolean containsSatellite(final String satId);
111
112 /** Get the time coordinates for the given satellite.
113 * @param satId the satellite id
114 * @return a {@link List} of {@link SatelliteTimeCoordinate} entries for
115 * this satellite
116 */
117 List<SatelliteTimeCoordinate> getSatelliteCoordinates(final String satId);
118 }