![]() |
Earth Observation Mission CFI Software Lib Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.11 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: LibData.h,v 1.30 2014-02-26 13:00:48 paat Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef __EECFI_LIBDATA__ 00015 #define __EECFI_LIBDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <vector> 00019 #include "DataHandlingData.h" 00020 #include "LibDllExport.h" 00021 00022 //--NAMESPACES-------------------------------------------------------- 00023 using namespace std; 00024 00025 namespace EECFI 00026 { 00027 00028 //------------------------------------------------------ 00029 // CONSTANTS 00030 //------------------------------------------------------ 00032 #define MCFI_PI 3.14159265358979323846 00033 00034 //------------------------------------------------------ 00035 // DATA ENUMERATION 00036 // Enumeration values are defined in an equivalent way to the C library 00037 // except for the prefix that has been changed from XX_ to XXCFI_ 00038 //------------------------------------------------------ 00039 00041 typedef enum 00042 { 00043 XLCFI_SAT_DEFAULT = 0, 00044 XLCFI_SAT_DEFAULT1 = 1, 00045 XLCFI_SAT_DEFAULT2 = 2, 00046 XLCFI_SAT_DEFAULT3 = 3, 00047 XLCFI_SAT_DEFAULT4 = 4, 00048 XLCFI_SAT_DEFAULT5 = 5, 00049 XLCFI_SAT_DEFAULT6 = 6, 00050 XLCFI_SAT_DEFAULT7 = 7, 00051 XLCFI_SAT_DEFAULT8 = 8, 00052 XLCFI_SAT_DEFAULT9 = 9, 00053 XLCFI_SAT_ERS1 = 11, 00054 XLCFI_SAT_ERS2 = 12, 00055 XLCFI_SAT_ENVISAT = 21, 00056 XLCFI_SAT_METOP1 = 31, 00057 XLCFI_SAT_METOP2 = 32, 00058 XLCFI_SAT_METOP3 = 33, 00059 XLCFI_SAT_CRYOSAT = 41, 00060 XLCFI_SAT_ADM = 51, 00061 XLCFI_SAT_GOCE = 61, 00062 XLCFI_SAT_SMOS = 71, 00063 XLCFI_SAT_TERRASAR = 81, 00064 XLCFI_SAT_EARTHCARE = 91, 00065 XLCFI_SAT_SWARM_A = 101, 00066 XLCFI_SAT_SWARM_B = 102, 00067 XLCFI_SAT_SWARM_C = 103, 00068 XLCFI_SAT_SENTINEL_1A = 110, 00069 XLCFI_SAT_SENTINEL_1B = 111, 00070 XLCFI_SAT_SENTINEL_2 = 112, 00071 XLCFI_SAT_SENTINEL_3 = 113, 00072 XLCFI_SAT_SEOSAT = 120, 00073 XLCFI_SAT_SENTINEL_1C = 125, 00074 XLCFI_SAT_SENTINEL_2A = 126, 00075 XLCFI_SAT_SENTINEL_2B = 127, 00076 XLCFI_SAT_SENTINEL_2C = 128, 00077 XLCFI_SAT_SENTINEL_3A = 129, 00078 XLCFI_SAT_SENTINEL_3B = 130, 00079 XLCFI_SAT_SENTINEL_3C = 131, 00080 XLCFI_SAT_JASON_CSA = 132, // AN-531 00081 XLCFI_SAT_JASON_CSB = 133, // AN-531 00082 XLCFI_SAT_METOP_SG_A1 = 134, // AN-530 00083 XLCFI_SAT_METOP_SG_A2 = 135, // AN-530 00084 XLCFI_SAT_METOP_SG_A3 = 136, // AN-530 00085 XLCFI_SAT_METOP_SG_B1 = 137, // AN-530 00086 XLCFI_SAT_METOP_SG_B2 = 138, // AN-530 00087 XLCFI_SAT_METOP_SG_B3 = 139, // AN-530 00088 XLCFI_SAT_SENTINEL_5P = 140, // AN-502 00089 XLCFI_SAT_BIOMASS = 141, // AN-601 00090 XLCFI_SAT_SENTINEL_5 = 142, // AN-639 00091 XLCFI_SAT_SAOCOM_CS = 143, // AN-640 00092 XLCFI_SAT_GENERIC = 200, 00093 // AN-353 00094 XLCFI_SAT_GENERIC_GEO = 300, 00095 XLCFI_SAT_MTG = 301, 00096 // END AN-353 00097 XLCFI_SAT_GENERIC_MEO = 400 // AN-550 00098 } SatIdEnum; 00099 00100 00102 typedef enum 00103 { 00104 XLCFI_TIMEMOD_AUTO = -2, 00105 XLCFI_TIMEMOD_USER = -1, 00106 XLCFI_TIMEMOD_NONE = 0, 00107 XLCFI_TIMEMOD_IERS_B_PREDICTED = 1, 00108 XLCFI_TIMEMOD_IERS_B_RESTITUTED, 00109 XLCFI_TIMEMOD_FOS_PREDICTED, 00110 XLCFI_TIMEMOD_FOS_RESTITUTED, 00111 XLCFI_TIMEMOD_DORIS_PRELIMINARY, 00112 XLCFI_TIMEMOD_DORIS_PRECISE, 00113 XLCFI_TIMEMOD_DORIS_NAVIGATOR, 00114 XLCFI_TIMEMOD_OSF, 00115 XLCFI_TIMEMOD_IERS_A_ONLY_PREDICTION, 00116 XLCFI_TIMEMOD_IERS_A_PREDICTION_AND_FORMULA, 00117 XLCFI_TIMEMOD_IERS_B_AND_A_ONLY_PREDICTION 00118 } TimeModelEnum; 00119 00120 00122 typedef enum 00123 { 00124 XLCFI_TIME_UNDEF = -1, 00125 XLCFI_TIME_TAI, 00126 XLCFI_TIME_UTC, 00127 XLCFI_TIME_UT1, 00128 XLCFI_TIME_GPS 00129 } XLTimeRefEnum; 00130 00131 00133 typedef enum 00134 { 00135 XLCFI_PROC = 0 00136 } TimeProcEnum; 00137 00139 typedef enum 00140 { 00141 XLCFI_TRANS_STD = 0, 00142 XLCFI_TRANS_ENVI_GS = 11, 00143 XLCFI_TRANS_CRYO_GS = 21, 00144 XLCFI_TRANS_CRYO_TM = 22, 00145 XLCFI_TRANS_CRYO_TM_SIRAL = 23, 00146 XLCFI_TRANS_SMOS_TM = 31, 00147 XLCFI_TRANS_GENERIC_GPS_SEC = 41, 00148 XLCFI_TRANS_GENERIC_GPS_WEEK = 42 00149 } TimeTransEnum; 00150 00151 00170 typedef enum 00171 { 00172 XLCFI_ASCII_UNDEF = -1, 00173 XLCFI_ASCII_STD = 11, 00174 XLCFI_ASCII_STD_REF = 12, 00175 XLCFI_ASCII_STD_MICROSEC = 13, 00176 XLCFI_ASCII_STD_REF_MICROSEC = 14, 00177 XLCFI_ASCII_COMPACT = 21, 00178 XLCFI_ASCII_COMPACT_REF = 22, 00179 XLCFI_ASCII_COMPACT_MICROSEC = 23, 00180 XLCFI_ASCII_COMPACT_REF_MICROSEC = 24, 00181 XLCFI_ASCII_ENVI = 31, 00182 XLCFI_ASCII_ENVI_REF = 32, 00183 XLCFI_ASCII_ENVI_MICROSEC = 33, 00184 XLCFI_ASCII_ENVI_REF_MICROSEC = 34, 00185 XLCFI_ASCII_CCSDSA = 41, 00186 XLCFI_ASCII_CCSDSA_REF = 42, 00187 XLCFI_ASCII_CCSDSA_MICROSEC = 43, 00188 XLCFI_ASCII_CCSDSA_REF_MICROSEC = 44, 00189 XLCFI_ASCII_CCSDSA_COMPACT = 51, 00190 XLCFI_ASCII_CCSDSA_COMPACT_REF = 52, 00191 XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC = 53, 00192 XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54 00193 } TimeAsciiEnum; 00194 00195 00197 typedef enum // Flag to indicate the grade of a derivative 00198 { 00199 XLCFI_NO_DER = 0, 00200 XLCFI_DER_1ST, 00201 XLCFI_DER_2ND, 00202 XLCFI_ITER_NO_DER, 00203 XLCFI_ITER_DER_1ST, 00204 XLCFI_NO_ITER_NO_DER, 00205 XLCFI_NO_ITER_DER_1ST 00206 } DerivEnum; 00207 00208 00210 typedef enum // It defines a coordinate system 00211 { 00212 XLCFI_CS_UNDEF = 0, 00213 XLCFI_CS_BM2000 = 1, 00214 XLCFI_CS_HM2000, 00215 XLCFI_CS_GM2000, 00216 XLCFI_CS_MOD, 00217 XLCFI_CS_TOD, 00218 XLCFI_CS_PEF, 00219 XLCFI_CS_EF, 00220 XLCFI_CS_LIF, 00221 XLCFI_CS_BM1950, 00222 XLCFI_CS_GALACTIC, 00223 XLCFI_CS_SAT_ACT_REF, 00224 XLCFI_CS_QUASI_MEAN_DATE, 00225 XLCFI_CS_PSE_TRUE_DATE, 00226 XLCFI_CS_TOPOCENTRIC, 00227 XLCFI_CS_SAT_REF, 00228 XLCFI_CS_SAT_REL_REF 00229 } CoordinateSystemEnum; // Updated for AN-509 00230 00232 typedef enum 00233 { 00234 XLCFI_CS_SAT_ORBITAL_REF = 0, 00235 XLCFI_CS_SAT_NOMINAL_ATT, 00236 XLCFI_CS_SAT_ATT, 00237 XLCFI_CS_INSTR_ATT 00238 } XLAttitudeFrameEnum; // AN-509 00239 00241 typedef enum 00242 { 00243 XLCFI_KEPLER_MEAN = 1, 00244 XLCFI_KEPLER_OSC 00245 } KeplerModeEnum; 00246 00248 typedef enum 00249 { 00250 XLCFI_MODE_FLAG_LOCATION = 0, 00251 XLCFI_MODE_FLAG_DIRECTION 00252 } ModeFlagEnum; 00253 00255 typedef enum 00256 { 00257 XLCFI_MERCURY = 1, 00258 XLCFI_VENUS, 00259 XLCFI_EM_BAR, 00260 XLCFI_MARS, 00261 XLCFI_JUPITER, 00262 XLCFI_SATURN, 00263 XLCFI_URANUS, 00264 XLCFI_NEPTUNE 00265 } PlanetEnum; 00266 00268 typedef enum 00269 { 00270 XLCFI_FK4 = 0, 00271 XLCFI_FK5 00272 } StarCatalogEnum; 00273 00274 00276 typedef enum 00277 { 00278 XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1, 00279 XLCFI_ANGLE_TYPE_MEAN_LAT_TOD, 00280 XLCFI_ANGLE_TYPE_TRUE_LAT_GM2000, 00281 XLCFI_ANGLE_TYPE_TRUE_LAT_EF 00282 } AngleTypeEnum; 00283 00285 typedef enum 00286 { 00287 XLCFI_MODEL_DEFAULT, 00288 XLCFI_MODEL_CONFIG 00289 } ModelSetsEnum; 00290 00292 typedef enum 00293 { 00294 XLCFI_MODEL_TYPE_EARTH, 00295 XLCFI_MODEL_TYPE_SUN, 00296 XLCFI_MODEL_TYPE_MOON, 00297 XLCFI_MODEL_TYPE_PLANET, 00298 XLCFI_MODEL_TYPE_STAR, 00299 XLCFI_MODEL_TYPE_NUTATION, 00300 XLCFI_MODEL_TYPE_PRECESSION, 00301 XLCFI_MODEL_TYPE_CONSTANTS, 00302 XLCFI_MODEL_TYPE_LIGHT_PROPAGATION, //AN-553 00303 XLCFI_NUM_MODEL_TYPES_ENUM 00304 } ModelTypesEnum; 00305 00307 typedef enum 00308 { 00309 XLCFI_MODEL_EARTH_DEFAULT 00310 } ModelEarthEnum; 00311 00312 00314 typedef enum 00315 { 00316 XLCFI_MODEL_SUN_DEFAULT, 00317 XLCFI_MODEL_SUN_TRAVEL_TIME /* AN-517 */ 00318 } ModelSunEnum; 00319 00320 00322 typedef enum 00323 { 00324 XLCFI_MODEL_MOON_DEFAULT 00325 } ModelMoonEnum; 00326 00327 00329 typedef enum 00330 { 00331 XLCFI_MODEL_PLANETS_DEFAULT 00332 } ModelPlanetsEnum; 00333 00334 00336 typedef enum 00337 { 00338 XLCFI_MODEL_STAR_DEFAULT 00339 } ModelStarEnum; 00340 00341 00343 typedef enum 00344 { 00345 XLCFI_MODEL_NUTATION_DEFAULT 00346 } ModelNutationEnum; 00347 00348 00350 typedef enum 00351 { 00352 XLCFI_MODEL_PRECESSION_DEFAULT 00353 } ModelPrecessionEnum; 00354 00356 typedef enum 00357 { 00358 XLCFI_MODEL_CONSTANTS_DEFAULT 00359 } ModelConstantsEnum; 00360 00362 typedef enum 00363 { 00364 XLCFI_MODEL_LIGHT_PROPAGATION_DISABLED, 00365 XLCFI_MODEL_LIGHT_PROPAGATION_RECEIVER, 00366 XLCFI_MODEL_LIGHT_PROPAGATION_TRANSMITTER 00367 } ModelLightPropagationEnum; //AN-553 00368 00370 typedef enum 00371 { 00372 XLCFI_NO_BULLETIN = -1, 00373 XLCFI_BULLETIN_B, 00374 XLCFI_BULLETIN_A, 00375 XLCFI_BULLETIN_B_AND_A 00376 } XLBulletinTypeEnum; 00377 00379 typedef enum 00380 { 00381 XLCFI_FORMULA_ENABLED, 00382 XLCFI_FORMULA_DISABLED 00383 } IersFormulaFlagEnum; 00384 00385 /* AN-518 */ 00387 typedef enum 00388 { 00389 XLCFI_INTERPOL_SLERP 00390 } QuaternionsInterpolationAlgoEnum; 00391 00392 //------------------------------------------------------ 00393 // DATA STRUCTURES 00394 //------------------------------------------------------ 00395 00397 class XL_DECL TimeInterval 00398 { 00399 public: 00400 long timeRef; 00401 double startTime; 00402 double stopTime; 00403 00405 TimeInterval() 00406 {timeRef = -1, startTime = 0, stopTime = 0;}; 00407 00409 TimeInterval(long ref, double start, double stop) 00410 {timeRef = ref, startTime = start, stopTime = stop;}; 00411 }; 00412 00414 class XL_DECL OrbitInterval 00415 { 00416 public: 00417 long startOrbit; 00418 long stopOrbit; 00419 00421 OrbitInterval() {startOrbit = 0, stopOrbit = 0;}; 00422 00424 OrbitInterval(long start, long stop) 00425 {startOrbit = start, stopOrbit = stop;}; 00426 }; 00427 00429 class XL_DECL TimeData 00430 { 00431 public: 00432 double taiTime; 00433 double ut1Time; 00434 double tai_utc; 00435 double tai_ut1; 00436 double tai_gps; 00437 }; 00438 00440 class XL_DECL LeapSecondInfo 00441 { 00442 public: 00443 long flag; 00444 double utcTime; 00445 }; 00446 00448 class XL_DECL LaunchInertialFrameConfig 00449 { 00450 public: 00451 long enabledFlag; 00452 double longitude; 00453 double utcTime; 00454 00455 LaunchInertialFrameConfig() 00456 { 00457 utcTime = 0; /* AN-341 */ 00458 enabledFlag = 0L; /* AN-341 */ 00459 longitude = 0; /* AN-341 */ 00460 } 00461 }; 00462 00464 class XL_DECL TimeCorrelationData 00465 { 00466 public: 00467 long iersBulletinType; 00468 long iersFormulaFlag; 00469 long predictionFirstRecord; 00470 PolarMotionFormula polarMotionFormula; 00471 TimeCorrelationFormula timeCorrelationFormula; 00472 vector<TimeData> timeCorrVector; 00473 vector<PolarMotionParams> polarMotionParams; 00474 LeapSecondInfo leapSecond; 00475 LaunchInertialFrameConfig launchInertialFrameConfig; 00476 00478 TimeCorrelationData() 00479 { 00480 iersBulletinType = XLCFI_NO_BULLETIN; 00481 iersFormulaFlag = XLCFI_FORMULA_DISABLED; 00482 predictionFirstRecord = 0L; 00483 } 00484 00486 TimeCorrelationData(long bulType, long iersFormula, long predFirst, 00487 PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm, 00488 vector<TimeData> &timData, vector<PolarMotionParams> &polarData, 00489 LeapSecondInfo &leapInfo ) 00490 { 00491 iersBulletinType = bulType; 00492 iersFormulaFlag = iersFormula; 00493 predictionFirstRecord = predFirst; 00494 polarMotionFormula = polarForm; 00495 timeCorrelationFormula = timeForm; 00496 timeCorrVector = timData; 00497 polarMotionParams = polarData; 00498 leapSecond = leapInfo; 00499 } 00500 00502 TimeCorrelationData(long bulType, long iersFormula, long predFirst, 00503 PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm, 00504 vector<TimeData> &timData, vector<PolarMotionParams> &polarData, 00505 LeapSecondInfo &leapInfo, LaunchInertialFrameConfig &launchInertialFrameCfg ) 00506 { 00507 iersBulletinType = bulType; 00508 iersFormulaFlag = iersFormula; 00509 predictionFirstRecord = predFirst; 00510 polarMotionFormula = polarForm; 00511 timeCorrelationFormula = timeForm; 00512 timeCorrVector = timData; 00513 polarMotionParams = polarData; 00514 leapSecond = leapInfo; 00515 launchInertialFrameConfig = launchInertialFrameCfg; /* AN-341 */ 00516 } 00517 }; 00518 00520 class XL_DECL Kepler 00521 { 00522 public: 00523 long mode; 00524 long cs; 00525 double a; 00526 double e; 00527 double i; 00528 double ra; 00529 double w; 00530 double m; 00531 }; 00532 00534 class XL_DECL Topocentric 00535 { 00536 public: 00537 double azim; 00538 double elev; 00539 double range; 00540 double azimDer; 00541 double elevDer; 00542 double rangeDer; 00543 }; 00544 00546 class XL_DECL ModelData 00547 { 00548 public: 00549 long earthModel; 00550 long sunModel; 00551 long moonModel; 00552 long planetModel; 00553 long starModel; 00554 long nutationModel; 00555 long precessionModel; 00556 long constantsModel; 00557 long lightPropagationModel; 00558 00559 /* Earth shape and gravity */ 00560 double re; 00561 double mu; 00562 double j2; 00563 double j3; 00564 double j4; 00565 00566 double majorAxis; 00567 double minorAxis; 00568 double ecc; 00569 double flat; 00570 00571 /* Earth rotation */ 00572 double gcoef0; 00573 double gcoef1; 00574 double gcoef2; 00575 00576 double gcoefSim0; 00577 double gcoefSim1; 00578 double gcoefSim2; 00579 00580 /* constants */ 00581 double au; 00582 }; 00583 00585 class XL_DECL GeoidCalcOutputs 00586 { 00587 public: 00588 double undulation; 00589 }; // AN-425 00590 00592 class XL_DECL QuaternionsInterpolationCfg 00593 { 00594 public: 00595 QuaternionsInterpolationAlgoEnum algo; 00596 }; // AN-518 00597 00598 00599 00600 } // closing namespace 00601 00602 #endif