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