Earth Observation Mission CFI Software DataHandling Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.11 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: DataHandlingData.h,v 1.35 2014-03-25 07:51:58 cavm Exp $ 00007 //-------------------------------------------------------------------- 00008 00010 // This file contais generic data that can be used as input/output in 00011 // the classes of EXPCFI DataHandling library 00013 00014 #ifndef __EECFI_DATAHANDLINGDATA__ 00015 #define __EECFI_DATAHANDLINGDATA__ 00016 00017 //--INCLUDE----------------------------------------------------------- 00018 #include <string> 00019 #include <vector> 00020 00021 #include "AttRec.h" 00022 #include "DataHandlingDllExport.h" 00023 //--NAMESPACES-------------------------------------------------------- 00024 using namespace std; 00025 00026 00027 namespace EECFI 00028 { 00029 //------------------------------------------------------ 00030 // CONSTANT DATA 00031 //------------------------------------------------------ 00032 00033 //------------------------------------------------------ 00034 // DATA ENUMERATION 00035 //------------------------------------------------------ 00036 00038 typedef enum 00039 { 00040 XDCFI_ATT_QUATERNIONS = 0, 00041 XDCFI_ATT_ANGLES 00042 } AttitudeDataTypeEnum; 00043 00045 typedef enum 00046 { 00047 XDCFI_LINE_GEOM = 0, 00048 XDCFI_POINT_GEOM, 00049 XDCFI_LIMB_GEOM, 00050 XDCFI_DISTANCE_GEOM 00051 } GeomTypeEnum; 00052 00054 typedef enum 00055 { 00056 XDCFI_NO_ASAR = 0, 00057 XDCFI_NARROW_ASAR, 00058 XDCFI_WIDE_ASAR 00059 } AsarTypeEnum; 00060 00062 typedef enum 00063 { 00064 XDCFI_NO_REF = 0, 00065 XDCFI_STD_REF, 00066 XDCFI_USER_REF, 00067 XDCFI_PRED_REF, 00068 XDCFI_STD_REF_N = 10, 00069 XDCFI_USER_REF_N = 20, 00070 XDCFI_PRED_REF_N = 30, 00071 XDCFI_US76_REF = 300, 00072 XDCFI_TROPIC_REF, 00073 XDCFI_MID_SUM_REF, 00074 XDCFI_MID_WIN_REF, 00075 XDCFI_SUBAR_SUM_REF, 00076 XDCFI_SUBAR_WIN_REF, 00077 XDCFI_LUT_REF = 400, 00078 XDCFI_US76_REF_N = 3000, 00079 XDCFI_TROPIC_REF_N, 00080 XDCFI_MID_SUM_REF_N, 00081 XDCFI_MID_WIN_REF_N, 00082 XDCFI_SUBAR_SUM_REF_N, 00083 XDCFI_SUBAR_WIN_REF_N, 00084 XDCFI_LUT_REF_N = 4000 00085 } TargetRayEnum; 00086 00088 typedef enum 00089 { 00090 XDCFI_OPEN_SWATH, 00091 XDCFI_CLOSED_SWATH 00092 } SwathTypecEnum; 00093 00095 typedef enum 00096 { 00097 XDCFI_GEODETIC_SWATH_TYPE, 00098 XDCFI_INERTIAL_SWATH_TYPE 00099 } SwathPointTypeEnum; 00100 00102 typedef enum 00103 { 00104 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00105 XDCFI_SWATH_DISTANCE_GEOM, 00106 XDCFI_SWATH_LIMB_GEOM, 00107 XDCFI_SWATH_INERTIAL_GEOM, 00108 XDCFI_SWATH_SUBSATELLITE_GEOM, 00109 XDCFI_SWATH_ASAR_GEOM 00110 00111 } SwathGeomEnum; 00112 00114 typedef enum 00115 { 00116 XDCFI_NOT_DEFINED = -1, 00117 XDCFI_POINT = 0, 00118 XDCFI_CIRCLE = 1, 00119 XDCFI_SEGMENT = 2, 00120 XDCFI_POLYGON = 3 00121 } ZoneTypeEnum; 00122 00124 typedef enum 00125 { 00126 XDCFI_SAT_ORBITAL_REF = 0, 00127 XDCFI_SAT_NOMINAL_ATT, 00128 XDCFI_SAT_ATT, 00129 XDCFI_INSTR_ATT 00130 } AttitudeFrameEnum; 00131 00133 typedef enum 00134 { 00135 XDCFI_BAR_MEAN_2000 = 1, 00136 XDCFI_HEL_MEAN_2000, 00137 XDCFI_GEO_MEAN_2000, 00138 XDCFI_MEAN_DATE, 00139 XDCFI_TRUE_DATE, 00140 XDCFI_PSEUDO_EARTH_FIXED, 00141 XDCFI_EARTH_FIXED, 00142 XDCFI_BAR_MEAN_1950, 00143 XDCFI_GALACTIC, 00144 XDCFI_SAT_ACT_REF, 00145 XDCFI_QUASI_MEAN_DATE, 00146 XDCFI_PSE_TRUE_DATE, 00147 XDCFI_TOPOCENTRIC, 00148 XDCFI_SAT_REF, 00149 XDCFI_SAT_REL_REF 00150 } CoordinateSystemsEnum; // Updated for AN-509 00151 00153 typedef enum 00154 { 00155 XDCFI_3_ADJUST_NOMI = 1, 00156 XDCFI_4_ADJUST_DMAN, 00157 XDCFI_5_INTERP_DGAP, 00158 XDCFI_6_EXTRAP_LT1D, 00159 XDCFI_7_EXTRAP_1D2D, 00160 XDCFI_8_EXTRAP_GT2D, 00161 XDCFI_8_EXTRAP_AMAN, 00162 XDCFI_Q_INDEX_MAX_ENUM 00163 } QualityIndexEnum; 00164 00166 typedef enum 00167 { 00168 XDCFI_SCF_DRAW_SOLID, 00169 XDCFI_SCF_DRAW_DASHED, 00170 XDCFI_SCF_DRAW_DOTTED, 00171 XDCFI_SCF_DRAW_TIMELINE 00172 } SCFDrawModesEnum; 00173 00175 typedef enum 00176 { 00177 XDCFI_SCF_FILL_SOLID, 00178 XDCFI_SCF_FILL_HOLLOW 00179 } SCFFillModesEnum; 00180 00182 typedef enum 00183 { 00184 XDCFI_SEL_FILE = 0, 00185 XDCFI_SEL_TIME, 00186 XDCFI_SEL_ORBIT, 00187 XDCFI_SEL_DEFAULT, 00188 XDCFI_SEL_NONE 00189 } TimeInitModeEnum; 00190 00192 typedef enum 00193 { 00194 XDCFI_TIME_UNDEF = -1, 00195 XDCFI_TIME_TAI, 00196 XDCFI_TIME_UTC, 00197 XDCFI_TIME_UT1, 00198 XDCFI_TIME_GPS 00199 } TimeRefDataHandlingEnum; 00200 00202 typedef enum 00203 { 00204 XDCFI_EXTEND_NUM_OSV = 0, 00205 XDCFI_EXTEND_TIME 00206 } ExtendTypeEnum; 00207 00209 typedef enum 00210 { 00211 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00212 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00213 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00214 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00215 } TimeRefOfDataHandlingEnum; 00216 00218 typedef enum 00219 { 00220 XDCFI_READ_DB = 0, 00221 XDCFI_GNOMONIC = 1, 00222 XDCFI_RECTANGULAR = 2 00223 } ProjectionEnum; 00224 00226 typedef enum 00227 { 00228 XDCFI_ATT_NONE = 0, 00229 XDCFI_ATT_AOCS, 00230 XDCFI_ATT_PARAM, 00231 XDCFI_ATT_HARMONIC, 00232 XDCFI_ATT_FILE, 00233 XDCFI_ATT_ANGLE, 00234 XDCFI_ATT_MATRIX 00235 } AttModelEnum; 00236 00238 typedef enum 00239 { 00240 XDCFI_ORBIT_FILE, 00241 XDCFI_OSF_FILE, 00242 XDCFI_DORIS_FILE, 00243 XDCFI_IERS_BULLETIN_FILE, 00244 XDCFI_USER_OSV_LIST, 00245 XDCFI_SP3_FILE, // AN-550 00246 XDCFI_POF_FILE, 00247 XDCFI_ROF_FILE, 00248 XDCFI_SDF_FILE, 00249 XDCFI_STF_FILE, 00250 XDCFI_ATTITUDE_FILE, 00251 XDCFI_DEM_CONF_FILE, 00252 XDCFI_DEM_FILE, 00253 XDCFI_ZONE_FILE, 00254 XDCFI_STATION_FILE, 00255 XDCFI_STAR_FILE, 00256 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00257 XDCFI_ATT_STAR_TRACKER_FILE, 00258 XDCFI_TLE_FILE, 00259 XDCFI_ATTITUDE_DEFINITION_FILE, // AN-469 00260 XDCFI_OEM_FILE //AN-578 00261 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00262 00264 typedef enum 00265 { 00266 XDCFI_UNKNOWN_TYPE = -1, 00267 XDCFI_AUTO, 00268 XDCFI_ORBIT_CHANGE, 00269 XDCFI_STATE_VECTOR, 00270 XDCFI_OSF_TYPE, 00271 XDCFI_POF_TYPE, 00272 XDCFI_ROF_TYPE, 00273 XDCFI_DORIS_TYPE, 00274 XDCFI_POF_N_DORIS_TYPE, 00275 XDCFI_OEF_OSF_TYPE, 00276 XDCFI_OEF_POF_TYPE, 00277 XDCFI_IERS_B_TYPE, 00278 XDCFI_TLE_TYPE, 00279 XDCFI_STF_TYPE, 00280 XDCFI_DORISPREC_TYPE, 00281 XDCFI_DORISPREM_TYPE, 00282 XDCFI_ATT_TYPE, 00283 XDCFI_SCF_TYPE, 00284 XDCFI_PRECISE_PROPAG_TYPE, 00285 XDCFI_DEMCFG_TYPE, 00286 XDCFI_SATCFG_TYPE, 00287 XDCFI_GND_DB_TYPE, 00288 XDCFI_SW_DEF_TYPE, 00289 XDCFI_ZON_DB_TYPE, 00290 XDCFI_STR1ATT_TYPE, 00291 XDCFI_IERS_A_TYPE, 00292 XDCFI_IERS_B_AND_A_TYPE, 00293 XDCFI_ATT_DEF_TYPE, 00294 XDCFI_USER_OSV_LIST_TYPE, 00295 XDCFI_SP3_TYPE, /* AN-550 */ 00296 XDCFI_OSF_POF_MODE, // AN-527 00297 XDCFI_OSF_ROF_MODE, // AN-527 00298 XDCFI_OSF_DORIS_MODE, // AN-527 00299 XDCFI_OEM_TYPE, // AN-578 00300 XDCFI_OSF_OEM_MODE, // AN-578 00301 XDCFI_FILE_TYPE_MAX_VALUE 00302 } FileTypeEnum; 00303 00305 typedef enum 00306 { 00307 XDCFI_DEM_ACE_MODEL = 0, 00308 XDCFI_DEM_GETASSE30_V1, 00309 XDCFI_DEM_GETASSE30_V2, 00310 XDCFI_DEM_ACE2_9SEC, 00311 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00312 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00313 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00314 XDCFI_DEM_ACE2_3SEC, // AN-619 00315 XDCFI_DEM_NUM_MODELS 00316 } DemModelEnum; 00317 00319 typedef enum 00320 { 00321 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00322 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00323 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00324 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00325 } DemGetasseDataSourceEnum; 00326 00327 /* DEM Data Source Types for ACE2: 9secs and 30secs */ 00328 typedef enum 00329 { 00330 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00331 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00332 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00333 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00334 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00335 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00336 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00337 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00338 } DemAce2DataSourceEnum; 00339 00340 /* DEM Data Source Types for GDEM v2 */ 00341 typedef enum 00342 { 00343 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00344 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00345 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00346 XDCFI_DEM_GDEM_SOURCE_NED, 00347 XDCFI_DEM_GDEM_SOURCE_CDED, 00348 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00349 } DemGdemV2DataSourceEnum; 00350 00352 typedef enum 00353 { 00354 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00355 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00356 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00357 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00358 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00359 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00360 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00361 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00362 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00363 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00364 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00365 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00366 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00367 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00368 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00369 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00370 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN //AN-516 00371 } ReadAttErrEnum; 00372 00374 typedef enum 00375 { 00376 XDCFI_DEFAULT_VALUES = 0, 00377 XDCFI_USER_VALUES = 1 00378 } PrecisePropagUserFlagEnum; 00379 00381 typedef enum 00382 { 00383 XDCFI_NOT_SELECT = 0, 00384 XDCFI_SELECT = 1 00385 } PrecisePropagSelectionFlagEnum; 00386 00388 typedef enum 00389 { 00390 XDCFI_SGA_USE_PARAMETERS = 0, 00391 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00392 } PrecisePropagSgaFlagEnum; 00393 00395 typedef enum 00396 { 00397 XDCFI_SAT_DEFAULT = 0, 00398 XDCFI_SAT_DEFAULT1 = 1, 00399 XDCFI_SAT_DEFAULT2 = 2, 00400 XDCFI_SAT_DEFAULT3 = 3, 00401 XDCFI_SAT_DEFAULT4 = 4, 00402 XDCFI_SAT_DEFAULT5 = 5, 00403 XDCFI_SAT_DEFAULT6 = 6, 00404 XDCFI_SAT_DEFAULT7 = 7, 00405 XDCFI_SAT_DEFAULT8 = 8, 00406 XDCFI_SAT_DEFAULT9 = 9, 00407 XDCFI_SAT_ERS1 = 11, 00408 XDCFI_SAT_ERS2 = 12, 00409 XDCFI_SAT_ENVISAT = 21, 00410 XDCFI_SAT_METOP1 = 31, 00411 XDCFI_SAT_METOP2 = 32, 00412 XDCFI_SAT_METOP3 = 33, 00413 XDCFI_SAT_CRYOSAT = 41, 00414 XDCFI_SAT_ADM = 51, 00415 XDCFI_SAT_GOCE = 61, 00416 XDCFI_SAT_SMOS = 71, 00417 XDCFI_SAT_TERRASAR = 81, 00418 XDCFI_SAT_EARTHCARE = 91, 00419 XDCFI_SAT_SWARM_A = 101, 00420 XDCFI_SAT_SWARM_B = 102, 00421 XDCFI_SAT_SWARM_C = 103, 00422 XDCFI_SAT_SENTINEL_1A = 110, 00423 XDCFI_SAT_SENTINEL_1B = 111, 00424 XDCFI_SAT_SENTINEL_2 = 112, 00425 XDCFI_SAT_SENTINEL_3 = 113, 00426 XDCFI_SAT_SEOSAT = 120, 00427 XDCFI_SAT_SENTINEL_1C = 125, 00428 XDCFI_SAT_SENTINEL_2A = 126, 00429 XDCFI_SAT_SENTINEL_2B = 127, 00430 XDCFI_SAT_SENTINEL_2C = 128, 00431 XDCFI_SAT_SENTINEL_3A = 129, 00432 XDCFI_SAT_SENTINEL_3B = 130, 00433 XDCFI_SAT_SENTINEL_3C = 131, 00434 XDCFI_SAT_JASON_CSA = 132, // AN-531 00435 XDCFI_SAT_JASON_CSB = 133, // AN-531 00436 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00437 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00438 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00439 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00440 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00441 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00442 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00443 XDCFI_SAT_BIOMASS = 141, // AN-601 00444 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00445 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00446 XDCFI_SAT_GENERIC = 200, 00447 XDCFI_SAT_GENERIC_GEO = 300, 00448 XDCFI_SAT_MTG = 301, 00449 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00450 } XDSatIdEnum; 00451 00453 typedef enum 00454 { 00455 XDCFI_BULLETIN_A = 0, 00456 XDCFI_BULLETIN_B 00457 } XDBulletinTypeEnum; 00458 00460 typedef enum 00461 { 00462 XDCFI_NO_CACHE = 0, 00463 XDCFI_PRELOAD_CACHE, 00464 XDCFI_FIFO_CACHE 00465 } DemCacheTypeEnum; // Added for AN-487 00466 00468 typedef enum 00469 { 00470 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00471 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00472 } DemGeoidFlagEnum; // AN-466 00473 00475 typedef enum 00476 { 00477 XDCFI_ATT_NONE_MODEL = 0, 00478 XDCFI_ATT_AOCS_MODEL, 00479 XDCFI_ATT_PARAMETER_MODEL, 00480 XDCFI_ATT_HARMONIC_MODEL, 00481 XDCFI_ATT_FILE_MODEL, 00482 XDCFI_ATT_ANGLE_MODEL, 00483 XDCFI_ATT_MATRIX_MODEL, 00484 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00485 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00486 } AttDefModelEnum; // AN-469 00487 00489 typedef enum 00490 { 00491 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00492 XDCFI_SAT_ATT_DEF, 00493 XDCFI_INSTR_ATT_DEF 00494 } XDAttDefFrameEnum; // AN-469 00495 00497 typedef enum 00498 { 00499 XDCFI_AOCS_GPM = 0, 00500 XDCFI_AOCS_LNP, 00501 XDCFI_AOCS_YSM, 00502 XDCFI_AOCS_ZDOPPLER 00503 } XDSatNominalAttAocsModeEnum; // AN-469 00504 00506 typedef enum 00507 { 00508 XDCFI_MODEL_GENERIC = 0, 00509 XDCFI_MODEL_ENVISAT, 00510 XDCFI_MODEL_CRYOSAT, 00511 XDCFI_MODEL_ADM, 00512 XDCFI_MODEL_SENTINEL1, 00513 XDCFI_MODEL_SENTINEL2, 00514 XDCFI_MODEL_GEO 00515 } XDSatNominalAttModelEnum; // AN-469 00516 00518 typedef enum 00519 { 00520 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00521 XDCFI_ANGLE_TYPE_MEAN_LAT_TOD, 00522 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00523 } XDAngleTypeEnum; // AN-469 00524 00526 typedef enum 00527 { 00528 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00529 XDCFI_FIT_TLE_LIST, 00530 XDCFI_ONE_TLE_PER_OSV 00531 } XDTLEFitmodeEnum; 00532 00534 typedef enum 00535 { 00536 XDCFI_SP3_POSITION_TYPE, 00537 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00538 } XDCFISP3FileTypeEnum; // AN-550 00539 00541 typedef enum 00542 { 00543 XDCFI_SP3_GPS = 0, 00544 XDCFI_SP3_MIXED, 00545 XDCFI_SP3_GLONASS, 00546 XDCFI_SP3_LEO, 00547 XDCFI_SP3_GALILEO, 00548 XDCFI_SP3_COMPASS, 00549 XDCFI_SP3_QZSS 00550 } XDCFISP3FileDescriptorEnum; // AN-550 00551 00553 typedef enum 00554 { 00555 XDCFI_SP3_TIME_GPS = 0, 00556 XDCFI_SP3_TIME_GLONASS, 00557 XDCFI_SP3_TIME_GALILEO, 00558 XDCFI_SP3_TIME_TAI, 00559 XDCFI_SP3_TIME_UTC, 00560 XDCFI_SP3_TIME_QZSS 00561 } XDCFISP3TimeSystemEnum; 00562 00564 typedef enum 00565 { 00566 XDCFI_SAT_GPS = 0, 00567 XDCFI_SAT_GLONASS, 00568 XDCFI_SAT_LEO, 00569 XDCFI_SAT_GALILEO, 00570 XDCFI_SAT_COMPASS, 00571 XDCFI_SAT_QZSS 00572 } XDCFISATSP3SatDescriptorEnum; 00573 00575 typedef enum 00576 { 00577 XDCFI_DORIS_CRYOSAT_TYPE, 00578 XDCFI_DORIS_SENTINEL3_TYPE 00579 } XDDORISFileTypeEnum; 00580 00581 //------------------------------------------------------ 00582 // DATA STRUCTURES 00583 //------------------------------------------------------ 00584 00588 class XD_DECL AngleModel 00589 { 00590 public: 00591 00592 //Attributes 00593 double angles[3]; 00594 double offsets[3]; 00595 00597 AngleModel(){}; 00598 00600 AngleModel( double *angle, double *offset) 00601 { 00602 for ( int i = 0 ; i < 3 ; ++i) 00603 { 00604 angles[i] = angle[i]; 00605 offsets[i] = offset[i]; 00606 }// end for i 00607 } 00608 }; 00609 00613 class XD_DECL Asar 00614 { 00615 public: 00616 //Attributes 00617 long asarType; 00618 double slantRangeLeft; 00619 double slantRangeRight; 00620 00622 Asar(){}; 00623 00628 Asar( const long asarTyp, double slantLeft, double slantRight) 00629 { 00630 asarType = asarTyp; 00631 slantRangeLeft = slantLeft; 00632 slantRangeRight = slantRight; 00633 } 00634 };//class Asar 00635 00636 00640 class XD_DECL BulbTable 00641 { 00642 public: 00643 double day; 00644 double ut1Utc; 00645 double ut1Tai; 00646 00648 BulbTable(){}; 00649 00651 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00652 { 00653 day = dayUtc; 00654 ut1Utc = diffUt1Utc; 00655 ut1Tai = diffUt1Tai; 00656 } 00657 00658 }; 00659 00663 class XD_DECL DemPoint 00664 { 00665 public: 00666 00667 //Attributes 00668 double lon; 00669 double lat; 00670 double alt; 00671 00673 DemPoint(){}; 00674 00676 DemPoint( double longitude, double latitude, double altitude) 00677 { 00678 lon = longitude; 00679 lat = latitude; 00680 alt = altitude; 00681 } 00682 }; 00683 00687 class XD_DECL DorisHeader 00688 { 00689 public: 00690 //Atributtes 00691 string fileName; 00692 string sensingStart; // UTC 00693 string sensingStop; // UTC 00694 long relOrbit; 00695 long absOrbit; 00696 double deltaUt1; 00697 string leapUtc; 00698 int leapSign; 00699 int leapErr; 00700 long numDsd; 00701 long dsOffset; 00702 long numDsr; 00703 00704 // extra data: the following values are not read from the file. 00705 // but it must be provided for the writing function 00706 //MPH 00707 string procStageCode; 00708 string refDoc; 00709 string procTime; 00710 string softwareVersion; 00711 string phase; 00712 long cycle; 00713 string stateVectorTime; 00714 double xPosition; 00715 double yPosition; 00716 double zPosition; 00717 double xVelocity; 00718 double yVelocity; 00719 double zVelocity; 00720 string stateVectorSource; 00721 string productErr; 00722 long totSize; 00723 long numDataSets; 00724 00725 //SPH 00726 string sphDescriptor; 00727 string sensingStartTai; // TAI 00728 long absOrbitStart; 00729 double relTimeAscNodeStart; 00730 string sensingStopTai; // TAI 00731 long absOrbitStop; 00732 double relTimeAscNodeStop; 00733 string equatorCrossTime; 00734 long equatorCrossLong; 00735 string ascendingFlag; 00736 long startLat; 00737 long startLong; 00738 long stopLat; 00739 long stopLong; 00740 long numIsps; 00741 long numMissingIsps; 00742 long numErrorIsps; 00743 long numDiscardedIsps; 00744 long numRsIsps; 00745 long numRsCorrections; 00746 long dsrSize; 00747 00749 DorisHeader(); 00750 00752 DorisHeader(string fileNam, 00753 string senStart, 00754 string sensStop, 00755 long relOrbi, 00756 long absOrbi, 00757 double delta_Ut1, 00758 string leap_Utc, 00759 int leap_Sign, 00760 int leap_Err, 00761 long num_Dsd, 00762 long ds_Offset, 00763 long num_Dsr); 00764 00766 DorisHeader(string fileNam, 00767 string sensStart, 00768 string sensStop, 00769 long relOrbi, 00770 long absOrbi, 00771 double delta_Ut1, 00772 string leap_Utc, 00773 int leap_Sign, 00774 int leap_Err, 00775 long num_Dsd, 00776 long ds_Offset, 00777 long num_Dsr, 00778 string procStageCod, 00779 string ref_Doc, 00780 string procTim, 00781 string softVersion, 00782 string phaseIn, 00783 long cycleIn, 00784 string stateVectorTim, 00785 double xPos, 00786 double yPos, 00787 double zPos, 00788 double xVel, 00789 double yVel, 00790 double zVel, 00791 string stateVectSource, 00792 string prodErr, 00793 long tot_Size, 00794 long numDataSet, 00795 string sphDesc, 00796 string sensStartTai, 00797 long absOrbStart, 00798 double relTimAscNodeStart, 00799 string sensStopTai, 00800 long absOrbStop, 00801 double relTimAscNodeStop, 00802 string equator_CrossTime, 00803 long equator_CrossLong, 00804 string ascendFlag, 00805 long start_Lat, 00806 long start_Long, 00807 long stop_Lat, 00808 long stop_Long, 00809 long num_Isps, 00810 long numMissIsps, 00811 long numErrIsps, 00812 long numDiscardIsps, 00813 long num_RsIsps, 00814 long num_RsCorrections, 00815 long dsr_Size 00816 ); 00817 00818 }; 00819 00823 class XD_DECL FileModel 00824 { 00825 public: 00826 00827 //Attributes 00828 vector<string> files; 00829 string auxFile; 00830 long timeRef; 00831 double time0; 00832 double time1; 00833 00835 FileModel(){}; 00836 00838 FileModel( vector<string> &fileNames, 00839 const string auxiliaryFile, 00840 const long timeReference, 00841 const double timeZero, 00842 const double timeOne ) 00843 { 00844 files = fileNames; 00845 auxFile = auxiliaryFile; 00846 timeRef = timeReference; 00847 time0 = timeZero; 00848 time1 = timeOne; 00849 } 00850 00851 }; 00852 00856 class XD_DECL HarmonicData 00857 { 00858 public: 00859 00860 //Attributes 00861 vector<long> harmonicTypePitch; 00862 vector<long> harmonicTypeRoll; 00863 vector<long> harmonicTypeYaw; 00864 vector<double> harmonicCoeffPitch; 00865 vector<double> harmonicCoeffRoll; 00866 vector<double> harmonicCoeffYaw; 00867 00869 HarmonicData(){}; 00870 00872 HarmonicData( vector<long> &harmonicTypPitch, 00873 vector<long> &harmonicTypRoll, 00874 vector<long> &harmonicTypYaw, 00875 vector<double> &harmonicCoefPitch, 00876 vector<double> &harmonicCoefRoll, 00877 vector<double> &harmonicCoefYaw ) 00878 { 00879 harmonicTypePitch = harmonicTypPitch; 00880 harmonicTypeRoll = harmonicTypRoll; 00881 harmonicTypeYaw = harmonicTypYaw; 00882 harmonicCoeffPitch = harmonicCoefPitch; 00883 harmonicCoeffRoll = harmonicCoefRoll; 00884 harmonicCoeffYaw = harmonicCoefYaw; 00885 } 00886 00887 }; 00888 00892 class XD_DECL HarmonicModel 00893 { 00894 public: 00895 00896 //Attributes 00897 long angleType; 00898 HarmonicData harmonicData; 00899 double offsets[3]; 00900 00902 HarmonicModel(){}; 00903 00905 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00906 { 00907 angleType = angleTyp; 00908 harmonicData = harmonicDat; 00909 00910 for ( int i = 0 ; i < 3 ; ++i ) 00911 { 00912 offsets[i] = offset[i]; 00913 } 00914 } 00915 }; 00916 00920 class XD_DECL MatrixModel 00921 { 00922 public: 00923 00924 //Attributes 00925 double attMatrix[3][3]; 00926 double offsets[3]; 00927 00929 MatrixModel(){}; 00930 00932 MatrixModel( double **matrix, double *offset ) 00933 { 00934 for ( int i = 0 ; i < 3 ; ++i) 00935 { 00936 for ( int j = 0 ; j < 3 ; ++j ) 00937 { 00938 attMatrix[i][j] = matrix[i][j]; 00939 }// end for j 00940 offsets[i] = offset[i]; 00941 }// end for i 00942 } 00943 }; 00944 00948 class XD_DECL MlstHarmonics 00949 { 00950 public: 00951 00952 //Attributes 00953 double refTime; 00954 double period; 00955 double sinAmplitude; 00956 double cosAmplitude; 00957 00959 MlstHarmonics() 00960 { 00961 refTime = 0.; 00962 period = 1.; 00963 sinAmplitude = 0.; 00964 cosAmplitude = 0.; 00965 }; 00966 00968 MlstHarmonics(double time_in, double period_in, 00969 double sinAmp_in, double cosAmp_in) 00970 { 00971 refTime = time_in; 00972 period = period_in; 00973 sinAmplitude = sinAmp_in; 00974 cosAmplitude = cosAmp_in; 00975 } 00976 }; 00977 00981 class XD_DECL MlstNonlinearDrift 00982 { 00983 public: 00984 00985 //Attributes 00986 long linearApproxValidity; 00987 double quadraticTerm; 00988 vector<MlstHarmonics> mlstHarmonics; 00989 00991 MlstNonlinearDrift() 00992 { 00993 long i; 00994 00995 linearApproxValidity = 99999; 00996 quadraticTerm = 0.; 00997 for (i = 0 ; i < 2 ; i ++ ) 00998 { 00999 mlstHarmonics.push_back(MlstHarmonics()); 01000 } 01001 }; 01002 01004 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 01005 { 01006 linearApproxValidity = linApprox; 01007 quadraticTerm = quadratic; 01008 mlstHarmonics = harmonics; 01009 } 01010 }; 01011 01015 class XD_DECL ParamModel 01016 { 01017 public: 01018 01019 //Attributes 01020 long model; 01021 vector<double> modelParam; 01022 01024 ParamModel(){}; 01025 01027 ParamModel( const long mod, vector<double> &modParam) 01028 { 01029 model = mod; 01030 modelParam = modParam; 01031 } 01032 }; 01033 01037 class XD_DECL SwathGeometry 01038 { 01039 public: 01040 01041 //Attributes 01042 long geometryType; 01043 double azimuth; 01044 double elevation; 01045 double altitude; 01046 double distance; 01047 01049 SwathGeometry(){}; 01050 01052 SwathGeometry( long geomType, double azim, double elevat, 01053 double alt, double dist) 01054 { 01055 geometryType = geomType; 01056 azimuth = azim; 01057 elevation = elevat; 01058 altitude = alt; 01059 distance = dist; 01060 } 01061 }; 01062 01066 class XD_DECL TrackerLimits 01067 { 01068 public: 01069 01070 //Attributes 01071 double maxPenalty; 01072 double normThr; 01073 double maxGap; 01074 01076 TrackerLimits(){}; 01077 01079 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 01080 { 01081 maxPenalty = maxPenal; 01082 normThr = normThreshold; 01083 maxGap = maximumGap; 01084 } 01085 }; 01086 01090 class XD_DECL StfPt 01091 { 01092 public: 01093 01094 //Attributes 01095 double lon; 01096 double lat; 01097 01099 StfPt(){}; 01100 01102 StfPt( double longitude, double latitude ) 01103 { 01104 lon = longitude; 01105 lat = latitude; 01106 } 01107 }; 01108 01112 class XD_DECL StfVhr 01113 { 01114 public: 01115 01116 //Attributes 01117 string stfName; 01118 string ReferenceOSF; 01119 string ReferenceSDF; 01120 long swathType; 01121 long swathPointType; 01122 01123 double timeStep; 01124 long refractionMode; 01125 double frequency; 01126 01127 long numPoints; 01128 vector<double> altitude; 01129 01130 bool geometryFlag; 01131 01132 long repCycle; 01133 long cycleLength; 01134 double mlstDrift; 01135 01136 long absOrbit; 01137 long orbitStart; 01138 long orbitStop; 01139 01140 double position[3]; 01141 double velocity[3]; 01142 01144 StfVhr(); 01145 01147 StfVhr( string stfNam, 01148 string refOSF, 01149 string refSDF, 01150 long swathTyp, 01151 long swathPointTyp, 01152 double timStep, 01153 long refrMode, 01154 double freq, 01155 long numP, 01156 const vector<double> &alt, 01157 bool geomFlag, 01158 long repCycl, 01159 long cyclLength, 01160 double meanlstDrift, 01161 long absOrb, 01162 long orbit0, 01163 long orbit1, 01164 double *pos, 01165 double *vel 01166 ); 01167 01169 StfVhr( const StfVhr &stfVhr ); 01170 01172 ~StfVhr(); 01173 01175 void operator=( const StfVhr &stfVhr ); 01176 01177 };//class StfVhr 01178 01182 class XD_DECL ZonePoint 01183 { 01184 public: 01185 01186 //Attributes 01187 double ptLong; 01188 double ptLat; 01189 01191 ZonePoint(){}; 01192 01194 ZonePoint( double ptLongitude, double ptLatitude) 01195 { 01196 ptLong = ptLongitude; 01197 ptLat = ptLatitude; 01198 } 01199 }; 01200 01204 class XD_DECL AttitudeModel 01205 { 01206 public: 01207 //Attributes 01208 long attitudeModel; 01209 long AOCS; 01210 ParamModel *paramModel; 01211 HarmonicModel *harmonicModel; 01212 FileModel *fileModel; 01213 AngleModel *angleModel; 01214 MatrixModel *matrixModel; 01215 01217 AttitudeModel(); 01218 01220 AttitudeModel( long attModel, 01221 long AOCSModel, 01222 ParamModel &parMod, 01223 HarmonicModel &harmMod, 01224 FileModel &fileMod, 01225 AngleModel &angleMod, 01226 MatrixModel &matrixMod 01227 ); 01228 01230 AttitudeModel( const AttitudeModel &attModel ); 01231 01233 ~AttitudeModel(); 01234 01236 void operator=( const AttitudeModel &attModel ); 01237 01238 protected: 01239 01240 private: 01242 void eraseAttitude(); 01243 }; 01244 01248 class XD_DECL PolarMotionParams 01249 { 01250 public: 01251 //Attributes 01252 double x; 01253 double y; 01254 01256 PolarMotionParams() 01257 { 01258 x = 0.; 01259 y = 0.; 01260 } 01261 01263 PolarMotionParams( double x1, double y1 ) 01264 { 01265 x = x1; 01266 y = y1; 01267 } 01268 01269 }; 01270 01274 class XD_DECL IersBulletinBrec 01275 { 01276 public: 01277 double day; 01278 double ut1Utc; 01279 double ut1Tai; 01280 PolarMotionParams polarMotionParams; 01281 01283 IersBulletinBrec() 01284 { 01285 day = 0.; 01286 ut1Utc = 0.; 01287 ut1Tai = 0.; 01288 } 01289 01291 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01292 PolarMotionParams polarMotion) 01293 { 01294 day = dayUtc; 01295 ut1Utc = diffUt1Utc; 01296 ut1Tai = diffUt1Tai; 01297 polarMotionParams = polarMotion; 01298 } 01299 01300 }; 01301 01305 class XD_DECL IersBulletinArec 01306 { 01307 public: 01308 double day; 01309 double ut1Utc; 01310 double ut1Tai; 01311 PolarMotionParams polarMotionParams; 01312 01314 IersBulletinArec() 01315 { 01316 day = 0.; 01317 ut1Utc = 0.; 01318 ut1Tai = 0.; 01319 } 01320 01322 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01323 PolarMotionParams polarMotion) 01324 { 01325 day = dayUtc; 01326 ut1Utc = diffUt1Utc; 01327 ut1Tai = diffUt1Tai; 01328 polarMotionParams = polarMotion; 01329 } 01330 01331 }; 01332 01336 class XD_DECL PolarMotionFormula 01337 { 01338 public: 01339 01340 double ax; 01341 double bx; 01342 double cx; 01343 double dx; 01344 double ex; 01345 01346 double ay; 01347 double by; 01348 double cy; 01349 double dy; 01350 double ey; 01351 01352 double Aref; 01353 double Adiv; 01354 double Cref; 01355 double Cdiv; 01356 01358 PolarMotionFormula() 01359 { 01360 ax = 0.; 01361 bx = 0.; 01362 cx = 0.; 01363 dx = 0.; 01364 ex = 0.; 01365 01366 ay = 0.; 01367 by = 0.; 01368 cy = 0.; 01369 dy = 0.; 01370 ey = 0.; 01371 01372 Aref = 0.; 01373 Adiv = 0.; 01374 Cref = 0.; 01375 Cdiv = 0.; 01376 } 01377 01379 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01380 double a2, double b2, double c2, double d2, double e2, 01381 double Ar, double Ad, double Cr, double Cd) 01382 { 01383 ax = a1; 01384 bx = b1; 01385 cx = c1; 01386 dx = d1; 01387 ex = e1; 01388 01389 ay = a2; 01390 by = b2; 01391 cy = c2; 01392 dy = d2; 01393 ey = e2; 01394 01395 Aref = Ar; 01396 Adiv = Ad; 01397 Cref = Cr; 01398 Cdiv = Cd; 01399 } 01400 01401 }; 01402 01406 class XD_DECL TimeCorrelationFormula 01407 { 01408 public: 01409 01410 double a; 01411 double b; 01412 double bRef; 01413 01415 TimeCorrelationFormula() 01416 { 01417 a = 0.; 01418 b = 0.; 01419 bRef = 0.; 01420 } 01421 01423 TimeCorrelationFormula(double a1, double b1, double br) 01424 { 01425 a = a1; 01426 b = b1; 01427 bRef = br; 01428 } 01429 }; 01430 01434 class XD_DECL IersBulletinBFile 01435 { 01436 public: 01437 01438 string bulletinId; 01439 vector<IersBulletinBrec> finalTable; 01440 vector<IersBulletinBrec> preliminaryTable; 01441 01443 IersBulletinBFile() 01444 { 01445 bulletinId = ""; 01446 } 01447 01449 IersBulletinBFile(string bulId, 01450 vector<IersBulletinBrec> &vecFinal, 01451 vector<IersBulletinBrec> &vecPrel) 01452 { 01453 bulletinId = bulId; 01454 finalTable = vecFinal; 01455 preliminaryTable = vecPrel; 01456 } 01457 01458 };//class IersBulletinBFile 01459 01463 class XD_DECL IersBulletinAFile 01464 { 01465 public: 01466 01467 string bulletinId; 01468 vector<IersBulletinArec> predictionTable; 01469 PolarMotionFormula polarMotionFormula; 01470 TimeCorrelationFormula timeCorrelationFormula; 01471 01473 IersBulletinAFile() 01474 { 01475 bulletinId = ""; 01476 } 01477 01479 IersBulletinAFile(string bulId, 01480 vector<IersBulletinArec> &vecPred, 01481 PolarMotionFormula &polarFormula, 01482 TimeCorrelationFormula &timeFormula) 01483 { 01484 bulletinId = bulId; 01485 predictionTable = vecPred; 01486 polarMotionFormula = polarFormula; 01487 timeCorrelationFormula = timeFormula; 01488 } 01489 01490 };//class IersBulletinAFile 01491 01495 class XD_DECL DemMiniTiles 01496 { 01497 public: 01498 string fileName; 01499 double lonSize; 01500 double latSize; 01501 01503 DemMiniTiles() 01504 { 01505 fileName = ""; 01506 lonSize = 0.; 01507 latSize = 0.; 01508 } 01509 01511 DemMiniTiles(string fileN, double lon, double lat) 01512 { 01513 fileName = fileN; 01514 lonSize = lon; 01515 latSize = lat; 01516 } 01517 }; // AN-492 01518 01522 class XD_DECL QuaternionPlusAngle 01523 { 01524 public: 01525 01526 //Attributes 01527 long inertialFrame; 01528 vector<AttRec> quat; 01529 AngleModel angleModel; 01530 01532 QuaternionPlusAngle(){}; 01533 01535 QuaternionPlusAngle( long frame, vector<AttRec> attvec, AngleModel &angModel ) 01536 { 01537 inertialFrame = frame; 01538 quat = attvec; 01539 angleModel = angModel; 01540 } 01541 }; // AN-469 01542 01543 // 01546 class XD_DECL QuaternionPlusMatrix 01547 { 01548 public: 01549 01550 //Attributes 01551 long inertialFrame; 01552 vector<AttRec> quat; 01553 MatrixModel matrixModel; 01554 01556 QuaternionPlusMatrix(){}; 01557 01559 QuaternionPlusMatrix( long frame, vector<AttRec> attvec, MatrixModel &matModel ) 01560 { 01561 inertialFrame = frame; 01562 quat = attvec; 01563 matrixModel = matModel; 01564 } 01565 }; // AN-469 01566 01570 class XD_DECL AttitudeDefinitionModel 01571 { 01572 public: 01573 //Attributes 01574 long attitudeModel; 01575 long AOCS; 01576 ParamModel *paramModel; 01577 HarmonicModel *harmonicModel; 01578 FileModel *fileModel; 01579 AngleModel *angleModel; 01580 MatrixModel *matrixModel; 01581 QuaternionPlusAngle *quaternionAngleModel; 01582 QuaternionPlusMatrix * quaternionMatrixModel; 01583 01585 AttitudeDefinitionModel(); 01586 01588 AttitudeDefinitionModel( long attModel, 01589 long AOCSModel, 01590 ParamModel &parMod, 01591 HarmonicModel &harmMod, 01592 FileModel &fileMod, 01593 AngleModel &angleMod, 01594 MatrixModel &matrixMod, 01595 QuaternionPlusAngle &quatAngMod, 01596 QuaternionPlusMatrix &quatMatMod 01597 ); 01598 01600 AttitudeDefinitionModel( const AttitudeDefinitionModel &attModel ); 01601 01603 ~AttitudeDefinitionModel(); 01604 01606 void operator=( const AttitudeDefinitionModel &attModel ); 01607 01608 protected: 01609 01610 private: 01612 void eraseAttitude(); 01613 }; // AN-469 01614 01615 }//end EECFI 01616 01617 #endif