![]() |
Earth Observation Mission CFI Software Lib Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.4 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: LibData.h,v 1.22 2012/07/09 10:06:24 expcfi Exp $ 00007 //-------------------------------------------------------------------- 00008 00013 00014 #ifndef __EECFI_LIBDATA__ 00015 #define __EECFI_LIBDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <vector> 00019 #include "DataHandlingData.h" 00020 00021 //--NAMESPACES-------------------------------------------------------- 00022 using namespace std; 00023 00024 namespace EECFI 00025 { 00026 00027 //------------------------------------------------------ 00028 // CONSTANTS 00029 //------------------------------------------------------ 00031 #define MCFI_PI 3.14159265358979323846 00032 00033 //------------------------------------------------------ 00034 // DATA ENUMERATION 00035 // Enumeration values are defined in an equivalent way to the C library 00036 // except for the prefix that has been changed from XX_ to XXCFI_ 00037 //------------------------------------------------------ 00038 00040 typedef enum 00041 { 00042 XLCFI_SAT_DEFAULT = 0, 00043 XLCFI_SAT_DEFAULT1 = 1, 00044 XLCFI_SAT_DEFAULT2 = 2, 00045 XLCFI_SAT_DEFAULT3 = 3, 00046 XLCFI_SAT_DEFAULT4 = 4, 00047 XLCFI_SAT_DEFAULT5 = 5, 00048 XLCFI_SAT_DEFAULT6 = 6, 00049 XLCFI_SAT_DEFAULT7 = 7, 00050 XLCFI_SAT_DEFAULT8 = 8, 00051 XLCFI_SAT_DEFAULT9 = 9, 00052 XLCFI_SAT_ERS1 = 11, 00053 XLCFI_SAT_ERS2 = 12, 00054 XLCFI_SAT_ENVISAT = 21, 00055 XLCFI_SAT_METOP1 = 31, 00056 XLCFI_SAT_METOP2 = 32, 00057 XLCFI_SAT_METOP3 = 33, 00058 XLCFI_SAT_CRYOSAT = 41, 00059 XLCFI_SAT_ADM = 51, 00060 XLCFI_SAT_GOCE = 61, 00061 XLCFI_SAT_SMOS = 71, 00062 XLCFI_SAT_TERRASAR = 81, 00063 XLCFI_SAT_EARTHCARE = 91, 00064 XLCFI_SAT_SWARM_A = 101, 00065 XLCFI_SAT_SWARM_B = 102, 00066 XLCFI_SAT_SWARM_C = 103, 00067 XLCFI_SAT_SENTINEL_1A = 110, 00068 XLCFI_SAT_SENTINEL_1B = 111, 00069 XLCFI_SAT_SENTINEL_2 = 112, 00070 XLCFI_SAT_SENTINEL_3 = 113, 00071 XLCFI_SAT_SEOSAT = 120, 00072 XLCFI_SAT_SENTINEL_1C = 125, 00073 XLCFI_SAT_SENTINEL_2A = 126, 00074 XLCFI_SAT_SENTINEL_2B = 127, 00075 XLCFI_SAT_SENTINEL_2C = 128, 00076 XLCFI_SAT_SENTINEL_3A = 129, 00077 XLCFI_SAT_SENTINEL_3B = 130, 00078 XLCFI_SAT_SENTINEL_3C = 131, 00079 XLCFI_SAT_GENERIC = 200, 00080 // AN-353 00081 XLCFI_SAT_GENERIC_GEO = 300, 00082 XLCFI_SAT_MTG = 301 00083 // END AN-353 00084 } SatIdEnum; 00085 00086 00088 typedef enum 00089 { 00090 XLCFI_TIMEMOD_AUTO = -2, 00091 XLCFI_TIMEMOD_USER = -1, 00092 XLCFI_TIMEMOD_NONE = 0, 00093 XLCFI_TIMEMOD_IERS_B_PREDICTED = 1, 00094 XLCFI_TIMEMOD_IERS_B_RESTITUTED, 00095 XLCFI_TIMEMOD_FOS_PREDICTED, 00096 XLCFI_TIMEMOD_FOS_RESTITUTED, 00097 XLCFI_TIMEMOD_DORIS_PRELIMINARY, 00098 XLCFI_TIMEMOD_DORIS_PRECISE, 00099 XLCFI_TIMEMOD_DORIS_NAVIGATOR, 00100 XLCFI_TIMEMOD_OSF, 00101 XLCFI_TIMEMOD_IERS_A_ONLY_PREDICTION, 00102 XLCFI_TIMEMOD_IERS_A_PREDICTION_AND_FORMULA, 00103 XLCFI_TIMEMOD_IERS_B_AND_A_ONLY_PREDICTION 00104 } TimeModelEnum; 00105 00106 00108 typedef enum 00109 { 00110 XLCFI_TIME_UNDEF = -1, 00111 XLCFI_TIME_TAI, 00112 XLCFI_TIME_UTC, 00113 XLCFI_TIME_UT1, 00114 XLCFI_TIME_GPS 00115 } XLTimeRefEnum; 00116 00117 00119 typedef enum 00120 { 00121 XLCFI_PROC = 0 00122 } TimeProcEnum; 00123 00125 typedef enum 00126 { 00127 XLCFI_TRANS_STD = 0, 00128 XLCFI_TRANS_ENVI_GS = 11, 00129 XLCFI_TRANS_CRYO_GS = 21, 00130 XLCFI_TRANS_CRYO_TM = 22, 00131 XLCFI_TRANS_CRYO_TM_SIRAL = 23, 00132 XLCFI_TRANS_SMOS_TM = 31, 00133 XLCFI_TRANS_GENERIC_GPS_SEC = 41, 00134 XLCFI_TRANS_GENERIC_GPS_WEEK = 42 00135 } TimeTransEnum; 00136 00137 00156 typedef enum 00157 { 00158 XLCFI_ASCII_UNDEF = -1, 00159 XLCFI_ASCII_STD = 11, 00160 XLCFI_ASCII_STD_REF = 12, 00161 XLCFI_ASCII_STD_MICROSEC = 13, 00162 XLCFI_ASCII_STD_REF_MICROSEC = 14, 00163 XLCFI_ASCII_COMPACT = 21, 00164 XLCFI_ASCII_COMPACT_REF = 22, 00165 XLCFI_ASCII_COMPACT_MICROSEC = 23, 00166 XLCFI_ASCII_COMPACT_REF_MICROSEC = 24, 00167 XLCFI_ASCII_ENVI = 31, 00168 XLCFI_ASCII_ENVI_REF = 32, 00169 XLCFI_ASCII_ENVI_MICROSEC = 33, 00170 XLCFI_ASCII_ENVI_REF_MICROSEC = 34, 00171 XLCFI_ASCII_CCSDSA = 41, 00172 XLCFI_ASCII_CCSDSA_REF = 42, 00173 XLCFI_ASCII_CCSDSA_MICROSEC = 43, 00174 XLCFI_ASCII_CCSDSA_REF_MICROSEC = 44, 00175 XLCFI_ASCII_CCSDSA_COMPACT = 51, 00176 XLCFI_ASCII_CCSDSA_COMPACT_REF = 52, 00177 XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC = 53, 00178 XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54 00179 } TimeAsciiEnum; 00180 00181 00183 typedef enum // Flag to indicate the grade of a derivative 00184 { 00185 XLCFI_NO_DER = 0, 00186 XLCFI_DER_1ST, 00187 XLCFI_DER_2ND, 00188 XLCFI_ITER_NO_DER, 00189 XLCFI_ITER_DER_1ST, 00190 XLCFI_NO_ITER_NO_DER, 00191 XLCFI_NO_ITER_DER_1ST, 00192 } DerivEnum; 00193 00194 00196 typedef enum // It defines a coordinate system 00197 { 00198 XLCFI_CS_UNDEF, 00199 XLCFI_CS_GALACTIC, 00200 XLCFI_CS_BM1950, 00201 XLCFI_CS_BM2000, 00202 XLCFI_CS_HM2000, 00203 XLCFI_CS_GM2000, 00204 XLCFI_CS_MOD, 00205 XLCFI_CS_TOD, 00206 XLCFI_CS_PEF, 00207 XLCFI_CS_EF, 00208 XLCFI_CS_TOPOCENTRIC, 00209 XLCFI_CS_SAT_ORBITAL_REF, 00210 XLCFI_CS_SAT_NOMINAL_ATT, 00211 XLCFI_CS_SAT_ATT, 00212 XLCFI_CS_INSTR_ATT 00213 } CoordinateSystemEnum; 00214 00216 typedef enum 00217 { 00218 XLCFI_KEPLER_MEAN = 1, 00219 XLCFI_KEPLER_OSC 00220 } KeplerModeEnum; 00221 00223 typedef enum 00224 { 00225 XLCFI_MODE_FLAG_LOCATION = 0, 00226 XLCFI_MODE_FLAG_DIRECTION 00227 } ModeFlagEnum; 00228 00230 typedef enum 00231 { 00232 XLCFI_MERCURY = 1, 00233 XLCFI_VENUS, 00234 XLCFI_EM_BAR, 00235 XLCFI_MARS, 00236 XLCFI_JUPITER, 00237 XLCFI_SATURN, 00238 XLCFI_URANUS, 00239 XLCFI_NEPTUNE 00240 } PlanetEnum; 00241 00243 typedef enum 00244 { 00245 XLCFI_FK4 = 0, 00246 XLCFI_FK5 00247 } StarCatalogEnum; 00248 00249 00251 typedef enum 00252 { 00253 XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1, 00254 XLCFI_ANGLE_TYPE_MEAN_LAT_TOD, 00255 XLCFI_ANGLE_TYPE_TRUE_LAT_GM2000, 00256 XLCFI_ANGLE_TYPE_TRUE_LAT_EF 00257 } AngleTypeEnum; 00258 00260 typedef enum 00261 { 00262 XLCFI_MODEL_DEFAULT, 00263 XLCFI_MODEL_CONFIG 00264 } ModelSetsEnum; 00265 00267 typedef enum 00268 { 00269 XLCFI_MODEL_TYPE_EARTH, 00270 XLCFI_MODEL_TYPE_SUN, 00271 XLCFI_MODEL_TYPE_MOON, 00272 XLCFI_MODEL_TYPE_PLANET, 00273 XLCFI_MODEL_TYPE_STAR, 00274 XLCFI_MODEL_TYPE_NUTATION, 00275 XLCFI_MODEL_TYPE_PRECESSION, 00276 XLCFI_MODEL_TYPE_CONSTANTS, 00277 XLCFI_NUM_MODEL_TYPES_ENUM 00278 } ModelTypesEnum; 00279 00281 typedef enum 00282 { 00283 XLCFI_MODEL_EARTH_DEFAULT 00284 } ModelEarthEnum; 00285 00286 00288 typedef enum 00289 { 00290 XLCFI_MODEL_SUN_DEFAULT 00291 } ModelSunEnum; 00292 00293 00295 typedef enum 00296 { 00297 XLCFI_MODEL_MOON_DEFAULT 00298 } ModelMoonEnum; 00299 00300 00302 typedef enum 00303 { 00304 XLCFI_MODEL_PLANETS_DEFAULT 00305 } ModelPlanetsEnum; 00306 00307 00309 typedef enum 00310 { 00311 XLCFI_MODEL_STAR_DEFAULT 00312 } ModelStarEnum; 00313 00314 00316 typedef enum 00317 { 00318 XLCFI_MODEL_NUTATION_DEFAULT 00319 } ModelNutationEnum; 00320 00321 00323 typedef enum 00324 { 00325 XLCFI_MODEL_PRECESSION_DEFAULT 00326 } ModelPrecessionEnum; 00327 00329 typedef enum 00330 { 00331 XLCFI_MODEL_CONSTANTS_DEFAULT 00332 } ModelConstantsEnum; 00333 00335 typedef enum 00336 { 00337 XLCFI_NO_BULLETIN = -1, 00338 XLCFI_BULLETIN_B, 00339 XLCFI_BULLETIN_A, 00340 XLCFI_BULLETIN_B_AND_A 00341 } XLBulletinTypeEnum; 00342 00344 typedef enum 00345 { 00346 XLCFI_FORMULA_ENABLED, 00347 XLCFI_FORMULA_DISABLED 00348 } IersFormulaFlagEnum; 00349 00350 //------------------------------------------------------ 00351 // DATA STRUCTURES 00352 //------------------------------------------------------ 00353 00355 class TimeInterval 00356 { 00357 public: 00358 long timeRef; 00359 double startTime; 00360 double stopTime; 00361 00363 TimeInterval() 00364 {timeRef = -1, startTime = 0, stopTime = 0;}; 00365 00367 TimeInterval(long ref, double start, double stop) 00368 {timeRef = ref, startTime = start, stopTime = stop;}; 00369 }; 00370 00372 class OrbitInterval 00373 { 00374 public: 00375 long startOrbit; 00376 long stopOrbit; 00377 00379 OrbitInterval() {startOrbit = 0, stopOrbit = 0;}; 00380 00382 OrbitInterval(long start, long stop) 00383 {startOrbit = start, stopOrbit = stop;}; 00384 }; 00385 00387 class TimeData 00388 { 00389 public: 00390 double taiTime; 00391 double ut1Time; 00392 double tai_utc; 00393 double tai_ut1; 00394 double tai_gps; 00395 }; 00396 00398 class LeapSecondInfo 00399 { 00400 public: 00401 long flag; 00402 double utcTime; 00403 }; 00404 00406 class TimeCorrelationData 00407 { 00408 public: 00409 long iersBulletinType; 00410 long iersFormulaFlag; 00411 long predictionFirstRecord; 00412 PolarMotionFormula polarMotionFormula; 00413 TimeCorrelationFormula timeCorrelationFormula; 00414 vector<TimeData> timeCorrVector; 00415 vector<PolarMotionParams> polarMotionParams; 00416 LeapSecondInfo leapSecond; 00417 00419 TimeCorrelationData() 00420 { 00421 iersBulletinType = XLCFI_NO_BULLETIN; 00422 iersFormulaFlag = XLCFI_FORMULA_DISABLED; 00423 predictionFirstRecord = 0L; 00424 } 00425 00427 TimeCorrelationData(long bulType, long iersFormula, long predFirst, 00428 PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm, 00429 vector<TimeData> &timData, vector<PolarMotionParams> &polarData, 00430 LeapSecondInfo &leapInfo ) 00431 { 00432 iersBulletinType = bulType; 00433 iersFormulaFlag = iersFormula; 00434 predictionFirstRecord = predFirst; 00435 polarMotionFormula = polarForm; 00436 timeCorrelationFormula = timeForm; 00437 timeCorrVector = timData; 00438 polarMotionParams = polarData; 00439 leapSecond = leapInfo; 00440 } 00441 }; 00442 00444 class Kepler 00445 { 00446 public: 00447 long mode; 00448 long cs; 00449 double a; 00450 double e; 00451 double i; 00452 double ra; 00453 double w; 00454 double m; 00455 }; 00456 00458 class Topocentric 00459 { 00460 public: 00461 double azim; 00462 double elev; 00463 double range; 00464 double azimDer; 00465 double elevDer; 00466 double rangeDer; 00467 }; 00468 00470 class ModelData 00471 { 00472 public: 00473 long earthModel; 00474 long sunModel; 00475 long moonModel; 00476 long planetModel; 00477 long starModel; 00478 long nutationModel; 00479 long precessionModel; 00480 long constantsModel; 00481 00482 /* Earth shape and gravity */ 00483 double re; 00484 double mu; 00485 double j2; 00486 double j3; 00487 double j4; 00488 00489 double majorAxis; 00490 double minorAxis; 00491 double ecc; 00492 double flat; 00493 00494 /* Earth rotation */ 00495 double gcoef0; 00496 double gcoef1; 00497 double gcoef2; 00498 00499 double gcoefSim0; 00500 double gcoefSim1; 00501 double gcoefSim2; 00502 00503 /* constants */ 00504 double au; 00505 }; 00506 00507 } // closing namespace 00508 00509 #endif