![]() |
Earth Observation Mission CFI Software Lib Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.3 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: LibData.h,v 1.17 2011/11/23 13:02:37 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 } SatIdEnum; 00081 00082 00084 typedef enum 00085 { 00086 XLCFI_TIMEMOD_AUTO = -2, 00087 XLCFI_TIMEMOD_USER = -1, 00088 XLCFI_TIMEMOD_NONE = 0, 00089 XLCFI_TIMEMOD_IERS_B_PREDICTED = 1, 00090 XLCFI_TIMEMOD_IERS_B_RESTITUTED, 00091 XLCFI_TIMEMOD_FOS_PREDICTED, 00092 XLCFI_TIMEMOD_FOS_RESTITUTED, 00093 XLCFI_TIMEMOD_DORIS_PRELIMINARY, 00094 XLCFI_TIMEMOD_DORIS_PRECISE, 00095 XLCFI_TIMEMOD_DORIS_NAVIGATOR, 00096 XLCFI_TIMEMOD_OSF, 00097 XLCFI_TIMEMOD_IERS_A_ONLY_PREDICTION, 00098 XLCFI_TIMEMOD_IERS_A_PREDICTION_AND_FORMULA, 00099 XLCFI_TIMEMOD_IERS_B_AND_A_ONLY_PREDICTION 00100 } TimeModelEnum; 00101 00102 00104 typedef enum 00105 { 00106 XLCFI_TIME_UNDEF = -1, 00107 XLCFI_TIME_TAI, 00108 XLCFI_TIME_UTC, 00109 XLCFI_TIME_UT1, 00110 XLCFI_TIME_GPS 00111 } XLTimeRefEnum; 00112 00113 00115 typedef enum 00116 { 00117 XLCFI_PROC = 0 00118 } TimeProcEnum; 00119 00121 typedef enum 00122 { 00123 XLCFI_TRANS_STD = 0, 00124 XLCFI_TRANS_ENVI_GS = 11, 00125 XLCFI_TRANS_CRYO_GS = 21, 00126 XLCFI_TRANS_CRYO_TM = 22, 00127 XLCFI_TRANS_CRYO_TM_SIRAL = 23, 00128 XLCFI_TRANS_SMOS_TM = 31, 00129 XLCFI_TRANS_GENERIC_GPS_SEC = 41, 00130 XLCFI_TRANS_GENERIC_GPS_WEEK = 42 00131 } TimeTransEnum; 00132 00133 00152 typedef enum 00153 { 00154 XLCFI_ASCII_UNDEF = -1, 00155 XLCFI_ASCII_STD = 11, 00156 XLCFI_ASCII_STD_REF = 12, 00157 XLCFI_ASCII_STD_MICROSEC = 13, 00158 XLCFI_ASCII_STD_REF_MICROSEC = 14, 00159 XLCFI_ASCII_COMPACT = 21, 00160 XLCFI_ASCII_COMPACT_REF = 22, 00161 XLCFI_ASCII_COMPACT_MICROSEC = 23, 00162 XLCFI_ASCII_COMPACT_REF_MICROSEC = 24, 00163 XLCFI_ASCII_ENVI = 31, 00164 XLCFI_ASCII_ENVI_REF = 32, 00165 XLCFI_ASCII_ENVI_MICROSEC = 33, 00166 XLCFI_ASCII_ENVI_REF_MICROSEC = 34, 00167 XLCFI_ASCII_CCSDSA = 41, 00168 XLCFI_ASCII_CCSDSA_REF = 42, 00169 XLCFI_ASCII_CCSDSA_MICROSEC = 43, 00170 XLCFI_ASCII_CCSDSA_REF_MICROSEC = 44, 00171 XLCFI_ASCII_CCSDSA_COMPACT = 51, 00172 XLCFI_ASCII_CCSDSA_COMPACT_REF = 52, 00173 XLCFI_ASCII_CCSDSA_COMPACT_MICROSEC = 53, 00174 XLCFI_ASCII_CCSDSA_COMPACT_REF_MICROSEC = 54 00175 } TimeAsciiEnum; 00176 00177 00179 typedef enum // Flag to indicate the grade of a derivative 00180 { 00181 XLCFI_NO_DER = 0, 00182 XLCFI_DER_1ST, 00183 XLCFI_DER_2ND 00184 } DerivEnum; 00185 00186 00188 typedef enum // It defines a coordinate system 00189 { 00190 XLCFI_CS_UNDEF, 00191 XLCFI_CS_GALACTIC, 00192 XLCFI_CS_BM1950, 00193 XLCFI_CS_BM2000, 00194 XLCFI_CS_HM2000, 00195 XLCFI_CS_GM2000, 00196 XLCFI_CS_MOD, 00197 XLCFI_CS_TOD, 00198 XLCFI_CS_PEF, 00199 XLCFI_CS_EF, 00200 XLCFI_CS_TOPOCENTRIC, 00201 XLCFI_CS_SAT_ORBITAL_REF, 00202 XLCFI_CS_SAT_NOMINAL_ATT, 00203 XLCFI_CS_SAT_ATT, 00204 XLCFI_CS_INSTR_ATT 00205 } CoordinateSystemEnum; 00206 00208 typedef enum 00209 { 00210 XLCFI_KEPLER_MEAN = 1, 00211 XLCFI_KEPLER_OSC 00212 } KeplerModeEnum; 00213 00215 typedef enum 00216 { 00217 XLCFI_MODE_FLAG_LOCATION = 0, 00218 XLCFI_MODE_FLAG_DIRECTION 00219 } ModeFlagEnum; 00220 00222 typedef enum 00223 { 00224 XLCFI_MERCURY = 1, 00225 XLCFI_VENUS, 00226 XLCFI_EM_BAR, 00227 XLCFI_MARS, 00228 XLCFI_JUPITER, 00229 XLCFI_SATURN, 00230 XLCFI_URANUS, 00231 XLCFI_NEPTUNE 00232 } PlanetEnum; 00233 00235 typedef enum 00236 { 00237 XLCFI_FK4 = 0, 00238 XLCFI_FK5 00239 } StarCatalogEnum; 00240 00241 00243 typedef enum 00244 { 00245 XLCFI_ANGLE_TYPE_TRUE_LAT_TOD = 1, 00246 XLCFI_ANGLE_TYPE_MEAN_LAT_TOD 00247 } AngleTypeEnum; 00248 00250 typedef enum 00251 { 00252 XLCFI_MODEL_DEFAULT, 00253 XLCFI_MODEL_CONFIG 00254 } ModelSetsEnum; 00255 00257 typedef enum 00258 { 00259 XLCFI_MODEL_TYPE_EARTH, 00260 XLCFI_MODEL_TYPE_SUN, 00261 XLCFI_MODEL_TYPE_MOON, 00262 XLCFI_MODEL_TYPE_PLANET, 00263 XLCFI_MODEL_TYPE_STAR, 00264 XLCFI_MODEL_TYPE_NUTATION, 00265 XLCFI_MODEL_TYPE_PRECESSION, 00266 XLCFI_MODEL_TYPE_CONSTANTS, 00267 XLCFI_NUM_MODEL_TYPES_ENUM 00268 } ModelTypesEnum; 00269 00271 typedef enum 00272 { 00273 XLCFI_MODEL_EARTH_DEFAULT 00274 } ModelEarthEnum; 00275 00276 00278 typedef enum 00279 { 00280 XLCFI_MODEL_SUN_DEFAULT 00281 } ModelSunEnum; 00282 00283 00285 typedef enum 00286 { 00287 XLCFI_MODEL_MOON_DEFAULT 00288 } ModelMoonEnum; 00289 00290 00292 typedef enum 00293 { 00294 XLCFI_MODEL_PLANETS_DEFAULT 00295 } ModelPlanetsEnum; 00296 00297 00299 typedef enum 00300 { 00301 XLCFI_MODEL_STAR_DEFAULT 00302 } ModelStarEnum; 00303 00304 00306 typedef enum 00307 { 00308 XLCFI_MODEL_NUTATION_DEFAULT 00309 } ModelNutationEnum; 00310 00311 00313 typedef enum 00314 { 00315 XLCFI_MODEL_PRECESSION_DEFAULT 00316 } ModelPrecessionEnum; 00317 00319 typedef enum 00320 { 00321 XLCFI_MODEL_CONSTANTS_DEFAULT 00322 } ModelConstantsEnum; 00323 00325 typedef enum 00326 { 00327 XLCFI_NO_BULLETIN = -1, 00328 XLCFI_BULLETIN_B, 00329 XLCFI_BULLETIN_A, 00330 XLCFI_BULLETIN_B_AND_A 00331 } XLBulletinTypeEnum; 00332 00334 typedef enum 00335 { 00336 XLCFI_FORMULA_ENABLED, 00337 XLCFI_FORMULA_DISABLED 00338 } IersFormulaFlagEnum; 00339 00340 //------------------------------------------------------ 00341 // DATA STRUCTURES 00342 //------------------------------------------------------ 00343 00345 class TimeInterval 00346 { 00347 public: 00348 long timeRef; 00349 double startTime; 00350 double stopTime; 00351 00353 TimeInterval() 00354 {timeRef = -1, startTime = 0, stopTime = 0;}; 00355 00357 TimeInterval(long ref, double start, double stop) 00358 {timeRef = ref, startTime = start, stopTime = stop;}; 00359 }; 00360 00362 class OrbitInterval 00363 { 00364 public: 00365 long startOrbit; 00366 long stopOrbit; 00367 00369 OrbitInterval() {startOrbit = 0, stopOrbit = 0;}; 00370 00372 OrbitInterval(long start, long stop) 00373 {startOrbit = start, stopOrbit = stop;}; 00374 }; 00375 00377 class TimeData 00378 { 00379 public: 00380 double taiTime; 00381 double ut1Time; 00382 double tai_utc; 00383 double tai_ut1; 00384 double tai_gps; 00385 }; 00386 00388 class LeapSecondInfo 00389 { 00390 public: 00391 long flag; 00392 double utcTime; 00393 }; 00394 00396 class TimeCorrelationData 00397 { 00398 public: 00399 long iersBulletinType; 00400 long iersFormulaFlag; 00401 long predictionFirstRecord; 00402 PolarMotionFormula polarMotionFormula; 00403 TimeCorrelationFormula timeCorrelationFormula; 00404 vector<TimeData> timeCorrVector; 00405 vector<PolarMotionParams> polarMotionParams; 00406 LeapSecondInfo leapSecond; 00407 00409 TimeCorrelationData() 00410 { 00411 iersBulletinType = XLCFI_NO_BULLETIN; 00412 iersFormulaFlag = XLCFI_FORMULA_DISABLED; 00413 predictionFirstRecord = 0L; 00414 } 00415 00417 TimeCorrelationData(long bulType, long iersFormula, long predFirst, 00418 PolarMotionFormula &polarForm, TimeCorrelationFormula &timeForm, 00419 vector<TimeData> &timData, vector<PolarMotionParams> &polarData, 00420 LeapSecondInfo &leapInfo ) 00421 { 00422 iersBulletinType = bulType; 00423 iersFormulaFlag = iersFormula; 00424 predictionFirstRecord = predFirst; 00425 polarMotionFormula = polarForm; 00426 timeCorrelationFormula = timeForm; 00427 timeCorrVector = timData; 00428 polarMotionParams = polarData; 00429 leapSecond = leapInfo; 00430 } 00431 }; 00432 00434 class Kepler 00435 { 00436 public: 00437 long mode; 00438 long cs; 00439 double a; 00440 double e; 00441 double i; 00442 double ra; 00443 double w; 00444 double m; 00445 }; 00446 00448 class Topocentric 00449 { 00450 public: 00451 double azim; 00452 double elev; 00453 double range; 00454 double azimDer; 00455 double elevDer; 00456 double rangeDer; 00457 }; 00458 00460 class ModelData 00461 { 00462 public: 00463 long earthModel; 00464 long sunModel; 00465 long moonModel; 00466 long planetModel; 00467 long starModel; 00468 long nutationModel; 00469 long precessionModel; 00470 long constantsModel; 00471 00472 /* Earth shape and gravity */ 00473 double re; 00474 double mu; 00475 double j2; 00476 double j3; 00477 double j4; 00478 00479 double majorAxis; 00480 double minorAxis; 00481 double ecc; 00482 double flat; 00483 00484 /* Earth rotation */ 00485 double gcoef0; 00486 double gcoef1; 00487 double gcoef2; 00488 00489 double gcoefSim0; 00490 double gcoefSim1; 00491 double gcoefSim2; 00492 00493 /* constants */ 00494 double au; 00495 }; 00496 00497 } // closing namespace 00498 00499 #endif