Earth Observation Mission CFI Software DataHandling Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.5 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: DataHandlingData.h,v 1.24 2013-02-05 11:21:42 expcfi 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 //--NAMESPACES-------------------------------------------------------- 00022 using namespace std; 00023 00024 namespace EECFI 00025 { 00026 //------------------------------------------------------ 00027 // CONSTANT DATA 00028 //------------------------------------------------------ 00029 00030 //------------------------------------------------------ 00031 // DATA ENUMERATION 00032 //------------------------------------------------------ 00033 00035 typedef enum 00036 { 00037 XDCFI_ATT_QUATERNIONS = 0, 00038 XDCFI_ATT_ANGLES 00039 } AttitudeDataTypeEnum; 00040 00042 typedef enum 00043 { 00044 XDCFI_LINE_GEOM = 0, 00045 XDCFI_POINT_GEOM, 00046 XDCFI_LIMB_GEOM, 00047 XDCFI_DISTANCE_GEOM 00048 } GeomTypeEnum; 00049 00051 typedef enum 00052 { 00053 XDCFI_NO_ASAR = 0, 00054 XDCFI_NARROW_ASAR, 00055 XDCFI_WIDE_ASAR 00056 } AsarTypeEnum; 00057 00059 typedef enum 00060 { 00061 XDCFI_NO_REF = 0, 00062 XDCFI_STD_REF, 00063 XDCFI_USER_REF, 00064 XDCFI_PRED_REF, 00065 XDCFI_STD_REF_N = 10, 00066 XDCFI_USER_REF_N = 20, 00067 XDCFI_PRED_REF_N = 30, 00068 XDCFI_US76_REF = 300, 00069 XDCFI_TROPIC_REF, 00070 XDCFI_MID_SUM_REF, 00071 XDCFI_MID_WIN_REF, 00072 XDCFI_SUBAR_SUM_REF, 00073 XDCFI_SUBAR_WIN_REF, 00074 XDCFI_LUT_REF = 400, 00075 XDCFI_US76_REF_N = 3000, 00076 XDCFI_TROPIC_REF_N, 00077 XDCFI_MID_SUM_REF_N, 00078 XDCFI_MID_WIN_REF_N, 00079 XDCFI_SUBAR_SUM_REF_N, 00080 XDCFI_SUBAR_WIN_REF_N, 00081 XDCFI_LUT_REF_N = 4000 00082 } TargetRayEnum; 00083 00085 typedef enum 00086 { 00087 XDCFI_OPEN_SWATH, 00088 XDCFI_CLOSED_SWATH 00089 } SwathTypecEnum; 00090 00092 typedef enum 00093 { 00094 XDCFI_GEODETIC_SWATH_TYPE, 00095 XDCFI_INERTIAL_SWATH_TYPE 00096 } SwathPointTypeEnum; 00097 00099 typedef enum 00100 { 00101 XDCFI_SWATH_POINTING_GEOM = 0, /* Algorithms of calculation of Swaths */ 00102 XDCFI_SWATH_DISTANCE_GEOM, 00103 XDCFI_SWATH_LIMB_GEOM, 00104 XDCFI_SWATH_INERTIAL_GEOM, 00105 XDCFI_SWATH_SUBSATELLITE_GEOM, 00106 XDCFI_SWATH_ASAR_GEOM 00107 00108 } SwathGeomEnum; 00109 00111 typedef enum 00112 { 00113 XDCFI_NOT_DEFINED = -1, 00114 XDCFI_POINT = 0, 00115 XDCFI_CIRCLE = 1, 00116 XDCFI_SEGMENT = 2, 00117 XDCFI_POLYGON = 3 00118 } ZoneTypeEnum; 00119 00121 typedef enum 00122 { 00123 XDCFI_SAT_ORBITAL_REF = 0, 00124 XDCFI_SAT_NOMINAL_ATT, 00125 XDCFI_SAT_ATT, 00126 XDCFI_INSTR_ATT 00127 } AttitudeFrameEnum; 00128 00130 typedef enum 00131 { 00132 XDCFI_BAR_MEAN_2000 = 1, 00133 XDCFI_HEL_MEAN_2000, 00134 XDCFI_GEO_MEAN_2000, 00135 XDCFI_MEAN_DATE, 00136 XDCFI_TRUE_DATE, 00137 XDCFI_PSEUDO_EARTH_FIXED, 00138 XDCFI_EARTH_FIXED, 00139 XDCFI_BAR_MEAN_1950, 00140 XDCFI_GALACTIC, 00141 XDCFI_SAT_ACT_REF, 00142 XDCFI_QUASI_MEAN_DATE, 00143 XDCFI_PSE_TRUE_DATE, 00144 XDCFI_TOPOCENTRIC, 00145 XDCFI_SAT_REF, 00146 XDCFI_SAT_REL_REF 00147 } CoordinateSystemsEnum; // Updated for AN-509 00148 00150 typedef enum 00151 { 00152 XDCFI_3_ADJUST_NOMI = 1, 00153 XDCFI_4_ADJUST_DMAN, 00154 XDCFI_5_INTERP_DGAP, 00155 XDCFI_6_EXTRAP_LT1D, 00156 XDCFI_7_EXTRAP_1D2D, 00157 XDCFI_8_EXTRAP_GT2D, 00158 XDCFI_8_EXTRAP_AMAN, 00159 XDCFI_Q_INDEX_MAX_ENUM 00160 } QualityIndexEnum; 00161 00163 typedef enum 00164 { 00165 XDCFI_SCF_DRAW_SOLID, 00166 XDCFI_SCF_DRAW_DASHED, 00167 XDCFI_SCF_DRAW_DOTTED, 00168 XDCFI_SCF_DRAW_TIMELINE 00169 } SCFDrawModesEnum; 00170 00172 typedef enum 00173 { 00174 XDCFI_SCF_FILL_SOLID, 00175 XDCFI_SCF_FILL_HOLLOW 00176 } SCFFillModesEnum; 00177 00179 typedef enum 00180 { 00181 XDCFI_TIME_UNDEF = -1, 00182 XDCFI_TIME_TAI, 00183 XDCFI_TIME_UTC, 00184 XDCFI_TIME_UT1, 00185 XDCFI_TIME_GPS 00186 } TimeRefDataHandlingEnum; 00187 00189 typedef enum 00190 { 00191 XDCFI_TIME_REF_OF_TAI = XDCFI_TIME_TAI, 00192 XDCFI_TIME_REF_OF_UTC = XDCFI_TIME_UTC, 00193 XDCFI_TIME_REF_OF_UT1 = XDCFI_TIME_UT1, 00194 XDCFI_TIME_REF_OF_GPS = XDCFI_TIME_GPS 00195 } TimeRefOfDataHandlingEnum; 00196 00198 typedef enum 00199 { 00200 XDCFI_READ_DB = 0, 00201 XDCFI_GNOMONIC = 1, 00202 XDCFI_RECTANGULAR = 2 00203 } ProjectionEnum; 00204 00206 typedef enum 00207 { 00208 XDCFI_ATT_NONE = 0, 00209 XDCFI_ATT_AOCS, 00210 XDCFI_ATT_PARAM, 00211 XDCFI_ATT_HARMONIC, 00212 XDCFI_ATT_FILE, 00213 XDCFI_ATT_ANGLE, 00214 XDCFI_ATT_MATRIX 00215 } AttModelEnum; 00216 00218 typedef enum 00219 { 00220 XDCFI_OSF_FILE, 00221 XDCFI_ORBIT_FILE, 00222 XDCFI_POF_FILE, 00223 XDCFI_ROF_FILE, 00224 XDCFI_DORIS_FILE, 00225 XDCFI_SDF_FILE, 00226 XDCFI_STF_FILE, 00227 XDCFI_ATTITUDE_FILE, 00228 XDCFI_DEM_CONF_FILE, 00229 XDCFI_DEM_FILE, 00230 XDCFI_ZONE_FILE, 00231 XDCFI_STATION_FILE, 00232 XDCFI_STAR_FILE, 00233 XDCFI_ATT_STAR_TRACKER_CONF_FILE, 00234 XDCFI_ATT_STAR_TRACKER_FILE, 00235 XDCFI_IERS_BULLETIN_FILE, 00236 XDCFI_TLE_FILE 00237 } FileEnum; 00238 00240 typedef enum 00241 { 00242 XDCFI_UNKNOWN_TYPE = -1, 00243 XDCFI_AUTO, 00244 XDCFI_ORBIT_CHANGE, 00245 XDCFI_STATE_VECTOR, 00246 XDCFI_OSF_TYPE, 00247 XDCFI_POF_TYPE, 00248 XDCFI_ROF_TYPE, 00249 XDCFI_DORIS_TYPE, 00250 XDCFI_POF_N_DORIS_TYPE, 00251 XDCFI_OEF_OSF_TYPE, 00252 XDCFI_OEF_POF_TYPE, 00253 XDCFI_IERS_B_TYPE, 00254 XDCFI_TLE_TYPE, 00255 XDCFI_STF_TYPE, 00256 XDCFI_DORISPREC_TYPE, 00257 XDCFI_DORISPREM_TYPE, 00258 XDCFI_ATT_TYPE, 00259 XDCFI_SCF_TYPE, 00260 XDCFI_PRECISE_PROPAG_TYPE, 00261 XDCFI_DEMCFG_TYPE, 00262 XDCFI_SATCFG_TYPE, 00263 XDCFI_GND_DB_TYPE, 00264 XDCFI_SW_DEF_TYPE, 00265 XDCFI_ZON_DB_TYPE, 00266 XDCFI_STR1ATT_TYPE, 00267 XDCFI_IERS_A_TYPE, 00268 XDCFI_IERS_B_AND_A_TYPE, 00269 XDCFI_FILE_TYPE_MAX_VALUE 00270 } FileTypeEnum; 00271 00273 typedef enum 00274 { 00275 XDCFI_DEM_ACE_MODEL = 0, 00276 XDCFI_DEM_GETASSE30_V1, 00277 XDCFI_DEM_GETASSE30_V2, 00278 XDCFI_DEM_ACE2_9SEC, 00279 XDCFI_DEM_NUM_MODELS 00280 } DemModelEnum; 00281 00283 typedef enum 00284 { 00285 XDCFI_DEM_GETASSE30_SOURCE_ACE, /* land-ice/snow */ 00286 XDCFI_DEM_GETASSE30_SOURCE_MSS, /* sea */ 00287 XDCFI_DEM_GETASSE30_SOURCE_EGM96, /* sea-ice */ 00288 XDCFI_DEM_GETASSE30_SOURCE_SRTM30 /* land */ 00289 } DemGetasseDataSourceEnum; 00290 00291 /* DEM Data Source Types for ACE2 9secs */ 00292 typedef enum 00293 { 00294 XDCFI_DEM_ACE2_SOURCE_SRTM0, /* Pure SRTM (above 60�N pure GLOBE data, below 60S pure ACE [original] data) */ 00295 XDCFI_DEM_ACE2_SOURCE_SRTM1, /* SRTM voids filled by interpolation and/or altimeter data */ 00296 XDCFI_DEM_ACE2_SOURCE_SRTM2, /* SRTM data warped using the ERS-1 Geodetic Mission */ 00297 XDCFI_DEM_ACE2_SOURCE_SRTM3, /* SRTM data warped using EnviSat & ERS-2 data */ 00298 XDCFI_DEM_ACE2_SOURCE_SRTM_LAKE, /* Mean lake level data derived from Altimetry */ 00299 XDCFI_DEM_ACE2_SOURCE_SRTM_GLOBE, /* GLOBE/ACE data warped using combined altimetry (only above 60�N) */ 00300 XDCFI_DEM_ACE2_SOURCE_SRTM_ALT /* Pure altimetry data (derived from ERS-1 Geodetic Mission, 00301 ERS-2 and EnviSat data using Delaunay Triangulation and Bilinear interpolation) */ 00302 } DemAce2DataSourceEnum; 00303 00304 00306 typedef enum 00307 { 00308 XDCFI_CFI_READ_ATT_INIT_PARSER_ERR = 0, 00309 XDCFI_CFI_READ_ATT_READ_PARAM_ERR, 00310 XDCFI_CFI_READ_ATT_WRONG_FILE_TYPE_ERR, 00311 XDCFI_CFI_READ_XML_ATT_NAVIGATION_ERR, 00312 XDCFI_CFI_READ_ATT_WRONG_DATA_TYPE_ERR, 00313 XDCFI_CFI_READ_ATT_INCONSISTENT_DATA_TYPE_ERR, 00314 XDCFI_CFI_READ_ATT_XML_DATA_BLOCK_SIZE_ERR, 00315 XDCFI_CFI_READ_ATT_WRONG_REF_FRAME_ERR, 00316 XDCFI_CFI_READ_ATT_READ_LIST_ERR, 00317 XDCFI_CFI_READ_ATT_TIME_CONV_ERR, 00318 XDCFI_CFI_READ_ATT_MEMORY_ERR, 00319 XDCFI_CFI_READ_ATT_CLEANUP_PARSER_ERR, 00320 XDCFI_CFI_READ_ATT_WRONG_TIME_REF_ERR, 00321 XDCFI_CFI_READ_ATT_WRONG_QUATERNION_ERR, 00322 XDCFI_CFI_READ_ATT_WRONG_ANGLE_ERR, 00323 XDCFI_CFI_READ_ATT_MAX_GAP_ERR 00324 } ReadAttErrEnum; 00325 00327 typedef enum 00328 { 00329 XDCFI_DEFAULT_VALUES = 0, 00330 XDCFI_USER_VALUES = 1 00331 } PrecisePropagUserFlagEnum; 00332 00334 typedef enum 00335 { 00336 XDCFI_NOT_SELECT = 0, 00337 XDCFI_SELECT = 1 00338 } PrecisePropagSelectionFlagEnum; 00339 00341 typedef enum 00342 { 00343 XDCFI_SGA_USE_PARAMETERS = 0, 00344 XDCFI_SGA_READ_VALUES_FROM_FILE = 1 00345 } PrecisePropagSgaFlagEnum; 00346 00348 typedef enum 00349 { 00350 XDCFI_SAT_DEFAULT = 0, 00351 XDCFI_SAT_DEFAULT1 = 1, 00352 XDCFI_SAT_DEFAULT2 = 2, 00353 XDCFI_SAT_DEFAULT3 = 3, 00354 XDCFI_SAT_DEFAULT4 = 4, 00355 XDCFI_SAT_DEFAULT5 = 5, 00356 XDCFI_SAT_DEFAULT6 = 6, 00357 XDCFI_SAT_DEFAULT7 = 7, 00358 XDCFI_SAT_DEFAULT8 = 8, 00359 XDCFI_SAT_DEFAULT9 = 9, 00360 XDCFI_SAT_ERS1 = 11, 00361 XDCFI_SAT_ERS2 = 12, 00362 XDCFI_SAT_ENVISAT = 21, 00363 XDCFI_SAT_METOP1 = 31, 00364 XDCFI_SAT_METOP2 = 32, 00365 XDCFI_SAT_METOP3 = 33, 00366 XDCFI_SAT_CRYOSAT = 41, 00367 XDCFI_SAT_ADM = 51, 00368 XDCFI_SAT_GOCE = 61, 00369 XDCFI_SAT_SMOS = 71, 00370 XDCFI_SAT_TERRASAR = 81, 00371 XDCFI_SAT_EARTHCARE = 91, 00372 XDCFI_SAT_SWARM_A = 101, 00373 XDCFI_SAT_SWARM_B = 102, 00374 XDCFI_SAT_SWARM_C = 103, 00375 XDCFI_SAT_SENTINEL_1A = 110, 00376 XDCFI_SAT_SENTINEL_1B = 111, 00377 XDCFI_SAT_SENTINEL_2 = 112, 00378 XDCFI_SAT_SENTINEL_3 = 113, 00379 XDCFI_SAT_SEOSAT = 120, 00380 XDCFI_SAT_SENTINEL_1C = 125, 00381 XDCFI_SAT_SENTINEL_2A = 126, 00382 XDCFI_SAT_SENTINEL_2B = 127, 00383 XDCFI_SAT_SENTINEL_2C = 128, 00384 XDCFI_SAT_SENTINEL_3A = 129, 00385 XDCFI_SAT_SENTINEL_3B = 130, 00386 XDCFI_SAT_SENTINEL_3C = 131, 00387 XDCFI_SAT_GENERIC = 200, 00388 XDCFI_SAT_GENERIC_GEO = 300, 00389 XDCFI_SAT_MTG = 301 00390 } XDSatIdEnum; 00391 00393 typedef enum 00394 { 00395 XDCFI_BULLETIN_A = 0, 00396 XDCFI_BULLETIN_B 00397 } XDBulletinTypeEnum; 00398 00400 typedef enum 00401 { 00402 XDCFI_NO_CACHE = 0, 00403 XDCFI_PRELOAD_CACHE, 00404 XDCFI_FIFO_CACHE 00405 } DemCacheTypeEnum; // Added for AN-487 00406 00408 typedef enum 00409 { 00410 XDCFI_DEM_GEOID_COMPUTATION_DISABLED = 0, 00411 XDCFI_DEM_GEOID_COMPUTATION_ENABLED = 1 00412 } DemGeoidFlagEnum; // AN-466 00413 00414 //------------------------------------------------------ 00415 // DATA STRUCTURES 00416 //------------------------------------------------------ 00417 00421 class AngleModel 00422 { 00423 public: 00424 00425 //Attributes 00426 double angles[3]; 00427 double offsets[3]; 00428 00430 AngleModel(){}; 00431 00433 AngleModel( double *angle, double *offset) 00434 { 00435 for ( int i = 0 ; i < 3 ; ++i) 00436 { 00437 angles[i] = angle[i]; 00438 offsets[i] = offset[i]; 00439 }// end for i 00440 } 00441 }; 00442 00446 class Asar 00447 { 00448 public: 00449 //Attributes 00450 long asarType; 00451 double slantRangeLeft; 00452 double slantRangeRight; 00453 00455 Asar(){}; 00456 00461 Asar( const long asarTyp, double slantLeft, double slantRight) 00462 { 00463 asarType = asarTyp; 00464 slantRangeLeft = slantLeft; 00465 slantRangeRight = slantRight; 00466 } 00467 };//class Asar 00468 00469 00473 class BulbTable 00474 { 00475 public: 00476 double day; 00477 double ut1Utc; 00478 double ut1Tai; 00479 00481 BulbTable(){}; 00482 00484 BulbTable(double dayUtc, double diffUt1Utc, double diffUt1Tai) 00485 { 00486 day = dayUtc; 00487 ut1Utc = diffUt1Utc; 00488 ut1Tai = diffUt1Tai; 00489 } 00490 00491 }; 00492 00496 class DemPoint 00497 { 00498 public: 00499 00500 //Attributes 00501 double lon; 00502 double lat; 00503 double alt; 00504 00506 DemPoint(){}; 00507 00509 DemPoint( double longitude, double latitude, double altitude) 00510 { 00511 lon = longitude; 00512 lat = latitude; 00513 alt = altitude; 00514 } 00515 }; 00516 00520 class DorisHeader 00521 { 00522 public: 00523 //Atributtes 00524 string fileName; 00525 string sensingStart; // UTC 00526 string sensingStop; // UTC 00527 long relOrbit; 00528 long absOrbit; 00529 double deltaUt1; 00530 string leapUtc; 00531 int leapSign; 00532 int leapErr; 00533 long numDsd; 00534 long dsOffset; 00535 long numDsr; 00536 00537 // extra data: the following values are not read from the file. 00538 // but it must be provided for the writing function 00539 //MPH 00540 string procStageCode; 00541 string refDoc; 00542 string procTime; 00543 string softwareVersion; 00544 string phase; 00545 long cycle; 00546 string stateVectorTime; 00547 double xPosition; 00548 double yPosition; 00549 double zPosition; 00550 double xVelocity; 00551 double yVelocity; 00552 double zVelocity; 00553 string stateVectorSource; 00554 string productErr; 00555 long totSize; 00556 long numDataSets; 00557 00558 //SPH 00559 string sphDescriptor; 00560 string sensingStartTai; // TAI 00561 long absOrbitStart; 00562 double relTimeAscNodeStart; 00563 string sensingStopTai; // TAI 00564 long absOrbitStop; 00565 double relTimeAscNodeStop; 00566 string equatorCrossTime; 00567 long equatorCrossLong; 00568 string ascendingFlag; 00569 long startLat; 00570 long startLong; 00571 long stopLat; 00572 long stopLong; 00573 long numIsps; 00574 long numMissingIsps; 00575 long numErrorIsps; 00576 long numDiscardedIsps; 00577 long numRsIsps; 00578 long numRsCorrections; 00579 long dsrSize; 00580 00582 DorisHeader(); 00583 00585 DorisHeader(string fileNam, 00586 string senStart, 00587 string sensStop, 00588 long relOrbi, 00589 long absOrbi, 00590 double delta_Ut1, 00591 string leap_Utc, 00592 int leap_Sign, 00593 int leap_Err, 00594 long num_Dsd, 00595 long ds_Offset, 00596 long num_Dsr); 00597 00599 DorisHeader(string fileNam, 00600 string sensStart, 00601 string sensStop, 00602 long relOrbi, 00603 long absOrbi, 00604 double delta_Ut1, 00605 string leap_Utc, 00606 int leap_Sign, 00607 int leap_Err, 00608 long num_Dsd, 00609 long ds_Offset, 00610 long num_Dsr, 00611 string procStageCod, 00612 string ref_Doc, 00613 string procTim, 00614 string softVersion, 00615 string phaseIn, 00616 long cycleIn, 00617 string stateVectorTim, 00618 double xPos, 00619 double yPos, 00620 double zPos, 00621 double xVel, 00622 double yVel, 00623 double zVel, 00624 string stateVectSource, 00625 string prodErr, 00626 long tot_Size, 00627 long numDataSet, 00628 string sphDesc, 00629 string sensStartTai, 00630 long absOrbStart, 00631 double relTimAscNodeStart, 00632 string sensStopTai, 00633 long absOrbStop, 00634 double relTimAscNodeStop, 00635 string equator_CrossTime, 00636 long equator_CrossLong, 00637 string ascendFlag, 00638 long start_Lat, 00639 long start_Long, 00640 long stop_Lat, 00641 long stop_Long, 00642 long num_Isps, 00643 long numMissIsps, 00644 long numErrIsps, 00645 long numDiscardIsps, 00646 long num_RsIsps, 00647 long num_RsCorrections, 00648 long dsr_Size 00649 ); 00650 00651 }; 00652 00656 class FileModel 00657 { 00658 public: 00659 00660 //Attributes 00661 vector<string> files; 00662 string auxFile; 00663 long timeRef; 00664 double time0; 00665 double time1; 00666 00668 FileModel(){}; 00669 00671 FileModel( vector<string> &fileNames, 00672 const string auxiliaryFile, 00673 const long timeReference, 00674 const double timeZero, 00675 const double timeOne ) 00676 { 00677 files = fileNames; 00678 auxFile = auxiliaryFile; 00679 timeRef = timeReference; 00680 time0 = timeZero; 00681 time1 = timeOne; 00682 } 00683 00684 }; 00685 00689 class HarmonicData 00690 { 00691 public: 00692 00693 //Attributes 00694 vector<long> harmonicTypePitch; 00695 vector<long> harmonicTypeRoll; 00696 vector<long> harmonicTypeYaw; 00697 vector<double> harmonicCoeffPitch; 00698 vector<double> harmonicCoeffRoll; 00699 vector<double> harmonicCoeffYaw; 00700 00702 HarmonicData(){}; 00703 00705 HarmonicData( vector<long> &harmonicTypPitch, 00706 vector<long> &harmonicTypRoll, 00707 vector<long> &harmonicTypYaw, 00708 vector<double> &harmonicCoefPitch, 00709 vector<double> &harmonicCoefRoll, 00710 vector<double> &harmonicCoefYaw ) 00711 { 00712 harmonicTypePitch = harmonicTypPitch; 00713 harmonicTypeRoll = harmonicTypRoll; 00714 harmonicTypeYaw = harmonicTypYaw; 00715 harmonicCoeffPitch = harmonicCoefPitch; 00716 harmonicCoeffRoll = harmonicCoefRoll; 00717 harmonicCoeffYaw = harmonicCoefYaw; 00718 } 00719 00720 }; 00721 00725 class HarmonicModel 00726 { 00727 public: 00728 00729 //Attributes 00730 long angleType; 00731 HarmonicData harmonicData; 00732 double offsets[3]; 00733 00735 HarmonicModel(){}; 00736 00738 HarmonicModel( const long angleTyp, HarmonicData &harmonicDat, double *offset) 00739 { 00740 angleType = angleTyp; 00741 harmonicData = harmonicDat; 00742 00743 for ( int i = 0 ; i < 3 ; ++i ) 00744 { 00745 offsets[i] = offset[i]; 00746 } 00747 } 00748 }; 00749 00753 class MatrixModel 00754 { 00755 public: 00756 00757 //Attributes 00758 double attMatrix[3][3]; 00759 double offsets[3]; 00760 00762 MatrixModel(){}; 00763 00765 MatrixModel( double **matrix, double *offset ) 00766 { 00767 for ( int i = 0 ; i < 3 ; ++i) 00768 { 00769 for ( int j = 0 ; j < 3 ; ++j ) 00770 { 00771 attMatrix[i][j] = matrix[i][j]; 00772 }// end for j 00773 offsets[i] = offset[i]; 00774 }// end for i 00775 } 00776 }; 00777 00781 class MlstHarmonics 00782 { 00783 public: 00784 00785 //Attributes 00786 double refTime; 00787 double period; 00788 double sinAmplitude; 00789 double cosAmplitude; 00790 00792 MlstHarmonics() 00793 { 00794 refTime = 0.; 00795 period = 1.; 00796 sinAmplitude = 0.; 00797 cosAmplitude = 0.; 00798 }; 00799 00801 MlstHarmonics(double time_in, double period_in, 00802 double sinAmp_in, double cosAmp_in) 00803 { 00804 refTime = time_in; 00805 period = period_in; 00806 sinAmplitude = sinAmp_in; 00807 cosAmplitude = cosAmp_in; 00808 } 00809 }; 00810 00814 class MlstNonlinearDrift 00815 { 00816 public: 00817 00818 //Attributes 00819 long linearApproxValidity; 00820 double quadraticTerm; 00821 vector<MlstHarmonics> mlstHarmonics; 00822 00824 MlstNonlinearDrift() 00825 { 00826 long i; 00827 00828 linearApproxValidity = 99999; 00829 quadraticTerm = 0.; 00830 for (i = 0 ; i < 2 ; i ++ ) 00831 { 00832 mlstHarmonics.push_back(MlstHarmonics()); 00833 } 00834 }; 00835 00837 MlstNonlinearDrift(long linApprox, double quadratic, const vector<MlstHarmonics> &harmonics) 00838 { 00839 linearApproxValidity = linApprox; 00840 quadraticTerm = quadratic; 00841 mlstHarmonics = harmonics; 00842 } 00843 }; 00844 00848 class ParamModel 00849 { 00850 public: 00851 00852 //Attributes 00853 long model; 00854 vector<double> modelParam; 00855 00857 ParamModel(){}; 00858 00860 ParamModel( const long mod, vector<double> &modParam) 00861 { 00862 model = mod; 00863 modelParam = modParam; 00864 } 00865 }; 00866 00870 class SwathGeometry 00871 { 00872 public: 00873 00874 //Attributes 00875 long geometryType; 00876 double azimuth; 00877 double elevation; 00878 double altitude; 00879 double distance; 00880 00882 SwathGeometry(){}; 00883 00885 SwathGeometry( long geomType, double azim, double elevat, 00886 double alt, double dist) 00887 { 00888 geometryType = geomType; 00889 azimuth = azim; 00890 elevation = elevat; 00891 altitude = alt; 00892 distance = dist; 00893 } 00894 }; 00895 00899 class TrackerLimits 00900 { 00901 public: 00902 00903 //Attributes 00904 double maxPenalty; 00905 double normThr; 00906 double maxGap; 00907 00909 TrackerLimits(){}; 00910 00912 TrackerLimits( double maxPenal,double normThreshold, double maximumGap) 00913 { 00914 maxPenalty = maxPenal; 00915 normThr = normThreshold; 00916 maxGap = maximumGap; 00917 } 00918 }; 00919 00923 class StfPt 00924 { 00925 public: 00926 00927 //Attributes 00928 double lon; 00929 double lat; 00930 00932 StfPt(){}; 00933 00935 StfPt( double longitude, double latitude ) 00936 { 00937 lon = longitude; 00938 lat = latitude; 00939 } 00940 }; 00941 00945 class StfVhr 00946 { 00947 public: 00948 00949 //Attributes 00950 string stfName; 00951 string ReferenceOSF; 00952 string ReferenceSDF; 00953 long swathType; 00954 long swathPointType; 00955 00956 double timeStep; 00957 long refractionMode; 00958 double frequency; 00959 00960 long numPoints; 00961 vector<double> altitude; 00962 00963 bool geometryFlag; 00964 00965 long repCycle; 00966 long cycleLength; 00967 double mlstDrift; 00968 00969 long absOrbit; 00970 long orbitStart; 00971 long orbitStop; 00972 00973 double position[3]; 00974 double velocity[3]; 00975 00977 StfVhr(); 00978 00980 StfVhr( string stfNam, 00981 string refOSF, 00982 string refSDF, 00983 long swathTyp, 00984 long swathPointTyp, 00985 double timStep, 00986 long refrMode, 00987 double freq, 00988 long numP, 00989 const vector<double> &alt, 00990 bool geomFlag, 00991 long repCycl, 00992 long cyclLength, 00993 double meanlstDrift, 00994 long absOrb, 00995 long orbit0, 00996 long orbit1, 00997 double *pos, 00998 double *vel 00999 ); 01000 01002 StfVhr( const StfVhr &stfVhr ); 01003 01005 ~StfVhr(); 01006 01008 void operator=( const StfVhr &stfVhr ); 01009 01010 };//class StfVhr 01011 01015 class ZonePoint 01016 { 01017 public: 01018 01019 //Attributes 01020 double ptLong; 01021 double ptLat; 01022 01024 ZonePoint(){}; 01025 01027 ZonePoint( double ptLongitude, double ptLatitude) 01028 { 01029 ptLong = ptLongitude; 01030 ptLat = ptLatitude; 01031 } 01032 }; 01033 01037 class AttitudeModel 01038 { 01039 public: 01040 //Attributes 01041 long attitudeModel; 01042 long AOCS; 01043 ParamModel *paramModel; 01044 HarmonicModel *harmonicModel; 01045 FileModel *fileModel; 01046 AngleModel *angleModel; 01047 MatrixModel *matrixModel; 01048 01050 AttitudeModel(); 01051 01053 AttitudeModel( long attModel, 01054 long AOCSModel, 01055 ParamModel &parMod, 01056 HarmonicModel &harmMod, 01057 FileModel &fileMod, 01058 AngleModel &angleMod, 01059 MatrixModel &matrixMod 01060 ); 01061 01063 AttitudeModel( const AttitudeModel &attModel ); 01064 01066 ~AttitudeModel(); 01067 01069 void operator=( const AttitudeModel &attModel ); 01070 01071 protected: 01072 01073 private: 01075 void eraseAttitude(); 01076 }; 01077 01081 class PolarMotionParams 01082 { 01083 public: 01084 //Attributes 01085 double x; 01086 double y; 01087 01089 PolarMotionParams() 01090 { 01091 x = 0.; 01092 y = 0.; 01093 } 01094 01096 PolarMotionParams( double x1, double y1 ) 01097 { 01098 x = x1; 01099 y = y1; 01100 } 01101 01102 }; 01103 01107 class IersBulletinBrec 01108 { 01109 public: 01110 double day; 01111 double ut1Utc; 01112 double ut1Tai; 01113 PolarMotionParams polarMotionParams; 01114 01116 IersBulletinBrec() 01117 { 01118 day = 0.; 01119 ut1Utc = 0.; 01120 ut1Tai = 0.; 01121 } 01122 01124 IersBulletinBrec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01125 PolarMotionParams polarMotion) 01126 { 01127 day = dayUtc; 01128 ut1Utc = diffUt1Utc; 01129 ut1Tai = diffUt1Tai; 01130 polarMotionParams = polarMotion; 01131 } 01132 01133 }; 01134 01138 class IersBulletinArec 01139 { 01140 public: 01141 double day; 01142 double ut1Utc; 01143 double ut1Tai; 01144 PolarMotionParams polarMotionParams; 01145 01147 IersBulletinArec() 01148 { 01149 day = 0.; 01150 ut1Utc = 0.; 01151 ut1Tai = 0.; 01152 } 01153 01155 IersBulletinArec(double dayUtc, double diffUt1Utc, double diffUt1Tai, 01156 PolarMotionParams polarMotion) 01157 { 01158 day = dayUtc; 01159 ut1Utc = diffUt1Utc; 01160 ut1Tai = diffUt1Tai; 01161 polarMotionParams = polarMotion; 01162 } 01163 01164 }; 01165 01169 class PolarMotionFormula 01170 { 01171 public: 01172 01173 double ax; 01174 double bx; 01175 double cx; 01176 double dx; 01177 double ex; 01178 01179 double ay; 01180 double by; 01181 double cy; 01182 double dy; 01183 double ey; 01184 01185 double Aref; 01186 double Adiv; 01187 double Cref; 01188 double Cdiv; 01189 01191 PolarMotionFormula() 01192 { 01193 ax = 0.; 01194 bx = 0.; 01195 cx = 0.; 01196 dx = 0.; 01197 ex = 0.; 01198 01199 ay = 0.; 01200 by = 0.; 01201 cy = 0.; 01202 dy = 0.; 01203 ey = 0.; 01204 01205 Aref = 0.; 01206 Adiv = 0.; 01207 Cref = 0.; 01208 Cdiv = 0.; 01209 } 01210 01212 PolarMotionFormula(double a1, double b1, double c1, double d1, double e1, 01213 double a2, double b2, double c2, double d2, double e2, 01214 double Ar, double Ad, double Cr, double Cd) 01215 { 01216 ax = a1; 01217 bx = b1; 01218 cx = c1; 01219 dx = d1; 01220 ex = e1; 01221 01222 ay = a2; 01223 by = b2; 01224 cy = c2; 01225 dy = d2; 01226 ey = e2; 01227 01228 Aref = Ar; 01229 Adiv = Ad; 01230 Cref = Cr; 01231 Cdiv = Cd; 01232 } 01233 01234 }; 01235 01239 class TimeCorrelationFormula 01240 { 01241 public: 01242 01243 double a; 01244 double b; 01245 double bRef; 01246 01248 TimeCorrelationFormula() 01249 { 01250 a = 0.; 01251 b = 0.; 01252 bRef = 0.; 01253 } 01254 01256 TimeCorrelationFormula(double a1, double b1, double br) 01257 { 01258 a = a1; 01259 b = b1; 01260 bRef = br; 01261 } 01262 }; 01263 01267 class IersBulletinBFile 01268 { 01269 public: 01270 01271 string bulletinId; 01272 vector<IersBulletinBrec> finalTable; 01273 vector<IersBulletinBrec> preliminaryTable; 01274 01276 IersBulletinBFile() 01277 { 01278 bulletinId = ""; 01279 } 01280 01282 IersBulletinBFile(string bulId, 01283 vector<IersBulletinBrec> &vecFinal, 01284 vector<IersBulletinBrec> &vecPrel) 01285 { 01286 bulletinId = bulId; 01287 finalTable = vecFinal; 01288 preliminaryTable = vecPrel; 01289 } 01290 01291 };//class IersBulletinBFile 01292 01296 class IersBulletinAFile 01297 { 01298 public: 01299 01300 string bulletinId; 01301 vector<IersBulletinArec> predictionTable; 01302 PolarMotionFormula polarMotionFormula; 01303 TimeCorrelationFormula timeCorrelationFormula; 01304 01306 IersBulletinAFile() 01307 { 01308 bulletinId = ""; 01309 } 01310 01312 IersBulletinAFile(string bulId, 01313 vector<IersBulletinArec> &vecPred, 01314 PolarMotionFormula &polarFormula, 01315 TimeCorrelationFormula &timeFormula) 01316 { 01317 bulletinId = bulId; 01318 predictionTable = vecPred; 01319 polarMotionFormula = polarFormula; 01320 timeCorrelationFormula = timeFormula; 01321 } 01322 01323 };//class IersBulletinAFile 01324 01328 class DemMiniTiles 01329 { 01330 public: 01331 string fileName; 01332 double lonSize; 01333 double latSize; 01334 01336 DemMiniTiles() 01337 { 01338 fileName = ""; 01339 lonSize = 0.; 01340 latSize = 0.; 01341 } 01342 01344 DemMiniTiles(string fileN, double lon, double lat) 01345 { 01346 fileName = fileN; 01347 lonSize = lon; 01348 latSize = lat; 01349 } 01350 }; // AN-492 01351 01352 }//end EECFI 01353 01354 #endif