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