![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.7 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 double azimuth[MaxStationVertices]; 00324 double elevation[MaxStationVertices]; 00325 }; 00326 00328 class LinkMask 00329 { 00330 public: 00331 AzElMask inclMask; 00332 AzElMask exclMask; 00333 }; 00334 00336 class LinkData 00337 { 00338 public: 00339 LinkMask maskData; 00340 double minTgHeight; 00341 }; 00342 // End AN-430 00343 00344 // AN-468 00346 class SwathInfo 00347 { 00348 public: 00349 long type; 00350 string filename; 00351 SdfFile sdfFile; 00352 StfFile stfFile; 00353 long nofRegenOrbits; 00354 00355 SwathInfo() 00356 { 00357 // Empty 00358 } 00359 00360 SwathInfo(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn) 00361 { 00362 type = typeIn; 00363 switch(type) 00364 { 00365 case XVCFI_FILE_AUTO: 00366 case XVCFI_FILE_STF: 00367 case XVCFI_FILE_SDF: 00368 { 00369 filename = fileIn; 00370 break; 00371 } 00372 00373 case XVCFI_STF_DATA: 00374 { 00375 stfFile = stfFileIn; 00376 break; 00377 } 00378 00379 case XVCFI_SDF_DATA: 00380 { 00381 sdfFile = sdfFileIn; 00382 break; 00383 } 00384 } 00385 00386 nofRegenOrbits = nofIn; 00387 } 00388 }; 00389 00390 // AN-468 00392 class SwathIdData 00393 { 00394 public: 00395 long type; 00396 string filename; 00397 SdfFile sdfFile; 00398 StfFile stfFile; 00399 long nofRegenOrbits; 00400 long orbitRef; 00401 long valOrbitStart; 00402 long valOrbitStop; 00403 00404 SwathIdData() 00405 { 00406 // Empty 00407 } 00408 00409 SwathIdData(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn, 00410 long refOrb, long val0, long val1) 00411 { 00412 type = typeIn; 00413 orbitRef = refOrb; 00414 valOrbitStart = val0; 00415 valOrbitStop = val1; 00416 00417 switch(type) 00418 { 00419 case XVCFI_FILE_AUTO: 00420 case XVCFI_FILE_STF: 00421 case XVCFI_FILE_SDF: 00422 { 00423 filename = fileIn; 00424 break; 00425 } 00426 00427 case XVCFI_STF_DATA: 00428 { 00429 stfFile = stfFileIn; 00430 break; 00431 } 00432 00433 case XVCFI_SDF_DATA: 00434 { 00435 sdfFile = sdfFileIn; 00436 break; 00437 } 00438 } 00439 00440 nofRegenOrbits = nofIn; 00441 } 00442 }; 00443 00445 class VisTime 00446 { 00447 public: 00448 long type; 00449 double utcTime; 00450 long orbitNum; 00451 long sec; 00452 long msec; 00453 00454 VisTime() 00455 { 00456 type = 0; 00457 utcTime = 0.; 00458 orbitNum = 0; 00459 sec = 0; 00460 msec = 0; 00461 } 00462 VisTime(long typeIn, double utcIn, long orbitNumIn, 00463 long secIn, long msecIn) 00464 { 00465 type = typeIn; 00466 utcTime = utcIn; 00467 orbitNum = orbitNumIn; 00468 sec = secIn; 00469 msec = msecIn; 00470 } 00471 }; 00472 00474 class VisTimeInterval 00475 { 00476 public: 00477 VisTime tstart; 00478 VisTime tstop; 00479 00480 VisTimeInterval() 00481 { 00482 } 00483 00484 VisTimeInterval(VisTime t0, VisTime t1) 00485 { 00486 tstart = t0; 00487 tstop = t1; 00488 } 00489 }; 00490 00492 class ZoneInfo 00493 { 00494 public: 00495 00496 string zoneId; 00497 long type; 00498 string zoneDBFilename; 00499 ZoneRec zoneData; 00500 long projection; 00501 long minDuration; 00502 00504 ZoneInfo() 00505 { 00506 zoneId = ""; 00507 type = 0; 00508 zoneDBFilename = ""; 00509 projection = 0; 00510 minDuration = 0.; 00511 } 00512 00514 ZoneInfo( string zoneIdIn, string zoneDBIn, 00515 long projIn, long durIn) 00516 { 00517 type = XVCFI_USE_ZONE_DB_FILE; 00518 zoneId = zoneIdIn; 00519 zoneDBFilename = zoneDBIn; 00520 projection = projIn; 00521 minDuration = durIn; 00522 } 00523 00525 ZoneInfo( ZoneRec zoneIn, long projIn, long durIn) 00526 { 00527 type = XVCFI_USE_ZONE_DATA; 00528 zoneData = zoneIn; 00529 projection = projIn; 00530 minDuration = durIn; 00531 } 00532 00533 }; 00534 00536 class ZoneInfoList 00537 { 00538 public: 00539 00540 long calcFlag; 00541 vector<ZoneInfo> zoneInfo; 00542 00544 ZoneInfoList() 00545 { 00546 calcFlag = XVCFI_COMPUTE; 00547 } 00548 00550 ZoneInfoList( long calcFlagIn, vector<ZoneInfo> zoneInfoIn) 00551 { 00552 calcFlag = calcFlagIn; 00553 zoneInfo = zoneInfoIn; 00554 } 00555 00556 }; 00557 00567 class StationInfo 00568 { 00569 public: 00570 00571 long type; 00572 string stationId; 00573 string stationDBFilename; 00574 StationRec stationData; 00575 double defaultAos; 00576 double defaultLos; 00577 long defaultMask; 00578 double minDuration; 00579 00581 StationInfo() 00582 { 00583 stationId = ""; 00584 type = 0; 00585 stationDBFilename = ""; 00586 defaultAos = 0.; 00587 defaultLos = 0.; 00588 defaultMask = 0; 00589 minDuration = 0.; 00590 } 00591 00593 StationInfo( long typeIn, string stationIdIn, string stationDBIn, 00594 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00595 double durIn) 00596 { 00597 type = typeIn; 00598 stationId = stationIdIn; 00599 stationDBFilename = stationDBIn; 00600 defaultAos = defaultAosIn; 00601 defaultLos = defaultLosIn; 00602 defaultMask = defaultMaskIn; 00603 minDuration = durIn; 00604 } 00605 00606 StationInfo( long typeIn, StationRec staIn, 00607 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00608 double durIn) 00609 { 00610 type = typeIn; 00611 stationData = staIn; 00612 defaultAos = defaultAosIn; 00613 defaultLos = defaultLosIn; 00614 defaultMask = defaultMaskIn; 00615 minDuration = durIn; 00616 } 00617 }; 00618 00620 class StationInfoList 00621 { 00622 public: 00623 00624 long calcFlag; 00625 vector<StationInfo> stationInfo; 00626 00628 StationInfoList() 00629 { 00630 calcFlag = XVCFI_COMPUTE; 00631 } 00632 00634 StationInfoList( long calcFlagIn, vector<StationInfo> staInfoIn) 00635 { 00636 calcFlag = calcFlagIn; 00637 stationInfo = staInfoIn; 00638 } 00639 00640 }; 00641 00643 class SwathPoint 00644 { 00645 public: 00646 double lon; 00647 double lat; 00648 double alt; 00649 00651 SwathPoint(double lonIn, double latIn, double altIn) 00652 { 00653 lon = lonIn; 00654 lat = latIn; 00655 alt = altIn; 00656 } 00657 } ; 00658 00660 class SwathPointList 00661 { 00662 public: 00663 vector<SwathPoint> swathPoint; 00664 00666 SwathPointList(vector<SwathPoint> list) 00667 { 00668 swathPoint = list; 00669 } 00670 }; 00671 00672 // END 468 00673 00674 } // closing namespace 00675 00676 #endif