Earth Observation Mission CFI Software Visibility Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.26 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 <ANXTime.h> 00019 #include <DataHandlingData.h> 00020 #include <LibData.h> 00021 #include <OrbitData.h> 00022 #include <PointingData.h> 00023 #include <SdfFile.h> 00024 #include <StationRec.h> 00025 #include <StfFile.h> 00026 #include <VisibilityDllExport.h> 00027 #include <ZoneRec.h> 00028 00029 //--NAMESPACES-------------------------------------------------------- 00030 00031 namespace EECFI 00032 { 00033 //------------------------------------------------------ 00034 // CONSTANT DATA 00035 //------------------------------------------------------ 00036 00037 //------------------------------------------------------ 00038 // DATA ENUMERATION 00039 // Enumeration values are defined in an equivalent way to the C library 00040 // except for the prefix that has been changed from XX_ to XXCFI_ 00041 //------------------------------------------------------ 00042 00044 typedef enum 00045 { 00046 XVCFI_ORBIT_ABS = 0, 00047 XVCFI_ORBIT_REL = 1 00048 } OrbitTypeEnum; 00049 00051 typedef enum 00052 { 00053 XVCFI_STF = 0, 00054 XVCFI_SDF = 1 00055 } SwathTypeEnum; 00056 00058 typedef enum 00059 { 00060 XVCFI_COMPLETE = 0, 00061 XVCFI_LEFT = 1, 00062 XVCFI_RIGHT = 2, 00063 XVCFI_BOTH = 3 00064 } CoverageEnum; 00065 00067 typedef enum 00068 { 00069 XVCFI_COMBINE = 0, 00070 XVCFI_AOS_LOS = 1, 00071 XVCFI_PHYSICAL = 2, 00072 XVCFI_FROM_FILE = 3 00073 } MaskEnum; 00074 00076 typedef enum 00077 { 00078 XVCFI_STAR_UNDEFINED = 0, 00079 XVCFI_STAR_UPPER = 1, 00080 XVCFI_STAR_LOWER = 2, 00081 XVCFI_STAR_LEFT = 3, 00082 XVCFI_STAR_RIGHT = 4 00083 } CoverageStarEnum; 00084 00086 typedef enum 00087 { 00088 XVCFI_ASCENDING = 0, 00089 XVCFI_DESDENDING = 1 00090 } TimeSegmentsOrbitDirectionEnum; 00091 00093 typedef enum 00094 { 00095 XVCFI_NO_VIS = -1, 00096 XVCFI_ZONE_VIS = 0, 00097 XVCFI_STATION_VIS = 1, 00098 XVCFI_MULTI_ZONES_VIS = 2, 00099 XVCFI_MULTI_STATIONS_VIS = 3, 00100 XVCFI_MAPPING_VIS = 4, 00101 XVCFI_SC_VIS = 5, 00102 XVCFI_CELESTIAL_BODY_VIS = 6, 00103 XVCFI_STAR_VIS = 7 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_FLEX = XLCFI_SAT_FLEX, /* AN-683 */ 00159 XVCFI_SAT_SENTINEL_6A = XLCFI_SAT_SENTINEL_6A, 00160 XVCFI_SAT_SENTINEL_6B = XLCFI_SAT_SENTINEL_6B, 00161 XVCFI_SAT_CIMR = XLCFI_SAT_CIMR, 00162 XVCFI_SAT_ROSEL = XLCFI_SAT_ROSEL, 00163 XVCFI_SAT_CHIME = XLCFI_SAT_CHIME, 00164 XVCFI_SAT_CRISTAL = XLCFI_SAT_CRISTAL, 00165 XVCFI_SAT_CO2M = XLCFI_SAT_CO2M, 00166 XVCFI_SAT_LSTM = XLCFI_SAT_LSTM, 00167 XVCFI_SAT_FORUM = XLCFI_SAT_FORUM, 00168 XVCFI_SAT_TRUTHS = XLCFI_SAT_TRUTHS, 00169 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00170 // AN-353 00171 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00172 XVCFI_SAT_MTG = XLCFI_SAT_MTG, 00173 // END AN-353 00174 XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00175 00176 } SatIdVisibilityEnum; 00177 00178 // AN-468 00180 typedef enum 00181 { 00182 XVCFI_FILE_AUTO, 00183 XVCFI_FILE_SDF, 00184 XVCFI_FILE_STF, 00185 XVCFI_SDF_DATA, 00186 XVCFI_STF_DATA 00187 } XVSwathInitEnum; 00188 00190 typedef enum 00191 { 00192 XVCFI_USE_ZONE_DB_FILE, 00193 XVCFI_USE_ZONE_DATA 00194 } XVZoneTypeEnum; 00195 00197 typedef enum 00198 { 00199 XVCFI_DO_NOT_COMPUTE = 0, 00200 XVCFI_COMPUTE = 1 00201 } XVComputeFlagEnum; 00202 00204 typedef enum 00205 { 00206 XVCFI_USE_STATION_FILE, 00207 XVCFI_USE_STATION_DATA, 00208 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00209 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00210 } XVStationTypeEnum; 00211 00213 typedef enum 00214 { 00215 XVCFI_UTC_TYPE, 00216 XVCFI_ORBIT_TYPE, 00217 XVCFI_BOTH_TYPE 00218 } XVTimeTypeEnum; 00219 // END AN-468 00220 00222 typedef enum 00223 { 00224 XVCFI_COVERAGE_FIXED_DISTANCE, 00225 XVCFI_COVERAGE_PERCENTAGE_PRECISION 00226 } XVTypeCoverageEnum; // AN-505 00227 00228 typedef enum 00229 { 00230 XVCFI_SUN, 00231 XVCFI_MOON 00232 } XVTypeCelestialBodyEnum; // AN-677 00233 00234 //------------------------------------------------------ 00235 // DATA STRUCTURES 00236 //------------------------------------------------------ 00238 class XV_DECL VisExtraInfo 00239 { 00240 public: 00241 virtual ~VisExtraInfo(); 00242 // No attributes 00243 }; 00244 00246 class XV_DECL ZoneExtraInfo : public VisExtraInfo 00247 { 00248 public: 00249 ZoneExtraInfo() {} 00250 ZoneExtraInfo(const ZoneExtraInfo& other); 00251 ~ZoneExtraInfo(); 00252 ZoneExtraInfo& operator=(const ZoneExtraInfo& other); 00253 00254 std::string zoneId; 00255 long coverage; 00256 }; 00257 00259 class XV_DECL StationExtraInfo : public VisExtraInfo 00260 { 00261 public: 00262 StationExtraInfo() {} 00263 StationExtraInfo(const StationExtraInfo& other); 00264 ~StationExtraInfo(); 00265 StationExtraInfo& operator=(const StationExtraInfo& other); 00266 00267 std::string stationId; 00268 double utcTime; 00269 // Zero doppler segments ( ONLY used in stationVisTime ). 00270 ANXTime zdop; 00271 }; 00272 00274 class XV_DECL MultiZonesExtraInfo : public VisExtraInfo 00275 { 00276 public: 00277 MultiZonesExtraInfo() {} 00278 MultiZonesExtraInfo(const MultiZonesExtraInfo& other); 00279 ~MultiZonesExtraInfo(); 00280 MultiZonesExtraInfo& operator=(const MultiZonesExtraInfo& other); 00281 00282 long numberOfZones; 00283 std::vector<long> zonesInSegment; 00284 std::vector<long> multiCoverage; 00285 std::vector<std::string> zoneNamesInSegment; 00286 }; 00287 00289 class XV_DECL MultiStationsExtraInfo : public VisExtraInfo 00290 { 00291 public: 00292 MultiStationsExtraInfo() {} 00293 MultiStationsExtraInfo(const MultiStationsExtraInfo& other); 00294 ~MultiStationsExtraInfo(); 00295 MultiStationsExtraInfo& operator=(const MultiStationsExtraInfo& other); 00296 00297 long numberOfStations; 00298 std::vector<long> stationsInSegment; 00299 std::vector<ANXTime> multiZdop; 00300 std::vector<std::string> stationNamesInSegment; 00301 std::vector<double> utcTime; 00302 }; 00303 00305 class XV_DECL MappingExtraInfo : public VisExtraInfo 00306 { 00307 public: 00308 MappingExtraInfo() {} 00309 MappingExtraInfo(const MappingExtraInfo& other); 00310 ~MappingExtraInfo(); 00311 MappingExtraInfo& operator=(const MappingExtraInfo& other); 00312 00313 long coverage; 00314 long direction; 00315 std::string zoneId; 00316 }; 00317 00319 class XV_DECL StarExtraInfo : public VisExtraInfo 00320 { 00321 public: 00322 StarExtraInfo() {} 00323 StarExtraInfo(const StarExtraInfo& other); 00324 ~StarExtraInfo(); 00325 StarExtraInfo& operator=(const StarExtraInfo& other); 00326 00327 long startCoverage; 00328 long stopCoverage; 00329 }; 00330 00332 class XV_DECL OrbitExtraInfo 00333 { 00334 public: 00335 std::vector<double> szaUp; 00336 std::vector<double> szaDown; 00337 double eclipseEntry; 00338 double eclipseExit; 00339 double sunMoonEntry; 00340 double sunMoonExit; 00341 }; 00342 00344 class XV_DECL ScfAppear 00345 { 00346 public: 00347 long colour; 00348 long draw; 00349 long fill; 00350 long opacity; 00351 }; 00352 00353 // AN-468 00355 class XV_DECL SwathInfo 00356 { 00357 public: 00358 long type; 00359 std::string filename; 00360 SdfFile sdfFile; 00361 StfFile stfFile; 00362 long nofRegenOrbits; 00363 00364 SwathInfo() : 00365 type(0L), filename(), sdfFile(), stfFile(), nofRegenOrbits(0L) {} 00366 00367 SwathInfo(long typeIn, const std::string& fileIn, const SdfFile& sdfFileIn, const StfFile& stfFileIn, long nofIn) : 00368 type(typeIn), filename(), sdfFile(), stfFile(), nofRegenOrbits(nofIn) 00369 { 00370 switch(type) 00371 { 00372 case XVCFI_FILE_AUTO: 00373 case XVCFI_FILE_STF: 00374 case XVCFI_FILE_SDF: 00375 { 00376 filename = fileIn; 00377 break; 00378 } 00379 case XVCFI_STF_DATA: 00380 { 00381 stfFile = stfFileIn; 00382 break; 00383 } 00384 case XVCFI_SDF_DATA: 00385 { 00386 sdfFile = sdfFileIn; 00387 break; 00388 } 00389 } 00390 } 00391 }; 00392 00393 // AN-468 00395 class XV_DECL SwathIdData 00396 { 00397 public: 00398 long type; 00399 std::string filename; 00400 SdfFile sdfFile; 00401 StfFile stfFile; 00402 long nofRegenOrbits; 00403 long orbitRef; 00404 long valOrbitStart; 00405 long valOrbitStop; 00406 00407 SwathIdData() : 00408 type(0L), filename(), sdfFile(), stfFile(), nofRegenOrbits(0L), orbitRef(0L), valOrbitStart(0L), valOrbitStop(0L) {} 00409 00410 SwathIdData(long typeIn, const std::string& fileIn, const SdfFile& sdfFileIn, const StfFile& stfFileIn, long nofIn, long refOrb, long val0, long val1) : 00411 type(typeIn), filename(), sdfFile(), stfFile(), nofRegenOrbits(nofIn), orbitRef(refOrb), valOrbitStart(val0), valOrbitStop(val1) 00412 { 00413 switch(type) 00414 { 00415 case XVCFI_FILE_AUTO: 00416 case XVCFI_FILE_STF: 00417 case XVCFI_FILE_SDF: 00418 { 00419 filename = fileIn; 00420 break; 00421 } 00422 case XVCFI_STF_DATA: 00423 { 00424 stfFile = stfFileIn; 00425 break; 00426 } 00427 case XVCFI_SDF_DATA: 00428 { 00429 sdfFile = sdfFileIn; 00430 break; 00431 } 00432 } 00433 } 00434 }; 00435 00437 class XV_DECL VisTime 00438 { 00439 public: 00440 long type; 00441 double utcTime; 00442 long orbitNum; 00443 long sec; 00444 long msec; 00445 00446 VisTime() : 00447 type(0L), utcTime(0.), orbitNum(0L), sec(0L), msec(0L) {} 00448 00449 VisTime(long typeIn, double utcIn, long orbitNumIn, long secIn, long msecIn) : 00450 type(typeIn), utcTime(utcIn), orbitNum(orbitNumIn), sec(secIn), msec(msecIn) {} 00451 }; 00452 00454 class XV_DECL VisTimeInterval 00455 { 00456 public: 00457 VisTime tstart; 00458 VisTime tstop; 00459 00460 VisTimeInterval() : 00461 tstart(), tstop() {} 00462 00463 VisTimeInterval(const VisTime& t0, const VisTime& t1) : 00464 tstart(t0), tstop(t1) {} 00465 }; 00466 00468 class XV_DECL ZoneInfo 00469 { 00470 public: 00471 std::string zoneId; 00472 long type; 00473 std::string zoneDBFilename; 00474 ZoneRec zoneData; 00475 long projection; 00476 double minDuration; 00477 00479 ZoneInfo() : 00480 zoneId(), type(0L), zoneDBFilename(), projection(0L), minDuration(0.) 00481 { 00482 } 00483 00485 ZoneInfo(const std::string& zoneIdIn, const std::string& zoneDBIn, long projIn, long durIn) : 00486 zoneId(zoneIdIn), type(XVCFI_USE_ZONE_DB_FILE), zoneDBFilename(zoneDBIn), projection(projIn), minDuration(static_cast<double>(durIn)) 00487 { 00488 } 00489 00491 ZoneInfo(const ZoneRec& zoneIn, long projIn, long durIn) : 00492 zoneId(), type(XVCFI_USE_ZONE_DATA), zoneData(zoneIn), projection(projIn), minDuration(static_cast<double>(durIn)) 00493 { 00494 } 00495 }; 00496 00498 class XV_DECL ZoneInfoList 00499 { 00500 public: 00501 long calcFlag; 00502 std::vector<ZoneInfo> zoneInfo; 00503 00505 ZoneInfoList() : 00506 calcFlag(XVCFI_COMPUTE), zoneInfo() {} 00507 00509 ZoneInfoList(long calcFlagIn, const std::vector<ZoneInfo>& zoneInfoIn) : 00510 calcFlag(calcFlagIn), zoneInfo(zoneInfoIn) {} 00511 }; 00512 00522 class XV_DECL StationInfo 00523 { 00524 public: 00525 long type; 00526 std::string stationId; 00527 std::string stationDBFilename; 00528 StationRec stationData; 00529 double defaultAos; 00530 double defaultLos; 00531 long defaultMask; 00532 double minDuration; 00533 00535 StationInfo() : 00536 type(0L), stationId(), stationDBFilename(), stationData(), defaultAos(0.), defaultLos(0.), defaultMask(0L), minDuration(0.) {} 00537 00539 StationInfo(long typeIn, const std::string& stationIdIn, const std::string& stationDBIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) : 00540 type(typeIn), stationId(stationIdIn), stationDBFilename(stationDBIn), stationData(), defaultAos(defaultAosIn), defaultLos(defaultLosIn), defaultMask(defaultMaskIn), minDuration(durIn) {} 00541 00542 StationInfo(long typeIn, const StationRec& staIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) : 00543 type(typeIn), stationId(), stationDBFilename(), stationData(staIn), defaultAos(defaultAosIn), defaultLos(defaultLosIn), defaultMask(defaultMaskIn), minDuration(durIn) {} 00544 }; 00545 00547 class XV_DECL StationInfoList 00548 { 00549 public: 00550 long calcFlag; 00551 std::vector<StationInfo> stationInfo; 00552 00554 StationInfoList() : 00555 calcFlag(XVCFI_COMPUTE), stationInfo() {} 00556 00558 StationInfoList(long calcFlagIn, const std::vector<StationInfo>& staInfoIn) : 00559 calcFlag(calcFlagIn), stationInfo(staInfoIn) {} 00560 }; 00561 00563 class XV_DECL SwathPoint 00564 { 00565 public: 00566 double lon; 00567 double lat; 00568 double alt; 00569 00571 SwathPoint(double lonIn, double latIn, double altIn) : 00572 lon(lonIn), lat(latIn), alt(altIn) {} 00573 }; 00574 00576 class XV_DECL SwathPointList 00577 { 00578 public: 00579 std::vector<SwathPoint> swathPoint; 00580 00582 SwathPointList(const std::vector<SwathPoint>& list) : 00583 swathPoint(list) {} 00584 }; 00585 00586 // END 468 00587 00588 } // namespace EECFI 00589 00590 #endif