![]() |
Earth Observation Mission CFI Software Orbit Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.17 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 "OrbitData.h" 00014 #include "CfiError.h" 00015 #include "CfiId.h" 00016 #include "TimeCorrelation.h" 00017 #include "OsvRec.h" 00018 #include "OsfRec.h" 00019 #include "SatId.h" 00020 #include "StateVector.h" 00021 #include "ModelId.h" 00022 #include "PropagPreciseConf.h" 00023 #include "TleRec.h" 00024 #include "SP3File.h" 00025 #include "OemFile.h" // AN-578 00026 #include "OrbitFileDiagnostics.h" // ANR-692 00027 00028 //--NAMESPACES-------------------------------------------------------- 00029 using namespace std; 00030 00031 namespace EECFI 00032 { 00033 00037 class XO_DECL OrbitIdCheckReport 00038 { 00039 friend class OrbitId; 00040 public: 00041 long numOsvsOutsideLooseTolerance; 00042 vector<long> indexOsvsOutsideLooseTolerance; 00043 long numOsvsOutsideTightTolerance; 00044 vector<long> indexOsvsOutsideTightTolerance; 00045 vector<OrbitFileDiagnosticsReport> fileDiagnosticsReports; 00046 00047 OrbitIdCheckReport(); 00048 ~OrbitIdCheckReport(); 00049 private: 00050 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 00066 public: 00067 00072 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00073 long timeRef, double time, 00074 long orbit0, long driftMode, double ascMlstDrift, 00075 double inclination, long irep, long icyc, double rlong, 00076 double ascMlst ) throw (CfiError); 00077 00080 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00081 long timeRef, double time, 00082 long orbit0, const RefOrbitInfo &refOrbitInfo ) throw (CfiError); 00083 00085 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00086 long timeRef, double time, 00087 double pos[3], double vel[3], long absOrbit ) throw (CfiError); 00088 00090 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00091 long timeRef, long orbitFileMode, 00092 const vector<string> &inputFiles, long timeInitMode, 00093 double time0, double time1, 00094 long orbit0, long orbit1) throw (CfiError); 00095 00097 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00098 long timeRef, double time, 00099 double pos[3], double vel[3], long absOrbit, 00100 const PropagPreciseConf &preciseConf ) throw (CfiError); 00101 00103 OrbitId( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00104 long timeRef, long orbitFileMode, 00105 const vector<string> &inputFiles, long timeInitMode, 00106 double time0, double time1, 00107 long orbit0, long orbit1, 00108 const PropagPreciseConf &preciseConf ) throw (CfiError); 00109 00111 OrbitId( const SatId &satId, 00112 const ModelId &modelId, 00113 const TimeCorrelation &timeCor, 00114 long timeRef, 00115 long orbitFileMode, 00116 vector<OsfFile> &osfData, 00117 long timeInitMode, 00118 double time0, double time1, 00119 long orbit0, long orbit1) throw (CfiError); 00121 OrbitId( const SatId &satId, 00122 const ModelId &modelId, 00123 const TimeCorrelation &timeCor, 00124 long timeRef, 00125 long orbitFileMode, 00126 vector<OrbitFile> &osvData, 00127 long timeInitMode, 00128 double time0, double time1, 00129 long orbit0, long orbit1) throw (CfiError); 00133 OrbitId( const SatId &satId, 00134 const ModelId &modelId, 00135 const TimeCorrelation &timeCor, 00136 long timeRef, 00137 long orbitFileMode, 00138 vector<OrbitFile> &osvData, 00139 OrbitChangeData orbitChangeData, 00140 long timeInitMode, 00141 double time0, double time1, 00142 long orbit0, long orbit1) throw (CfiError); // ANR-527 00144 OrbitId( const SatId &satId, 00145 const ModelId &modelId, 00146 const TimeCorrelation &timeCor, 00147 long timeRef, 00148 long orbitFileMode, 00149 vector<DorisFile> &dorisData, 00150 long timeInitMode, 00151 double time0, double time1, 00152 long orbit0, long orbit1) throw (CfiError); 00156 OrbitId( const SatId &satId, 00157 const ModelId &modelId, 00158 const TimeCorrelation &timeCor, 00159 long timeRef, 00160 long orbitFileMode, 00161 vector<DorisFile> &dorisData, 00162 OrbitChangeData orbitChangeData, 00163 long timeInitMode, 00164 double time0, double time1, 00165 long orbit0, long orbit1) throw (CfiError); // ANR-527 00166 00168 OrbitId( const SatId &satId, 00169 const ModelId &modelId, 00170 const TimeCorrelation &timeCor, 00171 long timeRef, 00172 long orbitFileMode, 00173 vector<SP3File> &sp3Data, 00174 long timeInitMode, 00175 double time0, double time1) throw (CfiError); // AN-550 00176 00179 OrbitId( const SatId &satId, 00180 const ModelId &modelId, 00181 const TimeCorrelation &timeCor, 00182 const GeoOrbitInitData &geoOrbitInit) throw (CfiError); // Added for AN-353 00183 00185 OrbitId( const SatId &satId, 00186 const ModelId &modelId, 00187 const TimeCorrelation &timeCor, 00188 long timeRef, 00189 long orbitFileMode, 00190 vector<OemFile> &oemData, 00191 long timeInitMode, 00192 double time0, double time1) throw (CfiError); // AN-578 00193 00195 OrbitId( OrbitId &orbitIdIn ); 00196 00198 ~OrbitId() throw (CfiError); 00199 00203 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00204 long timeRef, double time, 00205 long orbit0, long driftMode, double ascMlstDrift, 00206 double inclination, long irep, long icyc, double rlong, 00207 double ascMlst ) throw (CfiError); 00208 00210 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00211 long timeRef, double time, 00212 long orbit0, const RefOrbitInfo &refOrbitInfo ) throw (CfiError); 00213 00215 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00216 long timeRef, double time, 00217 double pos[3], double vel[3], long absOrbit ) throw (CfiError); 00218 00220 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00221 long timeRef, long orbitFileMode, 00222 const vector<string> &inputFiles, long timeInitMode, 00223 double time0, double time1, 00224 long orbit0, long orbit1) throw (CfiError); 00225 00227 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00228 long timeRef, double time, 00229 double pos[3], double vel[3], long absOrbit, 00230 const PropagPreciseConf &preciseConf) throw (CfiError); 00231 00233 void init( const SatId &satId, const ModelId &modelId, const TimeCorrelation &timeCor, 00234 long timeRef, long orbitFileMode, 00235 const vector<string> &inputFiles, long timeInitMode, 00236 double time0, double time1, 00237 long orbit0, long orbit1, 00238 const PropagPreciseConf &preciseConf ) throw (CfiError); 00239 00242 void init( const SatId &satId, 00243 const ModelId &modelId, 00244 const TimeCorrelation &timeCor, 00245 const GeoOrbitInitData &geoOrbitInit) throw (CfiError); // Added for AN-353 00246 00248 void change( OrbitChangeData changeData) throw (CfiError); // Added for AN-527 00249 00251 SatId satId() const; 00252 00254 vector<OsvRec> getOsv() const; 00255 00257 void setOsv( const vector<OsvRec> &osvRecList ); 00258 00260 vector<ANXExtra> getAnx() const; 00261 00263 void setAnx( const vector<ANXExtra> &anxList ); 00264 00266 vector<OsfRecords> getOsf() const; 00267 00269 void setOsf( const vector<OsfRecords> &osvRecList ); 00270 00272 ValidityTime getValTime() const; 00273 00275 void setValTime( const ValidityTime &valTime ); 00276 00278 PropagPreciseConf getPrecisePropagConfig() const throw (CfiError); 00279 00281 void setPrecisePropagConfig( const PropagPreciseConf &preciseConf ); 00282 00284 void setGeoOrbitInfo( const GeoOrbitInfo &geoOrbitInfo ) throw (CfiError); // Added for AN-353 00285 00287 GeoOrbitInfo getGeoOrbitInfo() throw (CfiError); // Added for AN-353 00288 00290 OrbitalInfo getOrbitInfo( long absoluteOrbit ) const throw (CfiError); 00291 00300 void orbitInfoConfigure( long item, long option ) const throw (CfiError); // AN-523 00301 00303 OrbitInfo getOrbitNumbersFromRel( long relOrbit, long cycle ) const throw (CfiError); 00304 00306 OrbitInfo getOrbitNumbersFromPhase( long phase ) const throw (CfiError); 00307 00309 OrbitInfo getOrbitNumbersFromAbs( long absOrbit ) const throw (CfiError); 00310 00314 StateVector osvCompute( long mode, long timeRef, double time) const throw (CfiError); 00315 00319 StateVectorExtraInfo osvComputeExtra( long extraChoice ) const throw (CfiError); 00320 00332 StateVector positionOnOrbitToTime( long abs_orbit_number, long angle_type, 00333 double angle, double angle_rate, double angle_rate_rate, 00334 long deriv, long time_ref) const throw (CfiError); 00335 00343 TleRec osvToTle( long timeMode, long timeRef, double time0, double time1, 00344 long orbit0, long orbit1 ) throw (CfiError); 00345 00374 OrbitIdCheckReport check(const OrbitFileDiagnosticsSettings &settings) const throw (CfiError); 00375 00377 void operator=( const OrbitId &orbitIdIn ); 00378 00379 protected: 00380 00382 OrbitId(); 00383 00385 GenericId* getId(); // this is the xo_orbit_id variable 00386 00388 void eraseOrbit() throw (CfiError); 00389 00390 private: 00391 00393 void dataFileInit(const SatId &satId, 00394 const ModelId &modelId, 00395 const TimeCorrelation &timeCor, 00396 long timeRef, 00397 long orbitFileMode, 00398 void *fileData, 00399 long timeInitMode, 00400 double time0, double time1, 00401 long orbit0, long orbit1) throw (CfiError); 00402 00403 TimeCorrelation timeId; 00404 ModelId modelId; 00405 }; 00406 00407 } // closing namespace 00408 00409 #endif