![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.19 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 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_CELESTIAL_BODY_VIS = 6, 00103 XVCFI_STAR_VIS = 7 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_FLEX = XLCFI_SAT_FLEX, /* AN-683 */ 00159 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00160 // AN-353 00161 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00162 XVCFI_SAT_MTG = XLCFI_SAT_MTG, 00163 // END AN-353 00164 XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00165 00166 } SatIdVisibilityEnum; 00167 00168 // AN-468 00170 typedef enum 00171 { 00172 XVCFI_FILE_AUTO, 00173 XVCFI_FILE_SDF, 00174 XVCFI_FILE_STF, 00175 XVCFI_SDF_DATA, 00176 XVCFI_STF_DATA 00177 } XVSwathInitEnum; 00178 00180 typedef enum 00181 { 00182 XVCFI_USE_ZONE_DB_FILE, 00183 XVCFI_USE_ZONE_DATA 00184 } XVZoneTypeEnum; 00185 00187 typedef enum 00188 { 00189 XVCFI_DO_NOT_COMPUTE = 0, 00190 XVCFI_COMPUTE = 1 00191 } XVComputeFlagEnum; 00192 00194 typedef enum 00195 { 00196 XVCFI_USE_STATION_FILE, 00197 XVCFI_USE_STATION_DATA, 00198 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00199 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00200 } XVStationTypeEnum; 00201 00203 typedef enum 00204 { 00205 XVCFI_UTC_TYPE, 00206 XVCFI_ORBIT_TYPE, 00207 XVCFI_BOTH_TYPE 00208 } XVTimeTypeEnum; 00209 // END AN-468 00210 00212 typedef enum 00213 { 00214 XVCFI_COVERAGE_FIXED_DISTANCE, 00215 XVCFI_COVERAGE_PERCENTAGE_PRECISION 00216 } XVTypeCoverageEnum; // AN-505 00217 00218 typedef enum 00219 { 00220 XVCFI_SUN, 00221 XVCFI_MOON 00222 } XVTypeCelestialBodyEnum; // AN-677 00223 00224 //------------------------------------------------------ 00225 // DATA STRUCTURES 00226 //------------------------------------------------------ 00228 class XV_DECL VisExtraInfo 00229 { 00230 // No atributes 00231 }; 00232 00234 class XV_DECL ZoneExtraInfo : public VisExtraInfo 00235 { 00236 public: 00237 00238 // AN-468 00239 std::string zoneId; 00240 // END AN-468 00241 long coverage; 00242 00243 }; 00244 00246 class XV_DECL StationExtraInfo : public VisExtraInfo 00247 { 00248 public: 00249 00250 // AN-468 00251 std::string stationId; 00252 double utcTime; 00253 // END AN-468 00254 // Zero doppler segments ( ONLY used in stationVisTime ). 00255 ANXTime zdop; 00256 }; 00257 00259 class XV_DECL MultiZonesExtraInfo : public VisExtraInfo 00260 { 00261 public: 00262 00263 long numberOfZones; 00264 std::vector<long> zonesInSegment; 00265 std::vector<long> multiCoverage; 00266 // AN-468 00267 std::vector<std::string> zoneNamesInSegment; 00268 }; 00269 00271 class XV_DECL MultiStationsExtraInfo : public VisExtraInfo 00272 { 00273 public: 00274 00275 long numberOfStations; 00276 std::vector<long> stationsInSegment; 00277 std::vector<ANXTime> multiZdop; 00278 // AN-468 00279 std::vector<std::string> stationNamesInSegment; 00280 std::vector<double> utcTime; 00281 }; 00282 00284 class XV_DECL MappingExtraInfo : public VisExtraInfo 00285 { 00286 public: 00287 00288 long coverage; 00289 long direction; 00290 // AN-468 00291 std::string zoneId; 00292 // END AN-468 00293 00294 }; 00295 00297 class XV_DECL StarExtraInfo : public VisExtraInfo 00298 { 00299 public: 00300 00301 long startCoverage; 00302 long stopCoverage; 00303 }; 00304 00306 class XV_DECL OrbitExtraInfo 00307 { 00308 public: 00309 std::vector<double> szaUp; 00310 std::vector<double> szaDown; 00311 double eclipseEntry; 00312 double eclipseExit; 00313 double sunMoonEntry; 00314 double sunMoonExit; 00315 }; 00316 00318 class XV_DECL ScfAppear 00319 { 00320 public: 00321 long colour; 00322 long draw; 00323 long fill; 00324 long opacity; 00325 }; 00326 00327 00328 // AN-468 00330 class XV_DECL SwathInfo 00331 { 00332 public: 00333 long type; 00334 std::string filename; 00335 SdfFile sdfFile; 00336 StfFile stfFile; 00337 long nofRegenOrbits; 00338 00339 SwathInfo() 00340 { 00341 // Empty 00342 } 00343 00344 SwathInfo(long typeIn, const std::string &fileIn, const SdfFile &sdfFileIn, const StfFile &stfFileIn, long nofIn) 00345 { 00346 type = typeIn; 00347 switch(type) 00348 { 00349 case XVCFI_FILE_AUTO: 00350 case XVCFI_FILE_STF: 00351 case XVCFI_FILE_SDF: 00352 { 00353 filename = fileIn; 00354 break; 00355 } 00356 00357 case XVCFI_STF_DATA: 00358 { 00359 stfFile = stfFileIn; 00360 break; 00361 } 00362 00363 case XVCFI_SDF_DATA: 00364 { 00365 sdfFile = sdfFileIn; 00366 break; 00367 } 00368 } 00369 00370 nofRegenOrbits = nofIn; 00371 } 00372 }; 00373 00374 // AN-468 00376 class XV_DECL SwathIdData 00377 { 00378 public: 00379 long type; 00380 std::string filename; 00381 SdfFile sdfFile; 00382 StfFile stfFile; 00383 long nofRegenOrbits; 00384 long orbitRef; 00385 long valOrbitStart; 00386 long valOrbitStop; 00387 00388 SwathIdData() 00389 { 00390 // Empty 00391 } 00392 00393 SwathIdData(long typeIn, const std::string &fileIn, const SdfFile &sdfFileIn, const StfFile &stfFileIn, long nofIn, 00394 long refOrb, long val0, long val1) 00395 { 00396 type = typeIn; 00397 orbitRef = refOrb; 00398 valOrbitStart = val0; 00399 valOrbitStop = val1; 00400 00401 switch(type) 00402 { 00403 case XVCFI_FILE_AUTO: 00404 case XVCFI_FILE_STF: 00405 case XVCFI_FILE_SDF: 00406 { 00407 filename = fileIn; 00408 break; 00409 } 00410 00411 case XVCFI_STF_DATA: 00412 { 00413 stfFile = stfFileIn; 00414 break; 00415 } 00416 00417 case XVCFI_SDF_DATA: 00418 { 00419 sdfFile = sdfFileIn; 00420 break; 00421 } 00422 } 00423 00424 nofRegenOrbits = nofIn; 00425 } 00426 }; 00427 00429 class XV_DECL VisTime 00430 { 00431 public: 00432 long type; 00433 double utcTime; 00434 long orbitNum; 00435 long sec; 00436 long msec; 00437 00438 VisTime() 00439 { 00440 type = 0; 00441 utcTime = 0.; 00442 orbitNum = 0; 00443 sec = 0; 00444 msec = 0; 00445 } 00446 VisTime(long typeIn, double utcIn, long orbitNumIn, 00447 long secIn, long msecIn) 00448 { 00449 type = typeIn; 00450 utcTime = utcIn; 00451 orbitNum = orbitNumIn; 00452 sec = secIn; 00453 msec = msecIn; 00454 } 00455 }; 00456 00458 class XV_DECL VisTimeInterval 00459 { 00460 public: 00461 VisTime tstart; 00462 VisTime tstop; 00463 00464 VisTimeInterval() 00465 { 00466 } 00467 00468 VisTimeInterval(const VisTime &t0, const VisTime &t1) 00469 { 00470 tstart = t0; 00471 tstop = t1; 00472 } 00473 }; 00474 00476 class XV_DECL ZoneInfo 00477 { 00478 public: 00479 00480 std::string zoneId; 00481 long type; 00482 std::string zoneDBFilename; 00483 ZoneRec zoneData; 00484 long projection; 00485 double minDuration; 00486 00488 ZoneInfo() 00489 { 00490 zoneId = ""; 00491 type = 0; 00492 zoneDBFilename = ""; 00493 projection = 0; 00494 minDuration = 0.; 00495 } 00496 00498 ZoneInfo( const std::string &zoneIdIn, const std::string &zoneDBIn, 00499 long projIn, long durIn) 00500 { 00501 type = XVCFI_USE_ZONE_DB_FILE; 00502 zoneId = zoneIdIn; 00503 zoneDBFilename = zoneDBIn; 00504 projection = projIn; 00505 minDuration = durIn; 00506 } 00507 00509 ZoneInfo( const ZoneRec &zoneIn, long projIn, long durIn) 00510 { 00511 type = XVCFI_USE_ZONE_DATA; 00512 zoneData = zoneIn; 00513 projection = projIn; 00514 minDuration = durIn; 00515 } 00516 00517 }; 00518 00520 class XV_DECL ZoneInfoList 00521 { 00522 public: 00523 00524 long calcFlag; 00525 std::vector<ZoneInfo> zoneInfo; 00526 00528 ZoneInfoList() 00529 { 00530 calcFlag = XVCFI_COMPUTE; 00531 } 00532 00534 ZoneInfoList( long calcFlagIn, const std::vector<ZoneInfo> &zoneInfoIn) 00535 { 00536 calcFlag = calcFlagIn; 00537 zoneInfo = zoneInfoIn; 00538 } 00539 00540 }; 00541 00551 class XV_DECL StationInfo 00552 { 00553 public: 00554 00555 long type; 00556 std::string stationId; 00557 std::string stationDBFilename; 00558 StationRec stationData; 00559 double defaultAos; 00560 double defaultLos; 00561 long defaultMask; 00562 double minDuration; 00563 00565 StationInfo() 00566 { 00567 stationId = ""; 00568 type = 0; 00569 stationDBFilename = ""; 00570 defaultAos = 0.; 00571 defaultLos = 0.; 00572 defaultMask = 0; 00573 minDuration = 0.; 00574 } 00575 00577 StationInfo( long typeIn, const std::string &stationIdIn, const std::string &stationDBIn, 00578 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00579 double durIn) 00580 { 00581 type = typeIn; 00582 stationId = stationIdIn; 00583 stationDBFilename = stationDBIn; 00584 defaultAos = defaultAosIn; 00585 defaultLos = defaultLosIn; 00586 defaultMask = defaultMaskIn; 00587 minDuration = durIn; 00588 } 00589 00590 StationInfo( long typeIn, const StationRec &staIn, 00591 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00592 double durIn) 00593 { 00594 type = typeIn; 00595 stationData = staIn; 00596 defaultAos = defaultAosIn; 00597 defaultLos = defaultLosIn; 00598 defaultMask = defaultMaskIn; 00599 minDuration = durIn; 00600 } 00601 }; 00602 00604 class XV_DECL StationInfoList 00605 { 00606 public: 00607 00608 long calcFlag; 00609 std::vector<StationInfo> stationInfo; 00610 00612 StationInfoList() 00613 { 00614 calcFlag = XVCFI_COMPUTE; 00615 } 00616 00618 StationInfoList( long calcFlagIn, const std::vector<StationInfo> &staInfoIn) 00619 { 00620 calcFlag = calcFlagIn; 00621 stationInfo = staInfoIn; 00622 } 00623 00624 }; 00625 00627 class XV_DECL SwathPoint 00628 { 00629 public: 00630 double lon; 00631 double lat; 00632 double alt; 00633 00635 SwathPoint(double lonIn, double latIn, double altIn) 00636 { 00637 lon = lonIn; 00638 lat = latIn; 00639 alt = altIn; 00640 } 00641 } ; 00642 00644 class XV_DECL SwathPointList 00645 { 00646 public: 00647 std::vector<SwathPoint> swathPoint; 00648 00650 SwathPointList(const std::vector<SwathPoint> &list) 00651 { 00652 swathPoint = list; 00653 } 00654 }; 00655 00656 // END 468 00657 00658 } // closing namespace 00659 00660 #endif