![]() |
Earth Observation Mission CFI Software Orbit Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.15 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: OrbitData.h,v 1.33 2014-03-25 07:51:59 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef __EECFI_ORBITDATA__ 00015 #define __EECFI_ORBITDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include "DataHandlingData.h" 00019 #include "LibData.h" 00020 #include "OsfFile.h" 00021 #include "OrbitDllExport.h" 00022 00023 //--NAMESPACES-------------------------------------------------------- 00024 using namespace std; 00025 00026 namespace EECFI 00027 { 00028 //------------------------------------------------------ 00029 // CONSTANT DATA 00030 //------------------------------------------------------ 00032 #define XOCFI_NUM_CHECK_PARAMS 6 00033 00034 /* AN-353: Geostationary default values */ 00036 #define XOCFI_GEO_DEFAULT_LATITUDE 0. 00037 00039 #define XOCFI_GEO_DEFAULT_ALTITUDE 35786000. 00040 00041 //------------------------------------------------------ 00042 // DATA ENUMERATION 00043 // Enumeration values are defined in an equivalent way to the C library 00044 // except for the prefix that has been changed from XX_ to XXCFI_ 00045 //------------------------------------------------------ 00046 00048 typedef enum 00049 { 00050 XOCFI_ORBIT_EXTRA_DEP_NODAL_PERIOD = 0, 00051 XOCFI_ORBIT_EXTRA_DEP_UTC_CURRENT_ANX, 00052 XOCFI_ORBIT_EXTRA_DEP_ORBIT_NUMBER, 00053 XOCFI_ORBIT_EXTRA_DEP_SEC_SINCE_ANX, 00054 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_A, 00055 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_E, 00056 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_I, 00057 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_RA, 00058 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_W, 00059 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPL_M, 00060 XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS 00061 } OrbitExtraModelMKODependantEnum; 00062 00064 typedef enum 00065 { 00066 XOCFI_ORBIT_EXTRA_GEOC_LONG = 0, 00067 XOCFI_ORBIT_EXTRA_GEOD_LAT, 00068 XOCFI_ORBIT_EXTRA_GEOD_ALT, 00069 XOCFI_ORBIT_EXTRA_GEOC_LONG_D, 00070 XOCFI_ORBIT_EXTRA_GEOD_LAT_D, 00071 XOCFI_ORBIT_EXTRA_GEOD_ALT_D, 00072 XOCFI_ORBIT_EXTRA_GEOC_LONG_2D, 00073 XOCFI_ORBIT_EXTRA_GEOD_LAT_2D, 00074 XOCFI_ORBIT_EXTRA_GEOD_ALT_2D, 00075 XOCFI_ORBIT_EXTRA_RAD_CUR_PARALLEL_MERIDIAN, 00076 XOCFI_ORBIT_EXTRA_RAD_CUR_ORTHO_MERIDIAN, 00077 XOCFI_ORBIT_EXTRA_RAD_CUR_ALONG_GROUNDTRACK, 00078 XOCFI_ORBIT_EXTRA_NORTH_VEL, 00079 XOCFI_ORBIT_EXTRA_EAST_VEL, 00080 XOCFI_ORBIT_EXTRA_MAG_VEL, 00081 XOCFI_ORBIT_EXTRA_AZ_VEL, 00082 XOCFI_ORBIT_EXTRA_NORTH_ACC, 00083 XOCFI_ORBIT_EXTRA_EAST_ACC, 00084 XOCFI_ORBIT_EXTRA_GROUNDTRACK_ACC, 00085 XOCFI_ORBIT_EXTRA_AZ_ACC, 00086 XOCFI_ORBIT_EXTRA_SAT_ECLIPSE_FLAG, 00087 XOCFI_ORBIT_EXTRA_SZA, 00088 XOCFI_ORBIT_EXTRA_MLST, 00089 XOCFI_ORBIT_EXTRA_TLST, 00090 XOCFI_ORBIT_EXTRA_TRUE_SUN_RA, 00091 XOCFI_ORBIT_EXTRA_TRUE_SUN_DEC, 00092 XOCFI_ORBIT_EXTRA_TRUE_SUN_SEMIDIAM, 00093 XOCFI_ORBIT_EXTRA_MOON_RA, 00094 XOCFI_ORBIT_EXTRA_MOON_DEC, 00095 XOCFI_ORBIT_EXTRA_MOON_SEMI_DIAM, 00096 XOCFI_ORBIT_EXTRA_MOON_AREA_LIT, 00097 XOCFI_ORBIT_EXTRA_OSC_KEPL_A, 00098 XOCFI_ORBIT_EXTRA_OSC_KEPL_E, 00099 XOCFI_ORBIT_EXTRA_OSC_KEPL_I, 00100 XOCFI_ORBIT_EXTRA_OSC_KEPL_RA, 00101 XOCFI_ORBIT_EXTRA_OSC_KEPL_W, 00102 XOCFI_ORBIT_EXTRA_OSC_KEPL_M, 00103 XOCFI_ORBIT_EXTRA_ORBIT_RAD, 00104 XOCFI_ORBIT_EXTRA_RADIAL_ORB_VEL, 00105 XOCFI_ORBIT_EXTRA_TRANS_ORB_VEL, 00106 XOCFI_ORBIT_EXTRA_ORB_VEL_MAG, 00107 XOCFI_ORBIT_EXTRA_RA_SAT, 00108 XOCFI_ORBIT_EXTRA_DEC_SAT, 00109 XOCFI_ORBIT_EXTRA_EARTH_ROTATION_ANGLE, 00110 XOCFI_ORBIT_EXTRA_RA_SAT_D, 00111 XOCFI_ORBIT_EXTRA_RA_SAT_2D, 00112 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT, 00113 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_D, 00114 XOCFI_ORBIT_EXTRA_OSC_TRUE_LAT_2D, 00115 XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS 00116 00117 } OrbitExtraModelMKOIndependantEnum; 00118 00120 typedef enum 00121 { 00122 // model independant 00123 XOCFI_ORBIT_EXTRA_NO_RESULTS = 0, 00124 XOCFI_ORBIT_EXTRA_GEOLOCATION = 1, 00125 XOCFI_ORBIT_EXTRA_GEOLOCATION_D = 2, 00126 XOCFI_ORBIT_EXTRA_GEOLOCATION_2D = 4, 00127 XOCFI_ORBIT_EXTRA_GEOLOCATION_EXTRA = 8, 00128 XOCFI_ORBIT_EXTRA_EARTH_FIXED_D = 16, 00129 XOCFI_ORBIT_EXTRA_EARTH_FIXED_2D = 32, 00130 XOCFI_ORBIT_EXTRA_SUN = 64, 00131 XOCFI_ORBIT_EXTRA_MOON = 128, 00132 XOCFI_ORBIT_EXTRA_OSCULATING_KEPLER = 256, 00133 XOCFI_ORBIT_EXTRA_INERTIAL_AUX = 512, 00134 // model dependant 00135 XOCFI_ORBIT_EXTRA_DEP_ANX_TIMING = 1024, 00136 XOCFI_ORBIT_EXTRA_DEP_MEAN_KEPLER = 2048, 00137 XOCFI_ORBIT_EXTRA_ALL_RESULTS = 4095 00138 00139 }OrbitExtraChoiceEnum; 00140 00142 typedef enum 00143 { 00144 XOCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00145 XOCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00146 XOCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00147 XOCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00148 XOCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00149 XOCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00150 XOCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00151 XOCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00152 XOCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00153 XOCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00154 XOCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00155 XOCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00156 XOCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00157 XOCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00158 XOCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00159 XOCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00160 XOCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00161 XOCFI_SAT_ADM = XLCFI_SAT_ADM, 00162 XOCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00163 XOCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00164 XOCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00165 XOCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00166 XOCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00167 XOCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00168 XOCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00169 XOCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00170 XOCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00171 XOCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00172 XOCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00173 XOCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00174 XOCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00175 XOCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00176 XOCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00177 XOCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00178 XOCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00179 XOCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00180 XOCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00181 XOCFI_SAT_JASON_CSA = XLCFI_SAT_JASON_CSA, // AN-531 00182 XOCFI_SAT_JASON_CSB = XLCFI_SAT_JASON_CSB, // AN-531 00183 XOCFI_SAT_METOP_SG_A1 = XLCFI_SAT_METOP_SG_A1, // AN-530 00184 XOCFI_SAT_METOP_SG_A2 = XLCFI_SAT_METOP_SG_A2, // AN-530 00185 XOCFI_SAT_METOP_SG_A3 = XLCFI_SAT_METOP_SG_A3, // AN-530 00186 XOCFI_SAT_METOP_SG_B1 = XLCFI_SAT_METOP_SG_B1, // AN-530 00187 XOCFI_SAT_METOP_SG_B2 = XLCFI_SAT_METOP_SG_B2, // AN-530 00188 XOCFI_SAT_METOP_SG_B3 = XLCFI_SAT_METOP_SG_B3, // AN-530 00189 XOCFI_SAT_SENTINEL_5P = XLCFI_SAT_SENTINEL_5P, // AN-502 00190 XOCFI_SAT_BIOMASS = XLCFI_SAT_BIOMASS, // AN-601 00191 XOCFI_SAT_SENTINEL_5 = XLCFI_SAT_SENTINEL_5, // AN-639 00192 XOCFI_SAT_SAOCOM_CS = XLCFI_SAT_SAOCOM_CS, // AN-640 00193 XOCFI_SAT_FLEX = XLCFI_SAT_FLEX, /* AN-683 */ 00194 XOCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00195 // AN-353 00196 XOCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00197 XOCFI_SAT_MTG = XLCFI_SAT_MTG, 00198 // END AN-353 00199 XOCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00200 } SatIdOrbitEnum; 00201 00203 typedef enum 00204 { 00205 XOCFI_TIME_UNDEF = XLCFI_TIME_UNDEF, 00206 XOCFI_TIME_TAI = XLCFI_TIME_TAI, 00207 XOCFI_TIME_UTC = XLCFI_TIME_UTC, 00208 XOCFI_TIME_UT1 = XLCFI_TIME_UT1, 00209 XOCFI_TIME_GPS = XLCFI_TIME_GPS 00210 } TimeRefOrbitEnum; 00211 00213 typedef enum 00214 { 00215 XOCFI_TIME_REF_OF_TAI = XDCFI_TIME_REF_OF_TAI, 00216 XOCFI_TIME_REF_OF_UTC = XDCFI_TIME_REF_OF_UTC, 00217 XOCFI_TIME_REF_OF_UT1 = XDCFI_TIME_REF_OF_UT1, 00218 XOCFI_TIME_REF_OF_GPS = XDCFI_TIME_REF_OF_GPS 00219 } TimeRefOfOrbitEnum; 00220 00222 typedef enum 00223 { 00224 XOCFI_SEL_FILE = 0, 00225 XOCFI_SEL_TIME, 00226 XOCFI_SEL_ORBIT, 00227 XOCFI_SEL_DEFAULT 00228 } InitModeEnum; 00229 00231 typedef enum 00232 { 00233 XOCFI_ORBIT_INIT_UNKNOWN_MODE = -1, 00234 XOCFI_ORBIT_INIT_AUTO = XDCFI_AUTO, 00235 XOCFI_ORBIT_INIT_ORBIT_CHANGE_MODE = XDCFI_ORBIT_CHANGE, 00236 XOCFI_ORBIT_INIT_STATE_VECTOR_MODE = XDCFI_STATE_VECTOR, 00237 XOCFI_ORBIT_INIT_OSF_MODE = XDCFI_OSF_TYPE, 00238 XOCFI_ORBIT_INIT_POF_MODE = XDCFI_POF_TYPE, 00239 XOCFI_ORBIT_INIT_ROF_MODE = XDCFI_ROF_TYPE, 00240 XOCFI_ORBIT_INIT_DORIS_MODE = XDCFI_DORIS_TYPE, 00241 XOCFI_ORBIT_INIT_POF_N_DORIS_MODE = XDCFI_POF_N_DORIS_TYPE, 00242 XOCFI_ORBIT_INIT_OEF_OSF_MODE = XDCFI_OEF_OSF_TYPE, 00243 XOCFI_ORBIT_INIT_OEF_POF_MODE = XDCFI_OEF_POF_TYPE, 00244 XOCFI_ORBIT_INIT_TLE_MODE = XDCFI_TLE_TYPE, 00245 XOCFI_ORBIT_INIT_SP3_MODE = XDCFI_SP3_TYPE, // AN-550 00246 XOCFI_ORBIT_INIT_OEM_MODE = XDCFI_OEM_TYPE, // AN-578 00247 XOCFI_ORBIT_INIT_STATE_VECTOR_PRECISE_MODE, 00248 XOCFI_ORBIT_INIT_POF_PRECISE_MODE, 00249 XOCFI_ORBIT_INIT_ROF_PRECISE_MODE, 00250 XOCFI_ORBIT_INIT_DORIS_PRECISE_MODE, 00251 XOCFI_ORBIT_INIT_OEF_POF_PRECISE_MODE, 00252 XOCFI_ORBIT_INIT_POF_N_DORIS_PRECISE_MODE, 00253 XOCFI_ORBIT_INIT_GEO_LON_MODE, // AN-353 00254 XOCFI_ORBIT_INIT_TLE_SDP4_MODE, // AN-494 00255 XOCFI_ORBIT_INIT_TLE_SGP4_MODE, // AN-494 00256 XOCFI_ORBIT_INIT_USER_OSV_LIST_MODE, // AN-497 00257 XOCFI_ORBIT_INIT_POF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00258 XOCFI_ORBIT_INIT_ROF_ORBNUM_ADJ_MODE, /* ANR-527 */ 00259 XOCFI_ORBIT_INIT_DORIS_ORBNUM_ADJ_MODE, /* ANR-527 */ 00260 XOCFI_ORBIT_INIT_OEM_ORBNUM_ADJ_MODE, // AN-578 00261 XOCFI_ORBIT_INIT_MAX_VALUE 00262 00263 } OrbitInitModeEnum; 00264 00266 typedef enum 00267 { 00268 XOCFI_INTERPOL_MODEL_DEFAULT = 0 00269 } InterpolModelEnum; 00270 00272 typedef enum 00273 { 00274 // AN-497 00275 XOCFI_PROPAG_MODEL_NOT_INITIALIZED = -1, 00276 XOCFI_PROPAG_MODEL_MEAN_KEPL = 0, 00277 XOCFI_PROPAG_MODEL_SPOT = 1, 00278 XOCFI_PROPAG_MODEL_TLE = 2, 00279 XOCFI_PROPAG_MODEL_PRECISE = 3, 00280 XOCFI_PROPAG_MODEL_GEO = 4, 00281 XOCFI_PROPAG_MODEL_AUTO = 10, 00282 XOCFI_PROPAG_MODEL_DOUBLE = 100 00283 } PropagModelEnum; 00284 00286 typedef enum 00287 { 00288 XOCFI_NOSUNSYNC_DRIFT = 0, 00289 XOCFI_NOSUNSYNC_INCLINATION, 00290 XOCFI_NOSUNSYNC_DRIFT_NONLINEAR, 00291 XOCFI_NOSUNSYNC_USE_SIM_MODEL = 10 00292 } NoSunSychronousModeEnum; 00293 00295 typedef enum 00296 { 00297 XOCFI_OSV_PRECISE_NO = 1, 00298 XOCFI_OSV_PRECISE_MINUTE, 00299 XOCFI_OSV_PRECISE_TEN_SECONDS 00300 00301 } OsvPreciseEnum; 00302 00304 typedef enum 00305 { 00306 XOCFI_REF_FILETYPE_OSF = 1, 00307 XOCFI_REF_FILETYPE_OEF_OSF, 00308 XOCFI_REF_FILETYPE_POF, 00309 XOCFI_REF_FILETYPE_OEF_POF, 00310 XOCFI_REF_FILETYPE_DORIS_NAV, 00311 XOCFI_REF_FILETYPE_ROF, 00312 XOCFI_REF_FILETYPE_TLE, 00313 XOCFI_REF_FILETYPE_DORIS_PREM, 00314 XOCFI_REF_FILETYPE_DORIS_PREC 00315 00316 } RefFiletypeEnum; 00317 00319 typedef enum 00320 { 00321 XOCFI_NO_PHASE_INCREMENT = 0, 00322 XOCFI_PHASE_INCREMENT = 1 00323 } GenOsfPhaseIncrementEnum; 00324 00326 typedef enum 00327 { 00328 XOCFI_FIT_TLE = XDCFI_FIT_TLE, 00329 XOCFI_FIT_TLE_LIST = XDCFI_FIT_TLE_LIST, 00330 XOCFI_ONE_TLE_PER_OSV = XDCFI_ONE_TLE_PER_OSV 00331 } TLEFitModeEnum; 00332 00334 typedef enum 00335 { 00336 XOCFI_SEARCH_FORWARD = 1, 00337 XOCFI_SEARCH_BACKWARD = -1 00338 } GenOsfSearchDirectionEnum; 00339 00341 typedef enum 00342 { 00343 XOCFI_DEFAULT_VALUES = XDCFI_DEFAULT_VALUES, 00344 XOCFI_USER_VALUES = XDCFI_USER_VALUES 00345 } OrbitPrecisePropagUserFlagEnum; 00346 00348 typedef enum 00349 { 00350 XOCFI_NOT_SELECT = XDCFI_NOT_SELECT, 00351 XOCFI_SELECT = XDCFI_SELECT 00352 } OrbitPrecisePropagSelectionFlagEnum; 00353 00355 typedef enum 00356 { 00357 XOCFI_SGA_USE_PARAMETERS = XDCFI_SGA_USE_PARAMETERS, 00358 XOCFI_SGA_READ_VALUES_FROM_FILE = XDCFI_SGA_READ_VALUES_FROM_FILE 00359 } OrbitPrecisePropagSgaFlagEnum; 00360 00362 typedef enum 00363 { 00364 XOCFI_GC_LONGITUDE_ONLY 00365 } GeoCoordEnum; // Created for AN-353 00366 00367 00369 typedef enum 00370 { 00371 XOCFI_FILTER_OUTLIERS 00372 } OrbitDataFilterEnum; // Created for ANR-382/455 00373 00375 typedef enum 00376 { 00377 XOCFI_REMOVE = 0, 00378 XOCFI_SMOOTH 00379 } OrbitDataFilterActionEnum; // Created for ANR-382/455 00380 00382 typedef enum 00383 { 00384 XOCFI_ORBIT_ID_CHANGE_OSF = 0, 00385 XOCFI_ORBIT_ID_CHANGE_TIME_ORBIT 00386 } OrbitIdChangeEnum; // ANR-527 00387 00389 typedef enum 00390 { 00391 XOCFI_ORBIT_INFO_ITEM_SMX 00392 } OrbitInfoItemsEnum; // AN-523 00393 00395 typedef enum 00396 { 00397 XOCFI_DEACTIVATE_ITEM, 00398 XOCFI_ACTIVATE_ITEM 00399 } OrbitInfoFlagEnum; // AN-523 00400 00402 typedef enum 00403 { 00404 XOCFI_ORBIT_ABS = 0, 00405 XOCFI_ORBIT_REL = 1 00406 } XOOrbitTypeEnum; //AN-596 00407 00409 typedef enum 00410 { 00411 XOCFI_TIME_TYPE, 00412 XOCFI_ORBIT_TYPE, 00413 XOCFI_BOTH_TYPE 00414 } XOTimeTypeEnum; 00415 // END AN-596 00416 00417 //------------------------------------------------------ 00418 // DATA STRUCTURES 00419 //------------------------------------------------------ 00420 00422 class XO_DECL ANXExtra 00423 { 00424 public: 00425 long absOrbit; 00426 double tAnx; 00427 double tNod; 00428 00430 ANXExtra() 00431 { 00432 absOrbit = -1; 00433 tAnx = -1; 00434 tNod = -1; 00435 }; 00436 00438 ANXExtra( long absOrb, double timeAnx, double timeNod ) 00439 { 00440 absOrbit = absOrb; 00441 tAnx = timeAnx; 00442 tNod = timeNod; 00443 } 00444 00445 }; 00446 00448 class XO_DECL ValidityTime 00449 { 00450 public: 00451 long timeRef; 00452 double start; 00453 double stop; 00454 00456 ValidityTime() 00457 { 00458 timeRef = -1; 00459 start = -1; 00460 stop = -1; 00461 } 00462 00464 ValidityTime( long timeReference, double startVal, double stopVal ) 00465 { 00466 timeRef = timeReference; 00467 start = startVal; 00468 stop = stopVal; 00469 } 00470 }; 00471 00473 class XO_DECL OrbitInfo 00474 { 00475 public: 00476 long absOrbit; 00477 long relOrbit; 00478 long cycle; 00479 long phase; 00480 00482 OrbitInfo() 00483 { 00484 absOrbit = -1; 00485 relOrbit = -1; 00486 cycle = -1; 00487 phase = -1; 00488 } 00489 00491 OrbitInfo( long absoluteOrbit, long relativeOrbit, long cycleOrbit, 00492 long phaseOrbit) 00493 { 00494 absOrbit = absoluteOrbit; 00495 relOrbit = relativeOrbit; 00496 cycle = cycleOrbit; 00497 phase = phaseOrbit; 00498 } 00499 00500 }; 00501 00503 class XO_DECL StateVectorInfo 00504 { 00505 public: 00506 double pos[3]; 00507 double vel[3]; 00508 double acc[3]; 00509 00511 StateVectorInfo() 00512 { 00513 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00514 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00515 pos[0] = 0.; vel[1] = 0.; acc[2] = 0.; 00516 } 00517 00519 StateVectorInfo( double *posIn, double *velIn, double *accIn ) 00520 { 00521 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00522 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00523 pos[0] = posIn[0]; vel[1] = velIn[1]; acc[2] = accIn[2]; 00524 } 00525 }; 00526 00528 class XO_DECL StateVectorExtraInfo 00529 { 00530 public: 00531 double modelDep[XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS]; 00532 double modelIndep[XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS]; 00533 00535 StateVectorExtraInfo() 00536 { 00537 int i; 00538 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS ; i++ ) 00539 modelDep[i] = 0.; 00540 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS ; i++ ) 00541 modelIndep[i] = 0.; 00542 } 00543 00545 StateVectorExtraInfo( double *model, double *extra ) 00546 { 00547 int i; 00548 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_DEP_ELEMENTS ; i++ ) 00549 modelDep[i] = model[i]; 00550 for ( i = 0 ; i < XOCFI_ORBIT_EXTRA_NUM_INDEP_ELEMENTS ; i++ ) 00551 modelIndep[i] = extra[i]; 00552 } 00553 }; 00554 00556 class XO_DECL AnxInfo 00557 { 00558 public: 00559 double anxTai; 00560 double anxUtc; 00561 double anxUt1; 00562 double anxPos[3]; 00563 double anxVel[3]; 00564 double kepl[6]; 00565 double tNod; 00566 }; 00567 00569 class XO_DECL RefOrbitInfo 00570 { 00571 public: 00572 long driftMode; 00573 double inclination; 00574 long repCycle; 00575 long cycleLength; 00576 double AnxLong; 00577 double mlst; 00578 double mlstDrift; 00579 MlstNonlinearDrift mlstNonlinearDrift; 00580 }; 00581 00583 class XO_DECL OsfRecords 00584 { 00585 public: 00586 OrbitInfo missionInfo; 00587 RefOrbitInfo refOrbitinfo; 00588 AnxInfo anxInfo; 00589 }; 00590 00592 class XO_DECL OrbitalInfo 00593 { 00594 public: 00595 long absOrbit; 00596 long repCycle; 00597 long cycLength; 00598 double mlstDrift; 00599 double mlst; 00600 double phasing; 00601 double utcAnx; 00602 double posAnx[3]; 00603 double velAnx[3]; 00604 double meanKep[6]; 00605 double oscKep[6]; 00606 double nodalPeriod; 00607 // AN-523 00608 double utcSmx; 00609 }; 00610 00611 // AN-353 00613 class XO_DECL GeoGeodCoord 00614 { 00615 public: 00616 double gcLongitude; 00617 double gdLatitude; 00618 double gdAltitude; 00619 }; 00620 00622 class XO_DECL GeoOrbitInfo 00623 { 00624 public: 00625 GeoGeodCoord geodCoord; 00626 }; 00627 00629 class XO_DECL GeoOrbitInitData 00630 { 00631 public: 00632 long type; 00633 GeoOrbitInfo geoOrbitInfo; 00634 }; 00635 // END AN-353 00636 00637 00638 00639 // ANR-382 00641 class XO_DECL OrbitDataFilterOutliersConfiguration 00642 { 00643 public: 00644 OrbitDataFilterOutliersConfiguration() 00645 { 00646 action = XOCFI_REMOVE; 00647 thresholdPos = 0; 00648 thresholdVel = 0; 00649 } 00650 OrbitDataFilterOutliersConfiguration(long a, double p, double v) 00651 { 00652 action = a; 00653 thresholdPos = p; 00654 thresholdVel = v; 00655 } 00656 00657 long action; 00658 double thresholdPos; 00659 double thresholdVel; 00660 }; 00661 00663 class XO_DECL OrbitDataFilterConfiguration 00664 { 00665 public: 00666 OrbitDataFilterConfiguration(){} 00667 00671 OrbitDataFilterConfiguration(long t) 00672 { 00673 type = t; 00674 switch (type) 00675 { 00676 case XOCFI_FILTER_OUTLIERS: outliersConfiguration = OrbitDataFilterOutliersConfiguration(XOCFI_REMOVE, 0, 0); 00677 break; 00678 } 00679 } 00680 00687 OrbitDataFilterConfiguration(long t, long a, double p, double v) 00688 { 00689 type = t; 00690 switch (type) 00691 { 00692 case XOCFI_FILTER_OUTLIERS: outliersConfiguration = OrbitDataFilterOutliersConfiguration(a, p, v); 00693 break; 00694 } 00695 } 00696 long type; 00697 OrbitDataFilterOutliersConfiguration outliersConfiguration; 00698 }; 00699 00701 class XO_DECL OrbitDataFilterOutliersReport 00702 { 00703 public: 00704 OrbitDataFilterOutliersReport() 00705 { 00706 nofOSVin = 0; 00707 nofOSVfiltered = 0; 00708 minTimeGap = 0; 00709 maxTimeGap = 0; 00710 minRMSPos = 0; 00711 maxRMSPos = 0; 00712 minRMSVel = 0; 00713 maxRMSVel = 0; 00714 } 00715 OrbitDataFilterOutliersReport(long in, long fi, double ming, double MaxG, double minp, double MaxP, double minv, double MaxV) 00716 { 00717 nofOSVin = in; 00718 nofOSVfiltered = fi; 00719 minTimeGap = ming; 00720 maxTimeGap = MaxG; 00721 minRMSPos = minp; 00722 maxRMSPos = MaxP; 00723 minRMSVel = minv; 00724 maxRMSVel = MaxV; 00725 } 00726 00727 long nofOSVin; 00728 long nofOSVfiltered; 00729 double minTimeGap; 00730 double maxTimeGap; 00731 double minRMSPos; 00732 double maxRMSPos; 00733 double minRMSVel; 00734 double maxRMSVel; 00735 }; 00736 00738 class XO_DECL OrbitDataFilterReport 00739 { 00740 public: 00741 OrbitDataFilterReport(){} 00742 OrbitDataFilterReport(long t) 00743 { 00744 type = t; 00745 } 00746 00747 long type; 00748 OrbitDataFilterOutliersReport outliersReport; 00749 }; 00750 // END ANR-382 00751 00753 class XO_DECL OrbitChangeFile 00754 { 00755 public: 00756 long fileType; 00757 OsfFile osfData; 00758 00759 OrbitChangeFile() 00760 { 00761 fileType = -1; 00762 } 00763 }; // AN-527 00764 00766 class XO_DECL OrbitChangeData 00767 { 00768 public: 00769 long changeMode; 00770 OrbitChangeFile changeFile; 00771 double changeTimeRef; 00772 double changeTime; 00773 long changeOrbit; 00774 00775 OrbitChangeData() 00776 { 00777 changeMode = -1; 00778 } 00779 00780 }; // AN-527 00781 00783 class XO_DECL OrbTime 00784 { 00785 public: 00786 long type; 00787 long timeRef; 00788 double time; 00789 long orbitNum; 00790 long sec; 00791 long msec; 00792 00793 OrbTime() 00794 { 00795 type = 0; 00796 timeRef = XOCFI_TIME_UTC; 00797 time = 0.; 00798 orbitNum = 0; 00799 sec = 0; 00800 msec = 0; 00801 } 00802 OrbTime(long typeIn, long timeR, double timeIn, long orbitNumIn, 00803 long secIn, long msecIn) 00804 { 00805 type = typeIn; 00806 timeRef = timeR; 00807 time = timeIn; 00808 orbitNum = orbitNumIn; 00809 sec = secIn; 00810 msec = msecIn; 00811 } 00812 };// AN-596 00813 00815 class XO_DECL OrbTimeInterval 00816 { 00817 public: 00818 OrbTime tstart; 00819 OrbTime tstop; 00820 00821 OrbTimeInterval() 00822 { 00823 } 00824 00825 OrbTimeInterval(OrbTime t0, OrbTime t1) 00826 { 00827 tstart = t0; 00828 tstop = t1; 00829 } 00830 }; // AN-596 00831 00832 } // closing namespace 00833 00834 #endif