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 }