Earth Observation Mission CFI Software Visibility Software User Manual |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.6 00003 //-------------------------------------------------------- 00004 00005 //-------------------------------------------------------------------- 00006 // CVS Info: $Id: VisibilityData.h,v 1.20 2013-09-18 07:44:09 expcfi 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 //--NAMESPACES-------------------------------------------------------- 00028 using namespace std; 00029 00030 namespace EECFI 00031 { 00032 //------------------------------------------------------ 00033 // CONSTANT DATA 00034 //------------------------------------------------------ 00035 00036 //------------------------------------------------------ 00037 // DATA ENUMERATION 00038 // Enumeration values are defined in an equivalent way to the C library 00039 // except for the prefix that has been changed from XX_ to XXCFI_ 00040 //------------------------------------------------------ 00041 00043 typedef enum 00044 { 00045 XVCFI_ORBIT_ABS = 0, 00046 XVCFI_ORBIT_REL = 1 00047 } OrbitTypeEnum; 00048 00050 typedef enum 00051 { 00052 XVCFI_STF = 0, 00053 XVCFI_SDF = 1 00054 } SwathTypeEnum; 00055 00057 typedef enum 00058 { 00059 XVCFI_COMPLETE = 0, 00060 XVCFI_LEFT = 1, 00061 XVCFI_RIGHT = 2, 00062 XVCFI_BOTH = 3 00063 } CoverageEnum; 00064 00066 typedef enum 00067 { 00068 XVCFI_COMBINE = 0, 00069 XVCFI_AOS_LOS = 1, 00070 XVCFI_PHYSICAL = 2, 00071 XVCFI_FROM_FILE = 3 00072 } MaskEnum; 00073 00075 typedef enum 00076 { 00077 XVCFI_STAR_UNDEFINED = 0, 00078 XVCFI_STAR_UPPER = 1, 00079 XVCFI_STAR_LOWER = 2, 00080 XVCFI_STAR_LEFT = 3, 00081 XVCFI_STAR_RIGHT = 4 00082 } CoverageStarEnum; 00083 00085 typedef enum 00086 { 00087 XVCFI_ASCENDING = 0, 00088 XVCFI_DESDENDING = 1 00089 } TimeSegmentsOrbitDirectionEnum; 00090 00092 typedef enum 00093 { 00094 XVCFI_NO_VIS = -1, 00095 XVCFI_ZONE_VIS = 0, 00096 XVCFI_STATION_VIS = 1, 00097 XVCFI_MULTI_ZONES_VIS = 2, 00098 XVCFI_MULTI_STATIONS_VIS = 3, 00099 XVCFI_MAPPING_VIS = 4, 00100 XVCFI_SC_VIS = 5, 00101 XVCFI_STAR_VIS = 6 00102 } VisibilityTypeEnum; 00103 00105 typedef enum 00106 { 00107 XVCFI_SAT_DEFAULT = XLCFI_SAT_DEFAULT, 00108 XVCFI_SAT_DEFAULT1 = XLCFI_SAT_DEFAULT1, 00109 XVCFI_SAT_DEFAULT2 = XLCFI_SAT_DEFAULT2, 00110 XVCFI_SAT_DEFAULT3 = XLCFI_SAT_DEFAULT3, 00111 XVCFI_SAT_DEFAULT4 = XLCFI_SAT_DEFAULT4, 00112 XVCFI_SAT_DEFAULT5 = XLCFI_SAT_DEFAULT5, 00113 XVCFI_SAT_DEFAULT6 = XLCFI_SAT_DEFAULT6, 00114 XVCFI_SAT_DEFAULT7 = XLCFI_SAT_DEFAULT7, 00115 XVCFI_SAT_DEFAULT8 = XLCFI_SAT_DEFAULT8, 00116 XVCFI_SAT_DEFAULT9 = XLCFI_SAT_DEFAULT9, 00117 XVCFI_SAT_ERS1 = XLCFI_SAT_ERS1, 00118 XVCFI_SAT_ERS2 = XLCFI_SAT_ERS2, 00119 XVCFI_SAT_ENVISAT = XLCFI_SAT_ENVISAT, 00120 XVCFI_SAT_METOP1 = XLCFI_SAT_METOP1, 00121 XVCFI_SAT_METOP2 = XLCFI_SAT_METOP2, 00122 XVCFI_SAT_METOP3 = XLCFI_SAT_METOP3, 00123 XVCFI_SAT_CRYOSAT = XLCFI_SAT_CRYOSAT, 00124 XVCFI_SAT_ADM = XLCFI_SAT_ADM, 00125 XVCFI_SAT_GOCE = XLCFI_SAT_GOCE, 00126 XVCFI_SAT_SMOS = XLCFI_SAT_SMOS, 00127 XVCFI_SAT_TERRASAR = XLCFI_SAT_TERRASAR, 00128 XVCFI_SAT_EARTHCARE = XLCFI_SAT_EARTHCARE, 00129 XVCFI_SAT_SWARM_A = XLCFI_SAT_SWARM_A, 00130 XVCFI_SAT_SWARM_B = XLCFI_SAT_SWARM_B, 00131 XVCFI_SAT_SWARM_C = XLCFI_SAT_SWARM_C, 00132 XVCFI_SAT_SENTINEL_1A = XLCFI_SAT_SENTINEL_1A, 00133 XVCFI_SAT_SENTINEL_1B = XLCFI_SAT_SENTINEL_1B, 00134 XVCFI_SAT_SENTINEL_2 = XLCFI_SAT_SENTINEL_2, 00135 XVCFI_SAT_SENTINEL_3 = XLCFI_SAT_SENTINEL_3, 00136 XVCFI_SAT_SEOSAT = XLCFI_SAT_SEOSAT, 00137 XVCFI_SAT_SENTINEL_1C = XLCFI_SAT_SENTINEL_1C, 00138 XVCFI_SAT_SENTINEL_2A = XLCFI_SAT_SENTINEL_2A, 00139 XVCFI_SAT_SENTINEL_2B = XLCFI_SAT_SENTINEL_2B, 00140 XVCFI_SAT_SENTINEL_2C = XLCFI_SAT_SENTINEL_2C, 00141 XVCFI_SAT_SENTINEL_3A = XLCFI_SAT_SENTINEL_3A, 00142 XVCFI_SAT_SENTINEL_3B = XLCFI_SAT_SENTINEL_3B, 00143 XVCFI_SAT_SENTINEL_3C = XLCFI_SAT_SENTINEL_3C, 00144 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00145 // AN-353 00146 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00147 XVCFI_SAT_MTG = XLCFI_SAT_MTG 00148 // END AN-353 00149 00150 } SatIdVisibilityEnum; 00151 00152 // AN-468 00154 typedef enum 00155 { 00156 XVCFI_FILE_AUTO, 00157 XVCFI_FILE_SDF, 00158 XVCFI_FILE_STF, 00159 XVCFI_SDF_DATA, 00160 XVCFI_STF_DATA 00161 } XVSwathInitEnum; 00162 00164 typedef enum 00165 { 00166 XVCFI_USE_ZONE_DB_FILE, 00167 XVCFI_USE_ZONE_DATA 00168 } XVZoneTypeEnum; 00169 00171 typedef enum 00172 { 00173 XVCFI_DO_NOT_COMPUTE = 0, 00174 XVCFI_COMPUTE = 1 00175 } XVComputeFlagEnum; 00176 00178 typedef enum 00179 { 00180 XVCFI_USE_STATION_FILE, 00181 XVCFI_USE_STATION_DATA, 00182 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00183 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00184 } XVStationTypeEnum; 00185 00187 typedef enum 00188 { 00189 XVCFI_UTC_TYPE, 00190 XVCFI_ORBIT_TYPE, 00191 XVCFI_BOTH_TYPE 00192 } XVTimeTypeEnum; 00193 // END AN-468 00194 00195 //------------------------------------------------------ 00196 // DATA STRUCTURES 00197 //------------------------------------------------------ 00199 class VisExtraInfo 00200 { 00201 // No atributes 00202 }; 00203 00205 class ZoneExtraInfo : public VisExtraInfo 00206 { 00207 public: 00208 00209 // AN-468 00210 string zoneId; 00211 // END AN-468 00212 long coverage; 00213 00214 }; 00215 00217 class StationExtraInfo : public VisExtraInfo 00218 { 00219 public: 00220 00221 // AN-468 00222 string stationId; 00223 double utcTime; 00224 // END AN-468 00225 // Zero doppler segments ( ONLY used in stationVisTime ). 00226 ANXTime zdop; 00227 }; 00228 00230 class MultiZonesExtraInfo : public VisExtraInfo 00231 { 00232 public: 00233 00234 long numberOfZones; 00235 vector<long> zonesInSegment; 00236 vector<long> multiCoverage; 00237 // AN-468 00238 vector<string> zoneNamesInSegment; 00239 }; 00240 00242 class MultiStationsExtraInfo : public VisExtraInfo 00243 { 00244 public: 00245 00246 long numberOfStations; 00247 vector<long> stationsInSegment; 00248 vector<ANXTime> multiZdop; 00249 // AN-468 00250 vector<string> stationNamesInSegment; 00251 vector<double> utcTime; 00252 }; 00253 00255 class MappingExtraInfo : public VisExtraInfo 00256 { 00257 public: 00258 00259 long coverage; 00260 long direction; 00261 // AN-468 00262 string zoneId; 00263 // END AN-468 00264 00265 }; 00266 00268 class StarExtraInfo : public VisExtraInfo 00269 { 00270 public: 00271 00272 long startCoverage; 00273 long stopCoverage; 00274 }; 00275 00277 class OrbitExtraInfo 00278 { 00279 public: 00280 vector<double> szaUp; 00281 vector<double> szaDown; 00282 double eclipseEntry; 00283 double eclipseExit; 00284 double sunMoonEntry; 00285 double sunMoonExit; 00286 }; 00287 00289 class ScfAppear 00290 { 00291 public: 00292 long colour; 00293 long draw; 00294 long fill; 00295 long opacity; 00296 }; 00297 00298 // AN-430 00300 class AzElMask 00301 { 00302 public: 00303 long numMaskPt; 00304 double azimuth[MaxStationVertices]; 00305 double elevation[MaxStationVertices]; 00306 }; 00307 00309 class LinkMask 00310 { 00311 public: 00312 AzElMask inclMask; 00313 AzElMask exclMask; 00314 }; 00315 00317 class LinkData 00318 { 00319 public: 00320 LinkMask maskData; 00321 double minTgHeight; 00322 }; 00323 // End AN-430 00324 00325 // AN-468 00327 class SwathInfo 00328 { 00329 public: 00330 long type; 00331 string filename; 00332 SdfFile sdfFile; 00333 StfFile stfFile; 00334 long nofRegenOrbits; 00335 00336 SwathInfo() 00337 { 00338 // Empty 00339 } 00340 00341 SwathInfo(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn) 00342 { 00343 type = typeIn; 00344 switch(type) 00345 { 00346 case XVCFI_FILE_AUTO: 00347 case XVCFI_FILE_STF: 00348 case XVCFI_FILE_SDF: 00349 { 00350 filename = fileIn; 00351 break; 00352 } 00353 00354 case XVCFI_STF_DATA: 00355 { 00356 stfFile = stfFileIn; 00357 break; 00358 } 00359 00360 case XVCFI_SDF_DATA: 00361 { 00362 sdfFile = sdfFileIn; 00363 break; 00364 } 00365 } 00366 00367 nofRegenOrbits = nofIn; 00368 } 00369 }; 00370 00371 // AN-468 00373 class SwathIdData 00374 { 00375 public: 00376 long type; 00377 string filename; 00378 SdfFile sdfFile; 00379 StfFile stfFile; 00380 long nofRegenOrbits; 00381 long orbitRef; 00382 long valOrbitStart; 00383 long valOrbitStop; 00384 00385 SwathIdData() 00386 { 00387 // Empty 00388 } 00389 00390 SwathIdData(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn, 00391 long refOrb, long val0, long val1) 00392 { 00393 type = typeIn; 00394 orbitRef = refOrb; 00395 valOrbitStart = val0; 00396 valOrbitStop = val1; 00397 00398 switch(type) 00399 { 00400 case XVCFI_FILE_AUTO: 00401 case XVCFI_FILE_STF: 00402 case XVCFI_FILE_SDF: 00403 { 00404 filename = fileIn; 00405 break; 00406 } 00407 00408 case XVCFI_STF_DATA: 00409 { 00410 stfFile = stfFileIn; 00411 break; 00412 } 00413 00414 case XVCFI_SDF_DATA: 00415 { 00416 sdfFile = sdfFileIn; 00417 break; 00418 } 00419 } 00420 00421 nofRegenOrbits = nofIn; 00422 } 00423 }; 00424 00426 class VisTime 00427 { 00428 public: 00429 long type; 00430 double utcTime; 00431 long orbitNum; 00432 long sec; 00433 long msec; 00434 00435 VisTime() 00436 { 00437 type = 0; 00438 utcTime = 0.; 00439 orbitNum = 0; 00440 sec = 0; 00441 msec = 0; 00442 } 00443 VisTime(long typeIn, double utcIn, long orbitNumIn, 00444 long secIn, long msecIn) 00445 { 00446 type = typeIn; 00447 utcTime = utcIn; 00448 orbitNum = orbitNumIn; 00449 sec = secIn; 00450 msec = msecIn; 00451 } 00452 }; 00453 00455 class VisTimeInterval 00456 { 00457 public: 00458 VisTime tstart; 00459 VisTime tstop; 00460 00461 VisTimeInterval() 00462 { 00463 } 00464 00465 VisTimeInterval(VisTime t0, VisTime t1) 00466 { 00467 tstart = t0; 00468 tstop = t1; 00469 } 00470 }; 00471 00473 class ZoneInfo 00474 { 00475 public: 00476 00477 string zoneId; 00478 long type; 00479 string zoneDBFilename; 00480 ZoneRec zoneData; 00481 long projection; 00482 long minDuration; 00483 00485 ZoneInfo() 00486 { 00487 zoneId = ""; 00488 type = 0; 00489 zoneDBFilename = ""; 00490 projection = 0; 00491 minDuration = 0.; 00492 } 00493 00495 ZoneInfo( string zoneIdIn, string zoneDBIn, 00496 long projIn, long durIn) 00497 { 00498 type = XVCFI_USE_ZONE_DB_FILE; 00499 zoneId = zoneIdIn; 00500 zoneDBFilename = zoneDBIn; 00501 projection = projIn; 00502 minDuration = durIn; 00503 } 00504 00506 ZoneInfo( ZoneRec zoneIn, long projIn, long durIn) 00507 { 00508 type = XVCFI_USE_ZONE_DATA; 00509 zoneData = zoneIn; 00510 projection = projIn; 00511 minDuration = durIn; 00512 } 00513 00514 }; 00515 00517 class ZoneInfoList 00518 { 00519 public: 00520 00521 long calcFlag; 00522 vector<ZoneInfo> zoneInfo; 00523 00525 ZoneInfoList() 00526 { 00527 calcFlag = XVCFI_COMPUTE; 00528 } 00529 00531 ZoneInfoList( long calcFlagIn, vector<ZoneInfo> zoneInfoIn) 00532 { 00533 calcFlag = calcFlagIn; 00534 zoneInfo = zoneInfoIn; 00535 } 00536 00537 }; 00538 00548 class StationInfo 00549 { 00550 public: 00551 00552 long type; 00553 string stationId; 00554 string stationDBFilename; 00555 StationRec stationData; 00556 double defaultAos; 00557 double defaultLos; 00558 long defaultMask; 00559 double minDuration; 00560 00562 StationInfo() 00563 { 00564 stationId = ""; 00565 type = 0; 00566 stationDBFilename = ""; 00567 defaultAos = 0.; 00568 defaultLos = 0.; 00569 defaultMask = 0; 00570 minDuration = 0.; 00571 } 00572 00574 StationInfo( long typeIn, string stationIdIn, string stationDBIn, 00575 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00576 double durIn) 00577 { 00578 type = typeIn; 00579 stationId = stationIdIn; 00580 stationDBFilename = stationDBIn; 00581 defaultAos = defaultAosIn; 00582 defaultLos = defaultLosIn; 00583 defaultMask = defaultMaskIn; 00584 minDuration = durIn; 00585 } 00586 00587 StationInfo( long typeIn, StationRec staIn, 00588 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00589 double durIn) 00590 { 00591 type = typeIn; 00592 stationData = staIn; 00593 defaultAos = defaultAosIn; 00594 defaultLos = defaultLosIn; 00595 defaultMask = defaultMaskIn; 00596 minDuration = durIn; 00597 } 00598 }; 00599 00601 class StationInfoList 00602 { 00603 public: 00604 00605 long calcFlag; 00606 vector<StationInfo> stationInfo; 00607 00609 StationInfoList() 00610 { 00611 calcFlag = XVCFI_COMPUTE; 00612 } 00613 00615 StationInfoList( long calcFlagIn, vector<StationInfo> staInfoIn) 00616 { 00617 calcFlag = calcFlagIn; 00618 stationInfo = staInfoIn; 00619 } 00620 00621 }; 00622 00624 class SwathPoint 00625 { 00626 public: 00627 double lon; 00628 double lat; 00629 double alt; 00630 00631 SwathPoint(double lonIn, double latIn, double altIn) 00632 { 00633 lon = lonIn; 00634 lat = latIn; 00635 alt = altIn; 00636 } 00637 } ; 00638 00640 class SwathPointList 00641 { 00642 public: 00643 vector<SwathPoint> swathPoint; 00644 00645 SwathPointList(vector<SwathPoint> list) 00646 { 00647 swathPoint = list; 00648 } 00649 }; 00650 00651 // END 468 00652 } // closing namespace 00653 00654 #endif