![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.8 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 00028 //--NAMESPACES-------------------------------------------------------- 00029 using namespace std; 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_STAR_VIS = 6 00103 } VisibilityTypeEnum; 00104 00106 typedef enum 00107 { 00108 XVCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00109 XVCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00110 XVCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00111 XVCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00112 XVCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00113 XVCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00114 XVCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00115 XVCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00116 XVCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00117 XVCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00118 XVCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00119 XVCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00120 XVCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00121 XVCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00122 XVCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00123 XVCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00124 XVCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00125 XVCFI_SAT_ADM = XLCFI_SAT_ADM, 00126 XVCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00127 XVCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00128 XVCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00129 XVCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00130 XVCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00131 XVCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00132 XVCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00133 XVCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00134 XVCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00135 XVCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00136 XVCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00137 XVCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00138 XVCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00139 XVCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00140 XVCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00141 XVCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00142 XVCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00143 XVCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00144 XVCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00145 XVCFI_SAT_JASON_CSA = XLCFI_SAT_JASON_CSA, // AN-531 00146 XVCFI_SAT_JASON_CSB = XLCFI_SAT_JASON_CSB, // AN-531 00147 XVCFI_SAT_METOP_SG_A1 = XLCFI_SAT_METOP_SG_A1, // AN-530 00148 XVCFI_SAT_METOP_SG_A2 = XLCFI_SAT_METOP_SG_A2, // AN-530 00149 XVCFI_SAT_METOP_SG_A3 = XLCFI_SAT_METOP_SG_A3, // AN-530 00150 XVCFI_SAT_METOP_SG_B1 = XLCFI_SAT_METOP_SG_B1, // AN-530 00151 XVCFI_SAT_METOP_SG_B2 = XLCFI_SAT_METOP_SG_B2, // AN-530 00152 XVCFI_SAT_METOP_SG_B3 = XLCFI_SAT_METOP_SG_B3, // AN-530 00153 XVCFI_SAT_SENTINEL_5P = XLCFI_SAT_SENTINEL_5P, // AN-502 00154 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00155 // AN-353 00156 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00157 XVCFI_SAT_MTG = XLCFI_SAT_MTG, 00158 // END AN-353 00159 XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00160 00161 } SatIdVisibilityEnum; 00162 00163 // AN-468 00165 typedef enum 00166 { 00167 XVCFI_FILE_AUTO, 00168 XVCFI_FILE_SDF, 00169 XVCFI_FILE_STF, 00170 XVCFI_SDF_DATA, 00171 XVCFI_STF_DATA 00172 } XVSwathInitEnum; 00173 00175 typedef enum 00176 { 00177 XVCFI_USE_ZONE_DB_FILE, 00178 XVCFI_USE_ZONE_DATA 00179 } XVZoneTypeEnum; 00180 00182 typedef enum 00183 { 00184 XVCFI_DO_NOT_COMPUTE = 0, 00185 XVCFI_COMPUTE = 1 00186 } XVComputeFlagEnum; 00187 00189 typedef enum 00190 { 00191 XVCFI_USE_STATION_FILE, 00192 XVCFI_USE_STATION_DATA, 00193 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00194 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00195 } XVStationTypeEnum; 00196 00198 typedef enum 00199 { 00200 XVCFI_UTC_TYPE, 00201 XVCFI_ORBIT_TYPE, 00202 XVCFI_BOTH_TYPE 00203 } XVTimeTypeEnum; 00204 // END AN-468 00205 00207 typedef enum 00208 { 00209 XVCFI_COVERAGE_FIXED_DISTANCE, 00210 XVCFI_COVERAGE_PERCENTAGE_PRECISION 00211 } XVTypeCoverageEnum; // AN-505 00212 00213 00214 //------------------------------------------------------ 00215 // DATA STRUCTURES 00216 //------------------------------------------------------ 00218 class VisExtraInfo 00219 { 00220 // No atributes 00221 }; 00222 00224 class ZoneExtraInfo : public VisExtraInfo 00225 { 00226 public: 00227 00228 // AN-468 00229 string zoneId; 00230 // END AN-468 00231 long coverage; 00232 00233 }; 00234 00236 class StationExtraInfo : public VisExtraInfo 00237 { 00238 public: 00239 00240 // AN-468 00241 string stationId; 00242 double utcTime; 00243 // END AN-468 00244 // Zero doppler segments ( ONLY used in stationVisTime ). 00245 ANXTime zdop; 00246 }; 00247 00249 class MultiZonesExtraInfo : public VisExtraInfo 00250 { 00251 public: 00252 00253 long numberOfZones; 00254 vector<long> zonesInSegment; 00255 vector<long> multiCoverage; 00256 // AN-468 00257 vector<string> zoneNamesInSegment; 00258 }; 00259 00261 class MultiStationsExtraInfo : public VisExtraInfo 00262 { 00263 public: 00264 00265 long numberOfStations; 00266 vector<long> stationsInSegment; 00267 vector<ANXTime> multiZdop; 00268 // AN-468 00269 vector<string> stationNamesInSegment; 00270 vector<double> utcTime; 00271 }; 00272 00274 class MappingExtraInfo : public VisExtraInfo 00275 { 00276 public: 00277 00278 long coverage; 00279 long direction; 00280 // AN-468 00281 string zoneId; 00282 // END AN-468 00283 00284 }; 00285 00287 class StarExtraInfo : public VisExtraInfo 00288 { 00289 public: 00290 00291 long startCoverage; 00292 long stopCoverage; 00293 }; 00294 00296 class OrbitExtraInfo 00297 { 00298 public: 00299 vector<double> szaUp; 00300 vector<double> szaDown; 00301 double eclipseEntry; 00302 double eclipseExit; 00303 double sunMoonEntry; 00304 double sunMoonExit; 00305 }; 00306 00308 class ScfAppear 00309 { 00310 public: 00311 long colour; 00312 long draw; 00313 long fill; 00314 long opacity; 00315 }; 00316 00317 // AN-430 00319 class AzElMask 00320 { 00321 public: 00322 long numMaskPt; 00323 long status; 00324 double azimuth[MaxStationVertices]; 00325 double elevation[MaxStationVertices]; 00326 }; 00327 00329 class LinkMask 00330 { 00331 public: 00332 AzElMask inclMask; 00333 AzElMask exclMask; 00334 }; 00335 00337 class LinkData 00338 { 00339 public: 00340 LinkMask maskData; 00341 double minTgHeight; 00342 }; 00343 // End AN-430 00344 00345 // AN-468 00347 class SwathInfo 00348 { 00349 public: 00350 long type; 00351 string filename; 00352 SdfFile sdfFile; 00353 StfFile stfFile; 00354 long nofRegenOrbits; 00355 00356 SwathInfo() 00357 { 00358 // Empty 00359 } 00360 00361 SwathInfo(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn) 00362 { 00363 type = typeIn; 00364 switch(type) 00365 { 00366 case XVCFI_FILE_AUTO: 00367 case XVCFI_FILE_STF: 00368 case XVCFI_FILE_SDF: 00369 { 00370 filename = fileIn; 00371 break; 00372 } 00373 00374 case XVCFI_STF_DATA: 00375 { 00376 stfFile = stfFileIn; 00377 break; 00378 } 00379 00380 case XVCFI_SDF_DATA: 00381 { 00382 sdfFile = sdfFileIn; 00383 break; 00384 } 00385 } 00386 00387 nofRegenOrbits = nofIn; 00388 } 00389 }; 00390 00391 // AN-468 00393 class SwathIdData 00394 { 00395 public: 00396 long type; 00397 string filename; 00398 SdfFile sdfFile; 00399 StfFile stfFile; 00400 long nofRegenOrbits; 00401 long orbitRef; 00402 long valOrbitStart; 00403 long valOrbitStop; 00404 00405 SwathIdData() 00406 { 00407 // Empty 00408 } 00409 00410 SwathIdData(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn, 00411 long refOrb, long val0, long val1) 00412 { 00413 type = typeIn; 00414 orbitRef = refOrb; 00415 valOrbitStart = val0; 00416 valOrbitStop = val1; 00417 00418 switch(type) 00419 { 00420 case XVCFI_FILE_AUTO: 00421 case XVCFI_FILE_STF: 00422 case XVCFI_FILE_SDF: 00423 { 00424 filename = fileIn; 00425 break; 00426 } 00427 00428 case XVCFI_STF_DATA: 00429 { 00430 stfFile = stfFileIn; 00431 break; 00432 } 00433 00434 case XVCFI_SDF_DATA: 00435 { 00436 sdfFile = sdfFileIn; 00437 break; 00438 } 00439 } 00440 00441 nofRegenOrbits = nofIn; 00442 } 00443 }; 00444 00446 class VisTime 00447 { 00448 public: 00449 long type; 00450 double utcTime; 00451 long orbitNum; 00452 long sec; 00453 long msec; 00454 00455 VisTime() 00456 { 00457 type = 0; 00458 utcTime = 0.; 00459 orbitNum = 0; 00460 sec = 0; 00461 msec = 0; 00462 } 00463 VisTime(long typeIn, double utcIn, long orbitNumIn, 00464 long secIn, long msecIn) 00465 { 00466 type = typeIn; 00467 utcTime = utcIn; 00468 orbitNum = orbitNumIn; 00469 sec = secIn; 00470 msec = msecIn; 00471 } 00472 }; 00473 00475 class VisTimeInterval 00476 { 00477 public: 00478 VisTime tstart; 00479 VisTime tstop; 00480 00481 VisTimeInterval() 00482 { 00483 } 00484 00485 VisTimeInterval(VisTime t0, VisTime t1) 00486 { 00487 tstart = t0; 00488 tstop = t1; 00489 } 00490 }; 00491 00493 class ZoneInfo 00494 { 00495 public: 00496 00497 string zoneId; 00498 long type; 00499 string zoneDBFilename; 00500 ZoneRec zoneData; 00501 long projection; 00502 double minDuration; 00503 00505 ZoneInfo() 00506 { 00507 zoneId = ""; 00508 type = 0; 00509 zoneDBFilename = ""; 00510 projection = 0; 00511 minDuration = 0.; 00512 } 00513 00515 ZoneInfo( string zoneIdIn, string zoneDBIn, 00516 long projIn, long durIn) 00517 { 00518 type = XVCFI_USE_ZONE_DB_FILE; 00519 zoneId = zoneIdIn; 00520 zoneDBFilename = zoneDBIn; 00521 projection = projIn; 00522 minDuration = durIn; 00523 } 00524 00526 ZoneInfo( ZoneRec zoneIn, long projIn, long durIn) 00527 { 00528 type = XVCFI_USE_ZONE_DATA; 00529 zoneData = zoneIn; 00530 projection = projIn; 00531 minDuration = durIn; 00532 } 00533 00534 }; 00535 00537 class ZoneInfoList 00538 { 00539 public: 00540 00541 long calcFlag; 00542 vector<ZoneInfo> zoneInfo; 00543 00545 ZoneInfoList() 00546 { 00547 calcFlag = XVCFI_COMPUTE; 00548 } 00549 00551 ZoneInfoList( long calcFlagIn, vector<ZoneInfo> zoneInfoIn) 00552 { 00553 calcFlag = calcFlagIn; 00554 zoneInfo = zoneInfoIn; 00555 } 00556 00557 }; 00558 00568 class StationInfo 00569 { 00570 public: 00571 00572 long type; 00573 string stationId; 00574 string stationDBFilename; 00575 StationRec stationData; 00576 double defaultAos; 00577 double defaultLos; 00578 long defaultMask; 00579 double minDuration; 00580 00582 StationInfo() 00583 { 00584 stationId = ""; 00585 type = 0; 00586 stationDBFilename = ""; 00587 defaultAos = 0.; 00588 defaultLos = 0.; 00589 defaultMask = 0; 00590 minDuration = 0.; 00591 } 00592 00594 StationInfo( long typeIn, string stationIdIn, string stationDBIn, 00595 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00596 double durIn) 00597 { 00598 type = typeIn; 00599 stationId = stationIdIn; 00600 stationDBFilename = stationDBIn; 00601 defaultAos = defaultAosIn; 00602 defaultLos = defaultLosIn; 00603 defaultMask = defaultMaskIn; 00604 minDuration = durIn; 00605 } 00606 00607 StationInfo( long typeIn, StationRec staIn, 00608 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00609 double durIn) 00610 { 00611 type = typeIn; 00612 stationData = staIn; 00613 defaultAos = defaultAosIn; 00614 defaultLos = defaultLosIn; 00615 defaultMask = defaultMaskIn; 00616 minDuration = durIn; 00617 } 00618 }; 00619 00621 class StationInfoList 00622 { 00623 public: 00624 00625 long calcFlag; 00626 vector<StationInfo> stationInfo; 00627 00629 StationInfoList() 00630 { 00631 calcFlag = XVCFI_COMPUTE; 00632 } 00633 00635 StationInfoList( long calcFlagIn, vector<StationInfo> staInfoIn) 00636 { 00637 calcFlag = calcFlagIn; 00638 stationInfo = staInfoIn; 00639 } 00640 00641 }; 00642 00644 class SwathPoint 00645 { 00646 public: 00647 double lon; 00648 double lat; 00649 double alt; 00650 00652 SwathPoint(double lonIn, double latIn, double altIn) 00653 { 00654 lon = lonIn; 00655 lat = latIn; 00656 alt = altIn; 00657 } 00658 } ; 00659 00661 class SwathPointList 00662 { 00663 public: 00664 vector<SwathPoint> swathPoint; 00665 00667 SwathPointList(vector<SwathPoint> list) 00668 { 00669 swathPoint = list; 00670 } 00671 }; 00672 00673 // END 468 00674 00675 } // closing namespace 00676 00677 #endif