Earth Observation Mission CFI Software DataHandling Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.26 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 <AttRec.h> 00019 #include <DataHandlingDllExport.h> 00020 #include <cstring> 00021 #include <string> 00022 #include <vector> 00023 #define MaxStationVertices 999 00024 00025 //--NAMESPACES-------------------------------------------------------- 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 XDCFI_SWATH_ASAR_GEOM_RANGERATE_ALGO, 00111 XDCFI_SWATH_INCIDENCE_ANGLE_GEOM // AN-665 00112 } SwathGeomEnum; 00113 00115 typedef enum 00116 { 00117 XDCFI_NOT_DEFINED = -1, 00118 XDCFI_POINT = 0, 00119 XDCFI_CIRCLE = 1, 00120 XDCFI_SEGMENT = 2, 00121 XDCFI_POLYGON = 3 00122 } ZoneTypeEnum; 00123 00125 typedef enum 00126 { 00127 XDCFI_SAT_ORBITAL_REF = 0, 00128 XDCFI_SAT_NOMINAL_ATT, 00129 XDCFI_SAT_ATT, 00130 XDCFI_INSTR_ATT 00131 } AttitudeFrameEnum; 00132 00134 typedef enum 00135 { 00136 XDCFI_BAR_MEAN_2000 = 1, 00137 XDCFI_HEL_MEAN_2000, 00138 XDCFI_GEO_MEAN_2000, 00139 XDCFI_MEAN_DATE, 00140 XDCFI_TRUE_DATE, 00141 XDCFI_PSEUDO_EARTH_FIXED, 00142 XDCFI_EARTH_FIXED, 00143 XDCFI_LIF, 00144 XDCFI_BAR_MEAN_1950, 00145 XDCFI_GALACTIC, 00146 XDCFI_SAT_ACT_REF, 00147 XDCFI_QUASI_MEAN_DATE, 00148 XDCFI_PSE_TRUE_DATE, 00149 XDCFI_TOPOCENTRIC, 00150 XDCFI_SAT_REF, 00151 XDCFI_SAT_REL_REF 00152 } CoordinateSystemsEnum; // Updated for AN-509 00153 00155 typedef enum 00156 { 00157 XDCFI_3_ADJUST_NOMI = 1, 00158 XDCFI_4_ADJUST_DMAN, 00159 XDCFI_5_INTERP_DGAP, 00160 XDCFI_6_EXTRAP_LT1D, 00161 XDCFI_7_EXTRAP_1D2D, 00162 XDCFI_8_EXTRAP_GT2D, 00163 XDCFI_8_EXTRAP_AMAN, 00164 XDCFI_Q_INDEX_MAX_ENUM 00165 } QualityIndexEnum; 00166 00168 typedef enum 00169 { 00170 XDCFI_SCF_DRAW_SOLID, 00171 XDCFI_SCF_DRAW_DASHED, 00172 XDCFI_SCF_DRAW_DOTTED, 00173 XDCFI_SCF_DRAW_TIMELINE 00174 } SCFDrawModesEnum; 00175 00177 typedef enum 00178 { 00179 XDCFI_SCF_FILL_SOLID, 00180 XDCFI_SCF_FILL_HOLLOW 00181 } SCFFillModesEnum; 00182 00184 typedef enum 00185 { 00186 XDCFI_EVENT_TYPE_NONE, 00187 XDCFI_EVENT_TYPE_ZONE, 00188 XDCFI_EVENT_TYPE_STATION, 00189 XDCFI_EVENT_TYPE_GEO 00190 } SCFEventTypeEnum; 00191 00193 typedef enum 00194 { 00195 XDCFI_SEL_FILE = 0, 00196 XDCFI_SEL_TIME, 00197 XDCFI_SEL_ORBIT, 00198 XDCFI_SEL_DEFAULT, 00199 XDCFI_SEL_NONE 00200 } TimeInitModeEnum; 00201 00203 typedef enum 00204 { 00205 XDCFI_TIME_UNDEF = -1, 00206 XDCFI_TIME_TAI, 00207 XDCFI_TIME_UTC, 00208 XDCFI_TIME_UT1, 00209 XDCFI_TIME_GPS 00210 } TimeRefDataHandlingEnum; 00211 00213 typedef enum 00214 { 00215 XDCFI_EXTEND_NUM_OSV = 0, 00216 XDCFI_EXTEND_TIME 00217 } ExtendTypeEnum; 00218 00220 typedef enum 00221 { 00222 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00223 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00224 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00225 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00226 } TimeRefOfDataHandlingEnum; 00227 00229 typedef enum 00230 { 00231 XDCFI_READ_DB = 0, 00232 XDCFI_GNOMONIC = 1, 00233 XDCFI_RECTANGULAR = 2 00234 } ProjectionEnum; 00235 00237 typedef enum 00238 { 00239 XDCFI_ATT_NONE = 0, 00240 XDCFI_ATT_AOCS, 00241 XDCFI_ATT_PARAM, 00242 XDCFI_ATT_HARMONIC, 00243 XDCFI_ATT_FILE, 00244 XDCFI_ATT_ANGLE, 00245 XDCFI_ATT_MATRIX 00246 } AttModelEnum; 00247 00249 typedef enum 00250 { 00251 XDCFI_ORBIT_FILE, 00252 XDCFI_OSF_FILE, 00253 XDCFI_DORIS_FILE, 00254 XDCFI_IERS_BULLETIN_FILE, 00255 XDCFI_USER_OSV_LIST, 00256 XDCFI_SP3_FILE, // AN-550 00257 XDCFI_POF_FILE, 00258 XDCFI_ROF_FILE, 00259 XDCFI_SDF_FILE, 00260 XDCFI_STF_FILE, 00261 XDCFI_ATTITUDE_FILE, 00262 XDCFI_DEM_CONF_FILE, 00263 XDCFI_DEM_FILE, 00264 XDCFI_ZONE_FILE, 00265 XDCFI_STATION_FILE, 00266 XDCFI_STAR_FILE, 00267 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00268 XDCFI_ATT_STAR_TRACKER_FILE, 00269 XDCFI_TLE_FILE, 00270 XDCFI_ATTITUDE_DEFINITION_FILE, // AN-469 00271 XDCFI_OEM_FILE, // AN-578 00272 XDCFI_FOV_CONSTRAINTS_FILE, // AN-628 00273 XDCFI_AEM_FILE // AN-578 00274 } FileEnum; // Updated for AN-527, to have it alligned with XD_data_file_type_enum 00275 00277 typedef enum 00278 { 00279 XDCFI_UNKNOWN_TYPE = -1, 00280 XDCFI_AUTO, 00281 XDCFI_ORBIT_CHANGE, 00282 XDCFI_STATE_VECTOR, 00283 XDCFI_OSF_TYPE, 00284 XDCFI_POF_TYPE, 00285 XDCFI_ROF_TYPE, 00286 XDCFI_DORIS_TYPE, 00287 XDCFI_POF_N_DORIS_TYPE, 00288 XDCFI_OEF_OSF_TYPE, 00289 XDCFI_OEF_POF_TYPE, 00290 XDCFI_IERS_B_TYPE, 00291 XDCFI_TLE_TYPE, 00292 XDCFI_STF_TYPE, 00293 XDCFI_DORISPREC_TYPE, 00294 XDCFI_DORISPREM_TYPE, 00295 XDCFI_ATT_TYPE, 00296 XDCFI_SCF_TYPE, 00297 XDCFI_PRECISE_PROPAG_TYPE, 00298 XDCFI_DEMCFG_TYPE, 00299 XDCFI_SATCFG_TYPE, 00300 XDCFI_GND_DB_TYPE, 00301 XDCFI_SW_DEF_TYPE, 00302 XDCFI_ZON_DB_TYPE, 00303 XDCFI_STR1ATT_TYPE, 00304 XDCFI_IERS_A_TYPE, 00305 XDCFI_IERS_B_AND_A_TYPE, 00306 XDCFI_ATT_DEF_TYPE, 00307 XDCFI_USER_OSV_LIST_TYPE, 00308 XDCFI_SP3_TYPE, /* AN-550 */ 00309 XDCFI_OSF_POF_MODE, // AN-527 00310 XDCFI_OSF_ROF_MODE, // AN-527 00311 XDCFI_OSF_DORIS_MODE, // AN-527 00312 XDCFI_OEM_TYPE, // AN-578 00313 XDCFI_OSF_OEM_MODE, // AN-578 00314 XDCFI_FILE_TYPE_MAX_VALUE 00315 } FileTypeEnum; 00316 00318 typedef enum 00319 { 00320 XDCFI_DEM_ACE_MODEL = 0, 00321 XDCFI_DEM_GETASSE30_V1, 00322 XDCFI_DEM_GETASSE30_V2, 00323 XDCFI_DEM_ACE2_9SEC, 00324 XDCFI_DEM_GETASSE30_V3, /*AN-503*/ 00325 XDCFI_DEM_GDEM_V2, /*AN-504*/ 00326 XDCFI_DEM_ACE2_30SEC, /*AN-615*/ 00327 XDCFI_DEM_ACE2_3SEC, // AN-619 00328 XDCFI_DEM_ACE2_5MIN, // AN-726 00329 XDCFI_DEM_GENERIC, // AN-740 00330 XDCFI_DEM_TANDEMX_90, // AN-767 00331 XDCFI_DEM_GDEM_V3, // AN-827 00332 XDCFI_DEM_NUM_MODELS 00333 } DemModelEnum; 00334 00336 typedef enum 00337 { 00338 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00339 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00340 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00341 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00342 } DemGetasseDataSourceEnum; 00343 00345 typedef enum 00346 { 00347 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00348 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00349 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00350 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00351 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00352 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00353 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00354 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00355 } DemAce2DataSourceEnum; 00356 00358 typedef enum 00359 { 00360 XDCFI_DEM_GDEM_SOURCE_NO_SOURCE_FILE = -1, 00361 XDCFI_DEM_GDEM_SOURCE_SRTM3_V3 = 0, 00362 XDCFI_DEM_GDEM_SOURCE_SRTM3_V2, 00363 XDCFI_DEM_GDEM_SOURCE_NED, 00364 XDCFI_DEM_GDEM_SOURCE_CDED, 00365 XDCFI_DEM_GDEM_SOURCE_ALASKA_DEM 00366 } DemGdemV2DataSourceEnum; 00367 00369 typedef enum 00370 { 00371 XDCFI_DEM_CELL_CENTER, 00372 XDCFI_DEM_CELL_NORTHWEST, 00373 XDCFI_DEM_CELL_NORTHEAST, 00374 XDCFI_DEM_CELL_SOUTHEAST, 00375 XDCFI_DEM_CELL_SOUTHWEST, 00376 } DemCellLocationEnum; // AN-778 00377 00379 typedef enum 00380 { 00381 XDCFI_DEM_DATA_TYPE_INT16 = 0, 00382 XDCFI_DEM_DATA_TYPE_INT32, 00383 XDCFI_DEM_DATA_TYPE_INT64, 00384 XDCFI_DEM_DATA_TYPE_UINT16, 00385 XDCFI_DEM_DATA_TYPE_UINT32, 00386 XDCFI_DEM_DATA_TYPE_UINT64, 00387 XDCFI_DEM_DATA_TYPE_FLOAT32, 00388 XDCFI_DEM_DATA_TYPE_FLOAT64, 00389 XDCFI_DEM_DATA_TYPE_INT8, 00390 } DemDataTypesEnum; // AN-740 00391 00393 typedef enum 00394 { 00395 XDCFI_DEM_DATA_UNIT_METER = 0, 00396 XDCFI_DEM_DATA_UNIT_KILOMETER 00397 } DemDataUnitsEnum; // AN-740 00398 00400 typedef enum 00401 { 00402 XDCFI_DEM_DATA_REFERENCE_WGS84 = 0, 00403 XDCFI_DEM_DATA_REFERENCE_EGM96 00404 } DemDataReferencesEnum; // AN-740 00405 00407 typedef enum 00408 { 00409 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00410 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00411 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00412 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00413 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00414 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00415 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00416 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00417 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00418 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00419 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00420 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00421 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00422 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00423 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00424 XDCFI_CFI_READ_ATT_MAX_GAP_ERR, 00425 XDCFI_CFI_READ_ATT_OBSOLETE_TAG_WARN // AN-516 00426 } ReadAttErrEnum; 00427 00429 typedef enum 00430 { 00431 XDCFI_DEFAULT_VALUES = 0, 00432 XDCFI_USER_VALUES = 1 00433 } PrecisePropagUserFlagEnum; 00434 00436 typedef enum 00437 { 00438 XDCFI_NOT_SELECT = 0, 00439 XDCFI_SELECT = 1 00440 } PrecisePropagSelectionFlagEnum; 00441 00443 typedef enum 00444 { 00445 XDCFI_SGA_USE_PARAMETERS = 0, 00446 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00447 } PrecisePropagSgaFlagEnum; 00448 00450 typedef enum 00451 { 00452 XDCFI_SAT_DEFAULT = 0, 00453 XDCFI_SAT_DEFAULT1 = 1, 00454 XDCFI_SAT_DEFAULT2 = 2, 00455 XDCFI_SAT_DEFAULT3 = 3, 00456 XDCFI_SAT_DEFAULT4 = 4, 00457 XDCFI_SAT_DEFAULT5 = 5, 00458 XDCFI_SAT_DEFAULT6 = 6, 00459 XDCFI_SAT_DEFAULT7 = 7, 00460 XDCFI_SAT_DEFAULT8 = 8, 00461 XDCFI_SAT_DEFAULT9 = 9, 00462 XDCFI_SAT_ERS1 = 11, 00463 XDCFI_SAT_ERS2 = 12, 00464 XDCFI_SAT_ENVISAT = 21, 00465 XDCFI_SAT_METOP1 = 31, 00466 XDCFI_SAT_METOP2 = 32, 00467 XDCFI_SAT_METOP3 = 33, 00468 XDCFI_SAT_CRYOSAT = 41, 00469 XDCFI_SAT_ADM = 51, 00470 XDCFI_SAT_GOCE = 61, 00471 XDCFI_SAT_SMOS = 71, 00472 XDCFI_SAT_TERRASAR = 81, 00473 XDCFI_SAT_EARTHCARE = 91, 00474 XDCFI_SAT_SWARM_A = 101, 00475 XDCFI_SAT_SWARM_B = 102, 00476 XDCFI_SAT_SWARM_C = 103, 00477 XDCFI_SAT_SENTINEL_1A = 110, 00478 XDCFI_SAT_SENTINEL_1B = 111, 00479 XDCFI_SAT_SENTINEL_2 = 112, 00480 XDCFI_SAT_SENTINEL_3 = 113, 00481 XDCFI_SAT_SEOSAT = 120, 00482 XDCFI_SAT_SENTINEL_1C = 125, 00483 XDCFI_SAT_SENTINEL_2A = 126, 00484 XDCFI_SAT_SENTINEL_2B = 127, 00485 XDCFI_SAT_SENTINEL_2C = 128, 00486 XDCFI_SAT_SENTINEL_3A = 129, 00487 XDCFI_SAT_SENTINEL_3B = 130, 00488 XDCFI_SAT_SENTINEL_3C = 131, 00489 XDCFI_SAT_JASON_CSA = 132, // AN-531 00490 XDCFI_SAT_JASON_CSB = 133, // AN-531 00491 XDCFI_SAT_METOP_SG_A1 = 134, // AN-530 00492 XDCFI_SAT_METOP_SG_A2 = 135, // AN-530 00493 XDCFI_SAT_METOP_SG_A3 = 136, // AN-530 00494 XDCFI_SAT_METOP_SG_B1 = 137, // AN-530 00495 XDCFI_SAT_METOP_SG_B2 = 138, // AN-530 00496 XDCFI_SAT_METOP_SG_B3 = 139, // AN-530 00497 XDCFI_SAT_SENTINEL_5P = 140, // AN-502 00498 XDCFI_SAT_BIOMASS = 141, // AN-601 00499 XDCFI_SAT_SENTINEL_5 = 142, // AN-639 00500 XDCFI_SAT_SAOCOM_CS = 143, // AN-640 00501 XDCFI_SAT_FLEX = 144, /* AN-683 */ 00502 XDCFI_SAT_SENTINEL_6A = 145, /* AN-809 */ 00503 XDCFI_SAT_SENTINEL_6B = 146, /* AN-809 */ 00504 XDCFI_SAT_CIMR = 147, 00505 XDCFI_SAT_ROSEL = 148, 00506 XDCFI_SAT_CHIME = 149, 00507 XDCFI_SAT_CRISTAL = 150, 00508 XDCFI_SAT_CO2M = 151, 00509 XDCFI_SAT_LSTM = 152, 00510 XDCFI_SAT_FORUM = 153, 00511 XDCFI_SAT_TRUTHS = 154, 00512 XDCFI_SAT_GENERIC = 200, 00513 XDCFI_SAT_GENERIC_GEO = 300, 00514 XDCFI_SAT_MTG = 301, 00515 XDCFI_SAT_GENERIC_MEO = 400 // AN-550 00516 } XDSatIdEnum; 00517 00519 typedef enum 00520 { 00521 XDCFI_BULLETIN_A = 0, 00522 XDCFI_BULLETIN_B 00523 } XDBulletinTypeEnum; 00524 00526 typedef enum 00527 { 00528 XDCFI_NO_CACHE = 0, 00529 XDCFI_PRELOAD_CACHE, 00530 XDCFI_FIFO_CACHE 00531 } DemCacheTypeEnum; // Added for AN-487 00532 00534 typedef enum 00535 { 00536 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00537 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00538 } DemGeoidFlagEnum; // AN-466 00539 00541 typedef enum 00542 { 00543 XDCFI_ATT_NONE_MODEL = 0, 00544 XDCFI_ATT_AOCS_MODEL, 00545 XDCFI_ATT_PARAMETER_MODEL, 00546 XDCFI_ATT_HARMONIC_MODEL, 00547 XDCFI_ATT_FILE_MODEL, 00548 XDCFI_ATT_ANGLE_MODEL, 00549 XDCFI_ATT_MATRIX_MODEL, 00550 XDCFI_ATT_QUATERNION_ANGLE_MODEL, 00551 XDCFI_ATT_QUATERNION_MATRIX_MODEL 00552 } AttDefModelEnum; // AN-469 00553 00555 typedef enum 00556 { 00557 XDCFI_SAT_NOMINAL_ATT_DEF = 0, 00558 XDCFI_SAT_ATT_DEF, 00559 XDCFI_INSTR_ATT_DEF 00560 } XDAttDefFrameEnum; // AN-469 00561 00563 typedef enum 00564 { 00565 XDCFI_AOCS_GPM = 0, 00566 XDCFI_AOCS_LNP, 00567 XDCFI_AOCS_YSM, 00568 XDCFI_AOCS_ZDOPPLER 00569 } XDSatNominalAttAocsModeEnum; // AN-469 00570 00572 typedef enum 00573 { 00574 XDCFI_MODEL_GENERIC = 0, 00575 XDCFI_MODEL_ENVISAT, 00576 XDCFI_MODEL_CRYOSAT, 00577 XDCFI_MODEL_ADM, 00578 XDCFI_MODEL_SENTINEL1, 00579 XDCFI_MODEL_SENTINEL2, 00580 XDCFI_MODEL_GEO, 00581 XDCFI_MODEL_METOPSG /* AN-666 */ 00582 } XDSatNominalAttModelEnum; // AN-469 00583 00585 typedef enum 00586 { 00587 XDCFI_ANGLE_TYPE_TRUE_LAT_TOD = 0, 00588 XDCFI_ANGLE_TYPE_TRUE_LAT_EF /* AN-508 */ 00589 } XDAngleTypeEnum; // AN-469 00590 00592 typedef enum 00593 { 00594 XDCFI_FIT_TLE = 0, /*Used for POF, not valid for OSV LIST*/ 00595 XDCFI_FIT_TLE_LIST, 00596 XDCFI_ONE_TLE_PER_OSV 00597 } XDTLEFitmodeEnum; 00598 00600 typedef enum 00601 { 00602 XDCFI_SP3_POSITION_TYPE, 00603 XDCFI_SP3_POSITION_PLUS_VELOCITY_TYPE 00604 } XDCFISP3FileTypeEnum; // AN-550 00605 00607 typedef enum 00608 { 00609 XDCFI_SP3_GPS = 0, 00610 XDCFI_SP3_MIXED, 00611 XDCFI_SP3_GLONASS, 00612 XDCFI_SP3_LEO, 00613 XDCFI_SP3_GALILEO, 00614 XDCFI_SP3_COMPASS, 00615 XDCFI_SP3_QZSS 00616 } XDCFISP3FileDescriptorEnum; // AN-550 00617 00619 typedef enum 00620 { 00621 XDCFI_SP3_TIME_GPS = 0, 00622 XDCFI_SP3_TIME_GLONASS, 00623 XDCFI_SP3_TIME_GALILEO, 00624 XDCFI_SP3_TIME_TAI, 00625 XDCFI_SP3_TIME_UTC, 00626 XDCFI_SP3_TIME_QZSS 00627 } XDCFISP3TimeSystemEnum; 00628 00630 typedef enum 00631 { 00632 XDCFI_SAT_GPS = 0, 00633 XDCFI_SAT_GLONASS, 00634 XDCFI_SAT_LEO, 00635 XDCFI_SAT_GALILEO, 00636 XDCFI_SAT_COMPASS, 00637 XDCFI_SAT_QZSS 00638 } XDCFISATSP3SatDescriptorEnum; 00639 00641 typedef enum 00642 { 00643 XDCFI_DORIS_CRYOSAT_TYPE, 00644 XDCFI_DORIS_SENTINEL3_TYPE, 00645 XDCFI_DORIS_JASON_TYPE, // AN-701 00646 XDCFI_DORIS_UNKNOWN_TYPE // AN-701 00647 } XDDORISFileTypeEnum; // AN-524 00648 00650 typedef enum 00651 { 00652 XDCFI_FOV_CONSTRAINTS_SC_LINK, 00653 XDCFI_FOV_CONSTRAINTS_CELESTIAL_BODY_LINK, // AN-677 00654 XDCFI_FOV_CONTRAINTS_MAX 00655 } XD_Fov_constraints_enum; // AN-628 00656 00658 typedef enum 00659 { 00660 XDCFI_FALSE = 0, 00661 XDCFI_TRUE = 1 00662 } XDCFI_Boolean; // AN-628 00663 00664 /*ANR-638*/ 00665 typedef enum 00666 { 00667 XDCFI_FFS_DEFAULT = 0, 00668 XDCFI_FFS_V1, 00669 XDCFI_FFS_V2, 00670 XDCFI_FFS_V3, 00671 XDCFI_FFS_MAX, 00672 XD_FFS_ERROR 00673 } XDCFI_EOFFS_version; 00674 static const char file_format_standard_version[sizeof(XDCFI_EOFFS_version) + 2][250] = {"DEFAULT", "1.0", "2.0", "3.0", "MAX", "ERROR"}; 00675 00676 //------------------------------------------------------ 00677 // DATA STRUCTURES 00678 //------------------------------------------------------ 00679 00683 class XD_DECL AngleModel 00684 { 00685 public: 00686 // Attributes 00687 double angles[3]; 00688 double offsets[3]; 00689 00691 AngleModel() : 00692 angles(), offsets(){}; 00693 00695 AngleModel(double* angle, double* offset) : 00696 angles(), offsets() 00697 { 00698 std::memcpy(this->angles, angle, 3 * sizeof(double)); 00699 std::memcpy(this->offsets, offset, 3 * sizeof(double)); 00700 } 00701 }; 00702 00706 class XD_DECL Asar 00707 { 00708 public: 00709 // Attributes 00710 long asarType; 00711 double slantRangeLeft; 00712 double slantRangeRight; 00713 00715 Asar() : 00716 asarType(), slantRangeLeft(), slantRangeRight() {} 00717 00722 Asar(const long asarTyp, double slantLeft, double slantRight) : 00723 asarType(asarTyp), slantRangeLeft(slantLeft), slantRangeRight(slantRight) {} 00724 }; // class Asar 00725 00729 class XD_DECL BulbTable 00730 { 00731 public: 00732 double day; 00733 double ut1Utc; 00734 double ut1Tai; 00735 00737 BulbTable() : 00738 day(0.), ut1Utc(0.), ut1Tai(0.) {} 00739 00741 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) : 00742 day(dayUtc), ut1Utc(diffUt1Utc), ut1Tai(diffUt1Tai) {} 00743 }; 00744 00748 class XD_DECL DemPoint 00749 { 00750 public: 00751 // Attributes 00752 double lon; 00753 double lat; 00754 double alt; 00755 00757 DemPoint() : 00758 lon(0.), lat(0.), alt(0.) {} 00759 00761 DemPoint(double longitude, double latitude, double altitude) : 00762 lon(longitude), lat(latitude), alt(altitude) {} 00763 }; 00764 00768 class XD_DECL DorisHeader 00769 { 00770 public: 00771 // Atributtes 00772 std::string fileName; 00773 std::string sensingStart; // UTC 00774 std::string sensingStop; // UTC 00775 long relOrbit; 00776 long absOrbit; 00777 double deltaUt1; 00778 std::string leapUtc; 00779 int leapSign; 00780 int leapErr; 00781 long numDsd; 00782 long dsOffset; 00783 long numDsr; 00784 00785 // extra data: the following values are not read from the file. 00786 // but it must be provided for the writing function 00787 // MPH 00788 std::string procStageCode; 00789 std::string refDoc; 00790 std::string procTime; 00791 std::string softwareVersion; 00792 std::string phase; 00793 long cycle; 00794 std::string stateVectorTime; 00795 double xPosition; 00796 double yPosition; 00797 double zPosition; 00798 double xVelocity; 00799 double yVelocity; 00800 double zVelocity; 00801 std::string stateVectorSource; 00802 std::string productErr; 00803 long totSize; 00804 long numDataSets; 00805 00806 // SPH 00807 std::string sphDescriptor; 00808 std::string sensingStartTai; // TAI 00809 long absOrbitStart; 00810 double relTimeAscNodeStart; 00811 std::string sensingStopTai; // TAI 00812 long absOrbitStop; 00813 double relTimeAscNodeStop; 00814 std::string equatorCrossTime; 00815 long equatorCrossLong; 00816 std::string ascendingFlag; 00817 long startLat; 00818 long startLong; 00819 long stopLat; 00820 long stopLong; 00821 long numIsps; 00822 long numMissingIsps; 00823 long numErrorIsps; 00824 long numDiscardedIsps; 00825 long numRsIsps; 00826 long numRsCorrections; 00827 long dsrSize; 00828 00830 DorisHeader() {} 00831 00833 DorisHeader(const std::string& fileNam, 00834 const std::string& senStart, 00835 const std::string& sensStop, 00836 long relOrbi, 00837 long absOrbi, 00838 double delta_Ut1, 00839 const std::string& leap_Utc, 00840 int leap_Sign, 00841 int leap_Err, 00842 long num_Dsd, 00843 long ds_Offset, 00844 long num_Dsr); 00845 00847 DorisHeader(const std::string& fileNam, 00848 const std::string& sensStart, 00849 const std::string& sensStop, 00850 long relOrbi, 00851 long absOrbi, 00852 double delta_Ut1, 00853 const std::string& leap_Utc, 00854 int leap_Sign, 00855 int leap_Err, 00856 long num_Dsd, 00857 long ds_Offset, 00858 long num_Dsr, 00859 const std::string& procStageCod, 00860 const std::string& ref_Doc, 00861 const std::string& procTim, 00862 const std::string& softVersion, 00863 const std::string& phaseIn, 00864 long cycleIn, 00865 const std::string& stateVectorTim, 00866 double xPos, 00867 double yPos, 00868 double zPos, 00869 double xVel, 00870 double yVel, 00871 double zVel, 00872 const std::string& stateVectSource, 00873 const std::string& prodErr, 00874 long tot_Size, 00875 long numDataSet, 00876 const std::string& sphDesc, 00877 const std::string& sensStartTai, 00878 long absOrbStart, 00879 double relTimAscNodeStart, 00880 const std::string& sensStopTai, 00881 long absOrbStop, 00882 double relTimAscNodeStop, 00883 const std::string& equator_CrossTime, 00884 long equator_CrossLong, 00885 const std::string& ascendFlag, 00886 long start_Lat, 00887 long start_Long, 00888 long stop_Lat, 00889 long stop_Long, 00890 long num_Isps, 00891 long numMissIsps, 00892 long numErrIsps, 00893 long numDiscardIsps, 00894 long num_RsIsps, 00895 long num_RsCorrections, 00896 long dsr_Size); 00897 }; 00898 00902 class XD_DECL FileModel 00903 { 00904 public: 00905 // Attributes 00906 std::vector<std::string> files; 00907 std::string auxFile; 00908 long timeRef; 00909 double time0; 00910 double time1; 00911 00913 FileModel() : 00914 files(), auxFile(), timeRef(0.), time0(0.), time1(0.) {} 00915 00917 FileModel(const std::vector<std::string>& fileNames, 00918 const std::string& auxiliaryFile, 00919 long timeReference, 00920 double timeZero, 00921 double timeOne) : 00922 files(fileNames), auxFile(auxiliaryFile), timeRef(timeReference), time0(timeZero), time1(timeOne) {} 00923 }; 00924 00928 class XD_DECL HarmonicData 00929 { 00930 public: 00931 // Attributes 00932 std::vector<long> harmonicTypePitch; 00933 std::vector<long> harmonicTypeRoll; 00934 std::vector<long> harmonicTypeYaw; 00935 std::vector<double> harmonicCoeffPitch; 00936 std::vector<double> harmonicCoeffRoll; 00937 std::vector<double> harmonicCoeffYaw; 00938 00940 HarmonicData() : 00941 harmonicTypePitch(), 00942 harmonicTypeRoll(), 00943 harmonicTypeYaw(), 00944 harmonicCoeffPitch(), 00945 harmonicCoeffRoll(), 00946 harmonicCoeffYaw() {} 00947 00949 HarmonicData(const std::vector<long>& harmonicTypPitch, 00950 const std::vector<long>& harmonicTypRoll, 00951 const std::vector<long>& harmonicTypYaw, 00952 const std::vector<double>& harmonicCoefPitch, 00953 const std::vector<double>& harmonicCoefRoll, 00954 const std::vector<double>& harmonicCoefYaw) : 00955 harmonicTypePitch(harmonicTypPitch), 00956 harmonicTypeRoll(harmonicTypRoll), 00957 harmonicTypeYaw(harmonicTypYaw), 00958 harmonicCoeffPitch(harmonicCoefPitch), 00959 harmonicCoeffRoll(harmonicCoefRoll), 00960 harmonicCoeffYaw(harmonicCoefYaw) {} 00961 }; 00962 00966 class XD_DECL HarmonicModel 00967 { 00968 public: 00969 // Attributes 00970 long angleType; 00971 HarmonicData harmonicData; 00972 double offsets[3]; 00973 00975 HarmonicModel() : 00976 angleType(0L), harmonicData(), offsets{0., 0., 0.} {} 00977 00979 HarmonicModel(long angleTyp, const HarmonicData& harmonicDat, const double* offset) : 00980 angleType(angleTyp), harmonicData(harmonicDat), offsets{offset[0], offset[1], offset[2]} {} 00981 }; 00982 00986 class XD_DECL MatrixModel 00987 { 00988 public: 00989 // Attributes 00990 double attMatrix[3][3]; 00991 double offsets[3]; 00992 00994 MatrixModel() : 00995 attMatrix{{0., 0., 0.}, {0., 0., 0.}, {0., 0., 0.}}, offsets{0., 0., 0.} {} 00996 00998 MatrixModel(const double** matrix, const double* offset) : 00999 attMatrix{ 01000 {matrix[0][0], matrix[0][1], matrix[0][2]}, 01001 {matrix[1][0], matrix[1][1], matrix[1][2]}, 01002 {matrix[2][0], matrix[2][1], matrix[2][2]}, 01003 }, 01004 offsets{offset[0], offset[1], offset[2]} 01005 { 01006 } 01007 }; 01008 01012 class XD_DECL MlstHarmonics 01013 { 01014 public: 01015 // Attributes 01016 double refTime; 01017 double period; 01018 double sinAmplitude; 01019 double cosAmplitude; 01020 01022 MlstHarmonics() : 01023 refTime(0.), period(1.), sinAmplitude(0.), cosAmplitude(0.) {} 01024 01026 MlstHarmonics(double time_in, double period_in, double sinAmp_in, double cosAmp_in) : 01027 refTime(time_in), period(period_in), sinAmplitude(sinAmp_in), cosAmplitude(cosAmp_in) {} 01028 }; 01029 01033 class XD_DECL MlstNonlinearDrift 01034 { 01035 public: 01036 // Attributes 01037 long linearApproxValidity; 01038 double quadraticTerm; 01039 std::vector<MlstHarmonics> mlstHarmonics; 01040 01042 MlstNonlinearDrift() : 01043 linearApproxValidity(99999L), quadraticTerm(0.), mlstHarmonics(3) {} 01044 01046 MlstNonlinearDrift(long linApprox, double quadratic, const std::vector<MlstHarmonics>& harmonics) : 01047 linearApproxValidity(linApprox), quadraticTerm(quadratic), mlstHarmonics(harmonics) {} 01048 }; 01049 01053 class XD_DECL ANXLongDrift 01054 { 01055 public: 01056 // Attributes 01057 double offset; 01058 double linearTerm; 01059 01061 ANXLongDrift() : 01062 offset(0.), linearTerm(0.) {} 01063 01065 ANXLongDrift(double off, double drift) : 01066 offset(off), linearTerm(drift) {} 01067 }; 01068 01072 class XD_DECL ParamModel 01073 { 01074 public: 01075 // Attributes 01076 long model; 01077 std::vector<double> modelParam; 01078 01080 ParamModel() : 01081 model(0L), modelParam() {} 01082 01084 ParamModel(const long mod, const std::vector<double>& modParam) : 01085 model(mod), modelParam(modParam) {} 01086 }; 01087 01091 class XD_DECL SwathGeometry 01092 { 01093 public: 01094 // Attributes 01095 long geometryType; 01096 double azimuth; 01097 double elevation; 01098 double altitude; 01099 double distance; 01100 double angle; 01101 01103 SwathGeometry() : 01104 geometryType(0L), azimuth(0.), elevation(0.), altitude(0.), distance(0.), angle(0.) {} 01105 01107 SwathGeometry(long geomType, double azim, double elevat, double alt, double dist, double ang) : 01108 geometryType(geomType), azimuth(azim), elevation(elevat), altitude(alt), distance(dist), angle(ang) {} 01109 }; 01110 01114 class XD_DECL TrackerLimits 01115 { 01116 public: 01117 // Attributes 01118 double maxPenalty; 01119 double normThr; 01120 double maxGap; 01121 01123 TrackerLimits() : 01124 maxPenalty(0.), normThr(0.), maxGap(0.) {} 01125 01127 TrackerLimits(double maxPenal, double normThreshold, double maximumGap) : 01128 maxPenalty(maxPenal), normThr(normThreshold), maxGap(maximumGap) {} 01129 }; 01130 01134 class XD_DECL StfPt 01135 { 01136 public: 01137 // Attributes 01138 double lon; 01139 double lat; 01140 01142 StfPt() : 01143 lon(0.), lat(0.) {} 01144 01146 StfPt(double longitude, double latitude) : 01147 lon(longitude), lat(latitude) {} 01148 }; 01149 01153 class XD_DECL StfVhr 01154 { 01155 public: 01156 // Attributes 01157 std::string stfName; 01158 std::string ReferenceOSF; 01159 std::string ReferenceSDF; 01160 long swathType; 01161 long swathPointType; 01162 01163 double timeStep; 01164 long refractionMode; 01165 double frequency; 01166 01167 long numPoints; 01168 std::vector<double> altitude; 01169 01170 bool geometryFlag; 01171 01172 long repCycle; 01173 long cycleLength; 01174 double mlstDrift; 01175 01176 long absOrbit; 01177 long orbitStart; 01178 long orbitStop; 01179 01180 double position[3]; 01181 double velocity[3]; 01182 01184 StfVhr(); 01185 01187 StfVhr(const std::string& stfNam, 01188 const std::string& refOSF, 01189 const std::string& refSDF, 01190 long swathTyp, 01191 long swathPointTyp, 01192 double timStep, 01193 long refrMode, 01194 double freq, 01195 long numP, 01196 const std::vector<double>& alt, 01197 bool geomFlag, 01198 long repCycl, 01199 long cyclLength, 01200 double meanlstDrift, 01201 long absOrb, 01202 long orbit0, 01203 long orbit1, 01204 const double* pos, 01205 const double* vel); 01206 01207 }; // class StfVhr 01208 01212 class XD_DECL ZonePoint 01213 { 01214 public: 01215 // Attributes 01216 double ptLong; 01217 double ptLat; 01218 01220 ZonePoint() : 01221 ptLong(0.), ptLat(0.) {} 01222 01224 ZonePoint(double ptLongitude, double ptLatitude) : 01225 ptLong(ptLongitude), ptLat(ptLatitude) {} 01226 }; 01227 01231 class XD_DECL AttitudeModel 01232 { 01233 public: 01234 // Attributes 01235 long attitudeModel; 01236 long AOCS; 01237 ParamModel* paramModel; 01238 HarmonicModel* harmonicModel; 01239 FileModel* fileModel; 01240 AngleModel* angleModel; 01241 MatrixModel* matrixModel; 01242 01244 AttitudeModel(); 01245 01247 AttitudeModel(long attitudeModel, 01248 long AOCSModel, 01249 const ParamModel& paramModel, 01250 const HarmonicModel& harmonicModel, 01251 const FileModel& fileModel, 01252 const AngleModel& angleModel, 01253 const MatrixModel& matrixModel); 01254 01257 AttitudeModel(const AttitudeModel& attModel); 01258 01260 ~AttitudeModel() NOEXCEPT; 01261 01264 AttitudeModel& operator=(const AttitudeModel& attModel); 01265 }; 01266 01270 class XD_DECL PolarMotionParams 01271 { 01272 public: 01273 // Attributes 01274 double x; 01275 double y; 01276 01278 PolarMotionParams() : 01279 x(0.), y(0.) {} 01280 01282 PolarMotionParams(double x1, double y1) : 01283 x(x1), y(y1) {} 01284 }; 01285 01289 class XD_DECL IersBulletinBrec 01290 { 01291 public: 01292 double day; 01293 double ut1Utc; 01294 double ut1Tai; 01295 PolarMotionParams polarMotionParams; 01296 01298 IersBulletinBrec() : 01299 day(0.), ut1Utc(0.), ut1Tai(0.), polarMotionParams() {} 01300 01302 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, const PolarMotionParams& polarMotion) : 01303 day(dayUtc), ut1Utc(diffUt1Utc), ut1Tai(diffUt1Tai), polarMotionParams(polarMotion) {} 01304 }; 01305 01309 class XD_DECL IersBulletinArec 01310 { 01311 public: 01312 double day; 01313 double ut1Utc; 01314 double ut1Tai; 01315 PolarMotionParams polarMotionParams; 01316 01318 IersBulletinArec() : 01319 day(0.), ut1Utc(0.), ut1Tai(0.), polarMotionParams() {} 01320 01322 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, const PolarMotionParams& polarMotion) : 01323 day(dayUtc), ut1Utc(diffUt1Utc), ut1Tai(diffUt1Tai), polarMotionParams(polarMotion) {} 01324 }; 01325 01329 class XD_DECL PolarMotionFormula 01330 { 01331 public: 01332 double ax; 01333 double bx; 01334 double cx; 01335 double dx; 01336 double ex; 01337 01338 double ay; 01339 double by; 01340 double cy; 01341 double dy; 01342 double ey; 01343 01344 double Aref; 01345 double Adiv; 01346 double Cref; 01347 double Cdiv; 01348 01350 PolarMotionFormula() : 01351 ax(0.), bx(0.), cx(0.), dx(0.), ex(0.), ay(0.), by(0.), cy(0.), dy(0.), ey(0.), Aref(0.), Adiv(0.), Cref(0.), Cdiv(0.) {} 01352 01354 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, double a2, double b2, double c2, double d2, double e2, double Ar, double Ad, double Cr, double Cd) : 01355 ax(a1), bx(b1), cx(c1), dx(d1), ex(e1), ay(a2), by(b2), cy(c2), dy(d2), ey(e2), Aref(Ar), Adiv(Ad), Cref(Cr), Cdiv(Cd) {} 01356 }; 01357 01361 class XD_DECL TimeCorrelationFormula 01362 { 01363 public: 01364 double a; 01365 double b; 01366 double bRef; 01367 01369 TimeCorrelationFormula() : 01370 a(0.), b(0.), bRef(0.) {} 01371 01373 TimeCorrelationFormula(double a1, double b1, double br) : 01374 a(a1), b(b1), bRef(br) {} 01375 }; 01376 01380 class XD_DECL IersBulletinBFile 01381 { 01382 public: 01383 std::string bulletinId; 01384 std::vector<IersBulletinBrec> finalTable; 01385 std::vector<IersBulletinBrec> preliminaryTable; 01386 01388 IersBulletinBFile() : 01389 bulletinId(), finalTable(), preliminaryTable() {} 01390 01392 IersBulletinBFile(const std::string& bulId, 01393 const std::vector<IersBulletinBrec>& vecFinal, 01394 const std::vector<IersBulletinBrec>& vecPrel) : 01395 bulletinId(bulId), finalTable(vecFinal), preliminaryTable(vecPrel) {} 01396 01397 }; // class IersBulletinBFile 01398 01402 class XD_DECL IersBulletinAFile 01403 { 01404 public: 01405 std::string bulletinId; 01406 std::vector<IersBulletinArec> predictionTable; 01407 PolarMotionFormula polarMotionFormula; 01408 TimeCorrelationFormula timeCorrelationFormula; 01409 01411 IersBulletinAFile() : 01412 bulletinId(), predictionTable(), polarMotionFormula(), timeCorrelationFormula() {} 01413 01415 IersBulletinAFile(const std::string& bulId, 01416 const std::vector<IersBulletinArec>& vecPred, 01417 const PolarMotionFormula& polarFormula, 01418 const TimeCorrelationFormula& timeFormula) : 01419 bulletinId(bulId), predictionTable(vecPred), polarMotionFormula(polarFormula), timeCorrelationFormula(timeFormula) {} 01420 01421 }; // class IersBulletinAFile 01422 01426 class XD_DECL DemMiniTiles 01427 { 01428 public: 01429 std::string fileName; 01430 double lonSize; 01431 double latSize; 01432 01434 DemMiniTiles() : 01435 fileName(), lonSize(0.), latSize(0.) {} 01436 01438 DemMiniTiles(std::string fileN, double lon, double lat) : 01439 fileName(fileN), lonSize(lon), latSize(lat) {} 01440 01441 }; // AN-492 01442 01446 class XD_DECL QuaternionPlusAngle 01447 { 01448 public: 01449 // Attributes 01450 std::string quatDefFile; 01451 01452 long inertialFrame; 01453 std::vector<AttRec> quat; 01454 AngleModel angleModel; 01455 01457 QuaternionPlusAngle() : 01458 quatDefFile(), inertialFrame(0L), quat(), angleModel() {} 01459 01461 QuaternionPlusAngle(const std::string& file, const AngleModel& angModel) : 01462 quatDefFile(file), inertialFrame(0L), quat(), angleModel(angModel) {} 01463 01464 }; // AN-469 01465 01466 // 01469 class XD_DECL QuaternionPlusMatrix 01470 { 01471 public: 01472 // Attributes 01473 std::string quatDefFile; 01474 MatrixModel matrixModel; 01475 01477 QuaternionPlusMatrix() : 01478 quatDefFile(), matrixModel() {} 01479 01481 QuaternionPlusMatrix(const std::string& file, const MatrixModel& matModel) : 01482 quatDefFile(file), matrixModel(matModel) {} 01483 01484 }; // AN-469 01485 01489 class XD_DECL AttitudeDefinitionModel 01490 { 01491 public: 01492 // Attributes 01493 long attitudeModel; 01494 long AOCS; 01495 ParamModel* paramModel; 01496 HarmonicModel* harmonicModel; 01497 FileModel* fileModel; 01498 AngleModel* angleModel; 01499 MatrixModel* matrixModel; 01500 QuaternionPlusAngle* quaternionAngleModel; 01501 QuaternionPlusMatrix* quaternionMatrixModel; 01502 01504 AttitudeDefinitionModel(); 01505 01507 AttitudeDefinitionModel(long attModel, 01508 long AOCSModel, 01509 const ParamModel& parMod, 01510 const HarmonicModel& harmMod, 01511 const FileModel& fileMod, 01512 const AngleModel& angleMod, 01513 const MatrixModel& matrixMod, 01514 const QuaternionPlusAngle& quatAngMod, 01515 const QuaternionPlusMatrix& quatMatMod); 01516 01519 AttitudeDefinitionModel(const AttitudeDefinitionModel& other); 01520 01522 ~AttitudeDefinitionModel() NOEXCEPT; 01523 01526 AttitudeDefinitionModel& operator=(const AttitudeDefinitionModel& other); 01527 01528 }; // AN-469 01529 01531 class XD_DECL AzElMask 01532 { 01533 public: 01534 long numMaskPt; 01535 long status; 01536 01537 01538 01539 01540 01541 01542 01543 01544 01545 01546 01547 01548 double azimuth[MaxStationVertices]; 01549 double elevation[MaxStationVertices]; 01550 }; 01551 01553 class XD_DECL LinkMask 01554 { 01555 public: 01556 AzElMask inclMask; 01557 AzElMask exclMask; 01558 }; 01559 01561 class XD_DECL LinkData 01562 { 01563 public: 01564 LinkMask maskData; 01565 double minTgHeight; 01566 }; 01567 01569 union XD_DECL FovConstraintsUnion 01570 { 01571 public: 01572 LinkData SCLinkData; 01573 LinkData CelestialBodyLinkData; 01574 }; 01575 01579 template<typename T> struct GenericInternals 01580 { 01581 }; // AN-823 01582 01583 } // namespace EECFI 01584 01585 #endif