Earth Observation Mission CFI Software Visibility Software User Manual |
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