| Earth Observation Mission CFI Software Visibility Software User Manual |

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

# C:/Jenkins/workspace/CPP_create_documentation/slaves/windows8/lib_src/Visibility/include/VisibilityData.h

    00001 //--------------------------------------------------------
    00002 // Earth Observation Mission CFI Software. Version 4.11
    00003 //--------------------------------------------------------
    00004
    00005 //--------------------------------------------------------------------
    00006 // CVS Info: $Id: VisibilityData.h,v 1.27 2014-03-03 16:21:13 cavm Exp $
    00007 //--------------------------------------------------------------------
    00008
    00013
    00014 #ifndef __EECFI_VISIBILITYDATA__
    00015 #define __EECFI_VISIBILITYDATA__
    00016
    00017 //--INCLUDE-----------------------------------------------------------
    00018 #include "DataHandlingData.h"
    00019 #include "LibData.h"
    00020 #include "OrbitData.h"
    00021 #include "PointingData.h"
    00022 #include "ANXTime.h"
    00023 #include "StationRec.h"
    00024 #include "SdfFile.h"
    00025 #include "StfFile.h"
    00026 #include "ZoneRec.h"
    00027 #include "VisibilityDllExport.h"
    00028
    00029 //--NAMESPACES--------------------------------------------------------
    00030 using namespace std;
    00031
    00032 namespace EECFI
    00033 {
    00034   //------------------------------------------------------
    00035   // CONSTANT DATA
    00036   //------------------------------------------------------
    00037
    00038   //------------------------------------------------------
    00039   // DATA ENUMERATION
    00040   // Enumeration values are defined in an equivalent way to the C library
    00041   // except for the prefix that has been changed from XX_ to XXCFI_
    00042   //------------------------------------------------------
    00043
    00045   typedef enum
    00046   {
    00047     XVCFI_ORBIT_ABS = 0,
    00048     XVCFI_ORBIT_REL = 1
    00049   } OrbitTypeEnum;
    00050
    00052   typedef enum
    00053   {
    00054     XVCFI_STF = 0,
    00055     XVCFI_SDF = 1
    00056   } SwathTypeEnum;
    00057
    00059   typedef enum
    00060   {
    00061     XVCFI_COMPLETE = 0,
    00062     XVCFI_LEFT     = 1,
    00063     XVCFI_RIGHT    = 2,
    00064     XVCFI_BOTH     = 3
    00065   } CoverageEnum;
    00066
    00068   typedef enum
    00069   {
    00070     XVCFI_COMBINE   = 0,
    00071     XVCFI_AOS_LOS   = 1,
    00072     XVCFI_PHYSICAL  = 2,
    00073     XVCFI_FROM_FILE = 3
    00074   } MaskEnum;
    00075
    00077   typedef enum
    00078   {
    00079     XVCFI_STAR_UNDEFINED = 0,
    00080     XVCFI_STAR_UPPER     = 1,
    00081     XVCFI_STAR_LOWER     = 2,
    00082     XVCFI_STAR_LEFT      = 3,
    00083     XVCFI_STAR_RIGHT     = 4
    00084   } CoverageStarEnum;
    00085
    00087   typedef enum
    00088   {
    00089     XVCFI_ASCENDING  = 0,
    00090     XVCFI_DESDENDING = 1
    00091   } TimeSegmentsOrbitDirectionEnum;
    00092
    00094   typedef enum
    00095   {
    00096     XVCFI_NO_VIS             = -1,
    00097     XVCFI_ZONE_VIS           =  0,
    00098     XVCFI_STATION_VIS        =  1,
    00099     XVCFI_MULTI_ZONES_VIS    =  2,
    00100     XVCFI_MULTI_STATIONS_VIS =  3,
    00101     XVCFI_MAPPING_VIS        =  4,
    00102     XVCFI_SC_VIS             =  5,
    00103     XVCFI_STAR_VIS           =  6
    00104   } VisibilityTypeEnum;
    00105
    00107   typedef enum
    00108   {
    00109     XVCFI_SAT_DEFAULT     = XLCFI_SAT_DEFAULT,
    00110     XVCFI_SAT_DEFAULT1    = XLCFI_SAT_DEFAULT1,
    00111     XVCFI_SAT_DEFAULT2    = XLCFI_SAT_DEFAULT2,
    00112     XVCFI_SAT_DEFAULT3    = XLCFI_SAT_DEFAULT3,
    00113     XVCFI_SAT_DEFAULT4    = XLCFI_SAT_DEFAULT4,
    00114     XVCFI_SAT_DEFAULT5    = XLCFI_SAT_DEFAULT5,
    00115     XVCFI_SAT_DEFAULT6    = XLCFI_SAT_DEFAULT6,
    00116     XVCFI_SAT_DEFAULT7    = XLCFI_SAT_DEFAULT7,
    00117     XVCFI_SAT_DEFAULT8    = XLCFI_SAT_DEFAULT8,
    00118     XVCFI_SAT_DEFAULT9    = XLCFI_SAT_DEFAULT9,
    00119     XVCFI_SAT_ERS1        = XLCFI_SAT_ERS1,
    00120     XVCFI_SAT_ERS2        = XLCFI_SAT_ERS2,
    00121     XVCFI_SAT_ENVISAT     = XLCFI_SAT_ENVISAT,
    00122     XVCFI_SAT_METOP1      = XLCFI_SAT_METOP1,
    00123     XVCFI_SAT_METOP2      = XLCFI_SAT_METOP2,
    00124     XVCFI_SAT_METOP3      = XLCFI_SAT_METOP3,
    00125     XVCFI_SAT_CRYOSAT     = XLCFI_SAT_CRYOSAT,
    00126     XVCFI_SAT_ADM         = XLCFI_SAT_ADM,
    00127     XVCFI_SAT_GOCE        = XLCFI_SAT_GOCE,
    00128     XVCFI_SAT_SMOS        = XLCFI_SAT_SMOS,
    00129     XVCFI_SAT_TERRASAR    = XLCFI_SAT_TERRASAR,
    00130     XVCFI_SAT_EARTHCARE   = XLCFI_SAT_EARTHCARE,
    00131     XVCFI_SAT_SWARM_A     = XLCFI_SAT_SWARM_A,
    00132     XVCFI_SAT_SWARM_B     = XLCFI_SAT_SWARM_B,
    00133     XVCFI_SAT_SWARM_C     = XLCFI_SAT_SWARM_C,
    00134     XVCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A,
    00135     XVCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B,
    00136     XVCFI_SAT_SENTINEL_2  = XLCFI_SAT_SENTINEL_2,
    00137     XVCFI_SAT_SENTINEL_3  = XLCFI_SAT_SENTINEL_3,
    00138     XVCFI_SAT_SEOSAT      = XLCFI_SAT_SEOSAT,
    00139     XVCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C,
    00140     XVCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A,
    00141     XVCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B,
    00142     XVCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C,
    00143     XVCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A,
    00144     XVCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B,
    00145     XVCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C,
    00146     XVCFI_SAT_JASON_CSA   = XLCFI_SAT_JASON_CSA,   // AN-531
    00147     XVCFI_SAT_JASON_CSB   = XLCFI_SAT_JASON_CSB,   // AN-531
    00148     XVCFI_SAT_METOP_SG_A1 = XLCFI_SAT_METOP_SG_A1, // AN-530
    00149     XVCFI_SAT_METOP_SG_A2 = XLCFI_SAT_METOP_SG_A2, // AN-530
    00150     XVCFI_SAT_METOP_SG_A3 = XLCFI_SAT_METOP_SG_A3, // AN-530
    00151     XVCFI_SAT_METOP_SG_B1 = XLCFI_SAT_METOP_SG_B1, // AN-530
    00152     XVCFI_SAT_METOP_SG_B2 = XLCFI_SAT_METOP_SG_B2, // AN-530
    00153     XVCFI_SAT_METOP_SG_B3 = XLCFI_SAT_METOP_SG_B3, // AN-530
    00154     XVCFI_SAT_SENTINEL_5P = XLCFI_SAT_SENTINEL_5P, // AN-502
    00155     XVCFI_SAT_BIOMASS     = XLCFI_SAT_BIOMASS,     // AN-601
    00156     XVCFI_SAT_SENTINEL_5  = XLCFI_SAT_SENTINEL_5,  // AN-639
    00157     XVCFI_SAT_SAOCOM_CS   = XLCFI_SAT_SAOCOM_CS,   // AN-640
    00158     XVCFI_SAT_GENERIC     = XLCFI_SAT_GENERIC,
    00159     // AN-353
    00160     XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO,
    00161     XVCFI_SAT_MTG         = XLCFI_SAT_MTG,
    00162     // END AN-353
    00163     XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550
    00164
    00165   } SatIdVisibilityEnum;
    00166
    00167   // AN-468
    00169   typedef enum
    00170   {
    00171     XVCFI_FILE_AUTO,
    00172     XVCFI_FILE_SDF,
    00173     XVCFI_FILE_STF,
    00174     XVCFI_SDF_DATA,
    00175     XVCFI_STF_DATA
    00176   } XVSwathInitEnum;
    00177
    00179   typedef enum
    00180   {
    00181     XVCFI_USE_ZONE_DB_FILE,
    00182     XVCFI_USE_ZONE_DATA
    00183   } XVZoneTypeEnum;
    00184
    00186   typedef enum
    00187   {
    00188     XVCFI_DO_NOT_COMPUTE = 0,
    00189     XVCFI_COMPUTE        = 1
    00190   } XVComputeFlagEnum;
    00191
    00193   typedef enum
    00194   {
    00195     XVCFI_USE_STATION_FILE,
    00196     XVCFI_USE_STATION_DATA,
    00197     XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE,
    00198     XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE
    00199   } XVStationTypeEnum;
    00200
    00202   typedef enum
    00203   {
    00204     XVCFI_UTC_TYPE,
    00205     XVCFI_ORBIT_TYPE,
    00206     XVCFI_BOTH_TYPE
    00207   } XVTimeTypeEnum;
    00208   // END AN-468
    00209
    00211   typedef enum
    00212   {
    00213     XVCFI_COVERAGE_FIXED_DISTANCE,
    00214     XVCFI_COVERAGE_PERCENTAGE_PRECISION
    00215   } XVTypeCoverageEnum; // AN-505
    00216
    00217
    00218   //------------------------------------------------------
    00219   // DATA STRUCTURES
    00220   //------------------------------------------------------
    00222   class XV_DECL VisExtraInfo
    00223   {
    00224     // No atributes
    00225   };
    00226
    00228   class XV_DECL ZoneExtraInfo : public VisExtraInfo
    00229   {
    00230     public:
    00231
    00232       // AN-468
    00233       string zoneId;
    00234       // END AN-468
    00235       long coverage;
    00236
    00237   };
    00238
    00240   class XV_DECL StationExtraInfo : public VisExtraInfo
    00241   {
    00242     public:
    00243
    00244       // AN-468
    00245       string stationId;
    00246       double utcTime;
    00247       // END AN-468
    00248       // Zero doppler segments ( ONLY used in stationVisTime ).
    00249       ANXTime zdop;
    00250   };
    00251
    00253   class XV_DECL MultiZonesExtraInfo : public VisExtraInfo
    00254   {
    00255     public:
    00256
    00257       long numberOfZones;
    00258       vector<long> zonesInSegment;
    00259       vector<long> multiCoverage;
    00260       // AN-468
    00261       vector<string> zoneNamesInSegment;
    00262   };
    00263
    00265   class XV_DECL MultiStationsExtraInfo : public VisExtraInfo
    00266   {
    00267     public:
    00268
    00269       long numberOfStations;
    00270       vector<long> stationsInSegment;
    00271       vector<ANXTime> multiZdop;
    00272       // AN-468
    00273       vector<string> stationNamesInSegment;
    00274       vector<double> utcTime;
    00275   };
    00276
    00278   class XV_DECL MappingExtraInfo : public VisExtraInfo
    00279   {
    00280     public:
    00281
    00282       long coverage;
    00283       long direction;
    00284       // AN-468
    00285       string zoneId;
    00286       // END AN-468
    00287
    00288   };
    00289
    00291   class XV_DECL StarExtraInfo : public VisExtraInfo
    00292   {
    00293     public:
    00294
    00295       long startCoverage;
    00296       long stopCoverage;
    00297   };
    00298
    00300   class XV_DECL OrbitExtraInfo
    00301   {
    00302     public:
    00303       vector<double> szaUp;
    00304       vector<double> szaDown;
    00305       double eclipseEntry;
    00306       double eclipseExit;
    00307       double sunMoonEntry;
    00308       double sunMoonExit;
    00309   };
    00310
    00312   class XV_DECL ScfAppear
    00313   {
    00314     public:
    00315       long colour;
    00316       long draw;
    00317       long fill;
    00318       long opacity;
    00319   };
    00320
    00321   // AN-430
    00323   class XV_DECL AzElMask
    00324   {
    00325     public:
    00326       long numMaskPt;
    00327       long status;
    00328
    00329
    00330
    00331
    00332
    00333
    00334
    00335
    00336
    00337
    00338
    00339
    00340       double azimuth[MaxStationVertices];
    00341       double elevation[MaxStationVertices];
    00342   };
    00343
    00345   class XV_DECL LinkMask
    00346   {
    00347     public:
    00348       AzElMask inclMask;
    00349       AzElMask exclMask;
    00350   };
    00351
    00353   class XV_DECL LinkData
    00354   {
    00355     public:
    00356       LinkMask maskData;
    00357       double minTgHeight;
    00358   };
    00359   // End AN-430
    00360
    00361   // AN-468
    00363   class XV_DECL SwathInfo
    00364   {
    00365     public:
    00366       long type;
    00367       string filename;
    00368       SdfFile sdfFile;
    00369       StfFile stfFile;
    00370       long    nofRegenOrbits;
    00371
    00372       SwathInfo()
    00373       {
    00374         // Empty
    00375       }
    00376
    00377       SwathInfo(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn)
    00378       {
    00379         type = typeIn;
    00380         switch(type)
    00381         {
    00382           case XVCFI_FILE_AUTO:
    00383           case XVCFI_FILE_STF:
    00384           case XVCFI_FILE_SDF:
    00385           {
    00386             filename = fileIn;
    00387             break;
    00388           }
    00389
    00390           case XVCFI_STF_DATA:
    00391           {
    00392             stfFile = stfFileIn;
    00393             break;
    00394           }
    00395
    00396           case XVCFI_SDF_DATA:
    00397           {
    00398             sdfFile = sdfFileIn;
    00399             break;
    00400           }
    00401         }
    00402
    00403         nofRegenOrbits = nofIn;
    00404       }
    00405   };
    00406
    00407   // AN-468
    00409   class XV_DECL SwathIdData
    00410   {
    00411     public:
    00412       long type;
    00413       string filename;
    00414       SdfFile sdfFile;
    00415       StfFile stfFile;
    00416       long    nofRegenOrbits;
    00417       long orbitRef;
    00418       long valOrbitStart;
    00419       long valOrbitStop;
    00420
    00421       SwathIdData()
    00422       {
    00423         // Empty
    00424       }
    00425
    00426       SwathIdData(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn,
    00427                   long refOrb, long val0, long val1)
    00428       {
    00429         type = typeIn;
    00430         orbitRef = refOrb;
    00431         valOrbitStart = val0;
    00432         valOrbitStop  = val1;
    00433
    00434         switch(type)
    00435         {
    00436           case XVCFI_FILE_AUTO:
    00437           case XVCFI_FILE_STF:
    00438           case XVCFI_FILE_SDF:
    00439           {
    00440             filename = fileIn;
    00441             break;
    00442           }
    00443
    00444           case XVCFI_STF_DATA:
    00445           {
    00446             stfFile = stfFileIn;
    00447             break;
    00448           }
    00449
    00450           case XVCFI_SDF_DATA:
    00451           {
    00452             sdfFile = sdfFileIn;
    00453             break;
    00454           }
    00455         }
    00456
    00457         nofRegenOrbits = nofIn;
    00458       }
    00459   };
    00460
    00462   class XV_DECL VisTime
    00463   {
    00464     public:
    00465       long type;
    00466       double utcTime;
    00467       long orbitNum;
    00468       long sec;
    00469       long msec;
    00470
    00471       VisTime()
    00472       {
    00473         type      = 0;
    00474         utcTime   = 0.;
    00475         orbitNum  = 0;
    00476         sec       = 0;
    00477         msec      = 0;
    00478       }
    00479       VisTime(long typeIn, double utcIn, long orbitNumIn,
    00480               long secIn, long msecIn)
    00481       {
    00482         type      = typeIn;
    00483         utcTime   = utcIn;
    00484         orbitNum  = orbitNumIn;
    00485         sec       = secIn;
    00486         msec      = msecIn;
    00487       }
    00488   };
    00489
    00491   class XV_DECL VisTimeInterval
    00492   {
    00493     public:
    00494       VisTime tstart;
    00495       VisTime tstop;
    00496
    00497       VisTimeInterval()
    00498       {
    00499       }
    00500
    00501       VisTimeInterval(VisTime t0, VisTime t1)
    00502       {
    00503         tstart = t0;
    00504         tstop  = t1;
    00505       }
    00506   };
    00507
    00509   class XV_DECL ZoneInfo
    00510   {
    00511     public:
    00512
    00513       string zoneId;
    00514       long type;
    00515       string zoneDBFilename;
    00516       ZoneRec zoneData;
    00517       long    projection;
    00518       double  minDuration;
    00519
    00521       ZoneInfo()
    00522       {
    00523         zoneId = "";
    00524         type = 0;
    00525         zoneDBFilename = "";
    00526         projection = 0;
    00527         minDuration = 0.;
    00528       }
    00529
    00531       ZoneInfo( string zoneIdIn, string zoneDBIn,
    00532                 long projIn, long durIn)
    00533       {
    00534         type = XVCFI_USE_ZONE_DB_FILE;
    00535         zoneId = zoneIdIn;
    00536         zoneDBFilename = zoneDBIn;
    00537         projection = projIn;
    00538         minDuration = durIn;
    00539       }
    00540
    00542       ZoneInfo( ZoneRec zoneIn, long projIn, long durIn)
    00543       {
    00544         type = XVCFI_USE_ZONE_DATA;
    00545         zoneData = zoneIn;
    00546         projection = projIn;
    00547         minDuration = durIn;
    00548       }
    00549
    00550   };
    00551
    00553   class XV_DECL ZoneInfoList
    00554   {
    00555     public:
    00556
    00557       long    calcFlag;
    00558       vector<ZoneInfo> zoneInfo;
    00559
    00561       ZoneInfoList()
    00562       {
    00563         calcFlag = XVCFI_COMPUTE;
    00564       }
    00565
    00567       ZoneInfoList( long calcFlagIn, vector<ZoneInfo> zoneInfoIn)
    00568       {
    00569         calcFlag = calcFlagIn;
    00570         zoneInfo = zoneInfoIn;
    00571       }
    00572
    00573   };
    00574
    00584   class XV_DECL StationInfo
    00585   {
    00586     public:
    00587
    00588       long type;
    00589       string stationId;
    00590       string stationDBFilename;
    00591       StationRec stationData;
    00592       double defaultAos;
    00593       double defaultLos;
    00594       long    defaultMask;
    00595       double  minDuration;
    00596
    00598       StationInfo()
    00599       {
    00600         stationId = "";
    00601         type = 0;
    00602         stationDBFilename = "";
    00603         defaultAos = 0.;
    00604         defaultLos = 0.;
    00605         defaultMask = 0;
    00606         minDuration = 0.;
    00607       }
    00608
    00610       StationInfo( long typeIn, string stationIdIn, string stationDBIn,
    00611                    double defaultAosIn, double defaultLosIn, long defaultMaskIn,
    00612                    double durIn)
    00613       {
    00614         type = typeIn;
    00615         stationId = stationIdIn;
    00616         stationDBFilename = stationDBIn;
    00617         defaultAos = defaultAosIn;
    00618         defaultLos = defaultLosIn;
    00619         defaultMask = defaultMaskIn;
    00620         minDuration = durIn;
    00621       }
    00622
    00623       StationInfo( long typeIn, StationRec staIn,
    00624                    double defaultAosIn, double defaultLosIn, long defaultMaskIn,
    00625                    double durIn)
    00626       {
    00627         type = typeIn;
    00628         stationData = staIn;
    00629         defaultAos = defaultAosIn;
    00630         defaultLos = defaultLosIn;
    00631         defaultMask = defaultMaskIn;
    00632         minDuration = durIn;
    00633       }
    00634   };
    00635
    00637   class XV_DECL StationInfoList
    00638   {
    00639     public:
    00640
    00641       long    calcFlag;
    00642       vector<StationInfo> stationInfo;
    00643
    00645       StationInfoList()
    00646       {
    00647         calcFlag = XVCFI_COMPUTE;
    00648       }
    00649
    00651       StationInfoList( long calcFlagIn, vector<StationInfo> staInfoIn)
    00652       {
    00653         calcFlag = calcFlagIn;
    00654         stationInfo = staInfoIn;
    00655       }
    00656
    00657   };
    00658
    00660   class XV_DECL SwathPoint
    00661   {
    00662     public:
    00663       double lon;
    00664       double lat;
    00665       double alt;
    00666
    00668       SwathPoint(double lonIn, double latIn, double altIn)
    00669       {
    00670         lon = lonIn;
    00671         lat = latIn;
    00672         alt = altIn;
    00673       }
    00674   } ;
    00675
    00677   class XV_DECL SwathPointList
    00678   {
    00679     public:
    00680       vector<SwathPoint> swathPoint;
    00681
    00683       SwathPointList(vector<SwathPoint> list)
    00684       {
    00685         swathPoint = list;
    00686       }
    00687   };
    00688
    00689   // END 468
    00690
    00691 } // closing namespace
    00692
    00693 #endif