![]() |
Earth Observation Mission CFI Software Orbit Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.27 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitId.h,v 1.31 2014-02-25 15:36:33 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00009 #ifndef ORBITID_H 00010 #define ORBITID_H 00011 00012 //--INCLUDE----------------------------------------------------------- 00013 #include <CfiError.h> 00014 #include <CfiId.h> 00015 #include <ModelId.h> 00016 #include <OemFile.h> // AN-578 00017 #include <OrbitData.h> 00018 #include <OrbitFileDiagnostics.h> // ANR-692 00019 #include <OsfRec.h> 00020 #include <OsvRec.h> 00021 #include <PropagPreciseConf.h> 00022 #include <SP3File.h> 00023 #include <SatId.h> 00024 #include <StateVector.h> 00025 #include <TimeCorrelation.h> 00026 #include <TleFile.h> // ANR-932 00027 #include <TleRec.h> 00028 00029 //--NAMESPACES-------------------------------------------------------- 00030 00031 namespace EECFI 00032 { 00036 class XO_DECL OrbitIdCheckReport 00037 { 00038 friend class OrbitId; 00039 00040 public: 00041 long numOsvsOutsideLooseTolerance; 00042 std::vector<long> indexOsvsOutsideLooseTolerance; 00043 long numOsvsOutsideTightTolerance; 00044 std::vector<long> indexOsvsOutsideTightTolerance; 00045 std::vector<OrbitFileDiagnosticsReport> fileDiagnosticsReports; 00046 00047 OrbitIdCheckReport(); 00048 00049 private: 00050 explicit OrbitIdCheckReport(void* report); 00051 }; // Added for ANR-692 00052 00056 class XO_DECL OrbitId : public CfiId 00057 { 00058 friend class ANXTime; 00059 friend class RelANXTime; 00060 friend class Swath; 00061 friend class SwathStar; 00062 friend class OrbitExtra; 00063 friend class SwathId; // AN-505 00064 friend class AttitudeDef; // AN-596 00065 friend class VisibilityList; // AN-1038 00066 00067 public: 00070 OrbitId(const OrbitId& other); 00071 00076 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst); 00077 00080 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00081 00083 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit); 00084 00086 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1); 00087 00089 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf& preciseConf); 00090 00092 OrbitId(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf& preciseConf); 00093 00095 OrbitId(const SatId& satId, 00096 const ModelId& modelId, 00097 const TimeCorrelation& timeCor, 00098 long timeRef, 00099 long orbitFileMode, 00100 const std::vector<OsfFile>& osfData, 00101 long timeInitMode, 00102 double time0, 00103 double time1, 00104 long orbit0, 00105 long orbit1); 00107 OrbitId(const SatId& satId, 00108 const ModelId& modelId, 00109 const TimeCorrelation& timeCor, 00110 long timeRef, 00111 long orbitFileMode, 00112 const std::vector<OrbitFile>& osvData, 00113 long timeInitMode, 00114 double time0, 00115 double time1, 00116 long orbit0, 00117 long orbit1); 00121 OrbitId(const SatId& satId, 00122 const ModelId& modelId, 00123 const TimeCorrelation& timeCor, 00124 long timeRef, 00125 long orbitFileMode, 00126 const std::vector<OrbitFile>& osvData, 00127 const OrbitChangeData& orbitChangeData, 00128 long timeInitMode, 00129 double time0, 00130 double time1, 00131 long orbit0, 00132 long orbit1); // ANR-527 00134 OrbitId(const SatId& satId, 00135 const ModelId& modelId, 00136 const TimeCorrelation& timeCor, 00137 long timeRef, 00138 long orbitFileMode, 00139 const std::vector<DorisFile>& dorisData, 00140 long timeInitMode, 00141 double time0, 00142 double time1, 00143 long orbit0, 00144 long orbit1); 00148 OrbitId(const SatId& satId, 00149 const ModelId& modelId, 00150 const TimeCorrelation& timeCor, 00151 long timeRef, 00152 long orbitFileMode, 00153 const std::vector<DorisFile>& dorisData, 00154 const OrbitChangeData& orbitChangeData, 00155 long timeInitMode, 00156 double time0, 00157 double time1, 00158 long orbit0, 00159 long orbit1); // ANR-527 00160 00162 OrbitId(const SatId& satId, 00163 const ModelId& modelId, 00164 const TimeCorrelation& timeCor, 00165 long timeRef, 00166 long orbitFileMode, 00167 const std::vector<SP3File>& sp3Data, 00168 long timeInitMode, 00169 double time0, 00170 double time1); // AN-550 00171 00174 OrbitId(const SatId& satId, 00175 const ModelId& modelId, 00176 const TimeCorrelation& timeCor, 00177 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00178 00180 OrbitId(const SatId& satId, 00181 const ModelId& modelId, 00182 const TimeCorrelation& timeCor, 00183 long timeRef, 00184 long orbitFileMode, 00185 const std::vector<OemFile>& oemData, 00186 long timeInitMode, 00187 double time0, 00188 double time1); // AN-578 00189 00191 OrbitId(const SatId& satId, 00192 const ModelId& modelId, 00193 const TimeCorrelation& timeCor, 00194 long timeRef, 00195 long orbitFileMode, 00196 const std::vector<TleFile>& tleData, 00197 long timeInitMode, 00198 double time0, 00199 double time1); // ANR-932 00200 00202 OrbitId(OrbitId& orbitIdIn); 00203 00205 virtual ~OrbitId() EXCEPT; 00206 00210 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, long driftMode, double ascMlstDrift, double inclination, long irep, long icyc, double rlong, double ascMlst); 00211 00213 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, long orbit0, const RefOrbitInfo& refOrbitInfo); 00214 00216 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit); 00217 00219 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1); 00220 00222 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, double time, const double pos[3], const double vel[3], long absOrbit, const PropagPreciseConf& preciseConf); 00223 00225 void init(const SatId& satId, const ModelId& modelId, const TimeCorrelation& timeCor, long timeRef, long orbitFileMode, const std::vector<std::string>& inputFiles, long timeInitMode, double time0, double time1, long orbit0, long orbit1, const PropagPreciseConf& preciseConf); 00226 00229 void init(const SatId& satId, 00230 const ModelId& modelId, 00231 const TimeCorrelation& timeCor, 00232 const GeoOrbitInitData& geoOrbitInit); // Added for AN-353 00233 00235 void change(const OrbitChangeData& changeData); // Added for AN-527 00236 00238 SatId satId() const; 00239 00241 std::vector<OsvRec> getOsv() const; 00242 00244 void setOsv(const std::vector<OsvRec>& osvRecList); 00245 00247 std::vector<ANXExtra> getAnx() const; 00248 00250 void setAnx(const std::vector<ANXExtra>& anxList); 00251 00253 std::vector<OsfRecords> getOsf() const; 00254 00256 void setOsf(const std::vector<OsfRecords>& osvRecList); 00257 00259 ValidityTime getValTime() const; 00260 00262 void setValTime(const ValidityTime& valTime); 00263 00265 PropagPreciseConf getPrecisePropagConfig() const; 00266 00268 void setPrecisePropagConfig(const PropagPreciseConf& preciseConf); 00269 00271 void setGeoOrbitInfo(const GeoOrbitInfo& geoOrbitInfo); // Added for AN-353 00272 00274 GeoOrbitInfo getGeoOrbitInfo(); // Added for AN-353 00275 00277 OrbitalInfo getOrbitInfo(long absoluteOrbit) const; 00278 00287 void orbitInfoConfigure(long item, long option) const; // AN-523 00288 00290 OrbitInfo getOrbitNumbersFromRel(long relOrbit, long cycle) const; 00291 00293 OrbitInfo getOrbitNumbersFromPhase(long phase) const; 00294 00296 OrbitInfo getOrbitNumbersFromAbs(long absOrbit) const; 00297 00301 StateVector osvCompute(long mode, long timeRef, double time); // AN-860 00302 00306 StateVectorExtraInfo osvComputeExtra(long extraChoice) const; 00307 00319 StateVector positionOnOrbitToTime(long abs_orbit_number, long angle_type, double angle, double angle_rate, double angle_rate_rate, long deriv, long time_ref) const; 00320 00328 TleRec osvToTle(long timeMode, long timeRef, double time0, double time1, long orbit0, long orbit1) const; 00329 00358 OrbitIdCheckReport check(const OrbitFileDiagnosticsSettings& settings) const; 00359 00362 OrbitId& operator=(const OrbitId& other); 00363 00364 protected: 00366 OrbitId(); 00367 00369 void eraseOrbit(); 00370 00371 private: 00373 void dataFileInit(const SatId& satId, 00374 const ModelId& modelId, 00375 const TimeCorrelation& timeCor, 00376 long timeRef, 00377 long orbitFileMode, 00378 const void* fileData, 00379 long timeInitMode, 00380 double time0, 00381 double time1, 00382 long orbit0, 00383 long orbit1); 00384 00385 TimeCorrelation timeId; 00386 ModelId modelId; 00387 }; 00388 00389 } // namespace EECFI 00390 00391 #endif