![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.20 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 <ANXTime.h> 00019 #include <DataHandlingData.h> 00020 #include <LibData.h> 00021 #include <OrbitData.h> 00022 #include <PointingData.h> 00023 #include <SdfFile.h> 00024 #include <StationRec.h> 00025 #include <StfFile.h> 00026 #include <VisibilityDllExport.h> 00027 #include <ZoneRec.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_SENTINEL_6A = XLCFI_SAT_SENTINEL_6A, 00160 XVCFI_SAT_SENTINEL_6B = XLCFI_SAT_SENTINEL_6B, 00161 XVCFI_SAT_CIMR = XLCFI_SAT_CIMR, 00162 XVCFI_SAT_ROSEL = XLCFI_SAT_ROSEL, 00163 XVCFI_SAT_CHIME = XLCFI_SAT_CHIME, 00164 XVCFI_SAT_CRISTAL = XLCFI_SAT_CRISTAL, 00165 XVCFI_SAT_CO2M = XLCFI_SAT_CO2M, 00166 XVCFI_SAT_LSTM = XLCFI_SAT_LSTM, 00167 XVCFI_SAT_FORUM = XLCFI_SAT_FORUM, 00168 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00169 // AN-353 00170 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00171 XVCFI_SAT_MTG = XLCFI_SAT_MTG, 00172 // END AN-353 00173 XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00174 00175 } SatIdVisibilityEnum; 00176 00177 // AN-468 00179 typedef enum 00180 { 00181 XVCFI_FILE_AUTO, 00182 XVCFI_FILE_SDF, 00183 XVCFI_FILE_STF, 00184 XVCFI_SDF_DATA, 00185 XVCFI_STF_DATA 00186 } XVSwathInitEnum; 00187 00189 typedef enum 00190 { 00191 XVCFI_USE_ZONE_DB_FILE, 00192 XVCFI_USE_ZONE_DATA 00193 } XVZoneTypeEnum; 00194 00196 typedef enum 00197 { 00198 XVCFI_DO_NOT_COMPUTE = 0, 00199 XVCFI_COMPUTE = 1 00200 } XVComputeFlagEnum; 00201 00203 typedef enum 00204 { 00205 XVCFI_USE_STATION_FILE, 00206 XVCFI_USE_STATION_DATA, 00207 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00208 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00209 } XVStationTypeEnum; 00210 00212 typedef enum 00213 { 00214 XVCFI_UTC_TYPE, 00215 XVCFI_ORBIT_TYPE, 00216 XVCFI_BOTH_TYPE 00217 } XVTimeTypeEnum; 00218 // END AN-468 00219 00221 typedef enum 00222 { 00223 XVCFI_COVERAGE_FIXED_DISTANCE, 00224 XVCFI_COVERAGE_PERCENTAGE_PRECISION 00225 } XVTypeCoverageEnum; // AN-505 00226 00227 typedef enum 00228 { 00229 XVCFI_SUN, 00230 XVCFI_MOON 00231 } XVTypeCelestialBodyEnum; // AN-677 00232 00233 //------------------------------------------------------ 00234 // DATA STRUCTURES 00235 //------------------------------------------------------ 00237 class XV_DECL VisExtraInfo 00238 { 00239 // No atributes 00240 }; 00241 00243 class XV_DECL ZoneExtraInfo : public VisExtraInfo 00244 { 00245 public: 00246 // AN-468 00247 std::string zoneId; 00248 // END AN-468 00249 long coverage; 00250 }; 00251 00253 class XV_DECL StationExtraInfo : public VisExtraInfo 00254 { 00255 public: 00256 // AN-468 00257 std::string stationId; 00258 double utcTime; 00259 // END AN-468 00260 // Zero doppler segments ( ONLY used in stationVisTime ). 00261 ANXTime zdop; 00262 }; 00263 00265 class XV_DECL MultiZonesExtraInfo : public VisExtraInfo 00266 { 00267 public: 00268 long numberOfZones; 00269 std::vector<long> zonesInSegment; 00270 std::vector<long> multiCoverage; 00271 // AN-468 00272 std::vector<std::string> zoneNamesInSegment; 00273 }; 00274 00276 class XV_DECL MultiStationsExtraInfo : public VisExtraInfo 00277 { 00278 public: 00279 long numberOfStations; 00280 std::vector<long> stationsInSegment; 00281 std::vector<ANXTime> multiZdop; 00282 // AN-468 00283 std::vector<std::string> stationNamesInSegment; 00284 std::vector<double> utcTime; 00285 }; 00286 00288 class XV_DECL MappingExtraInfo : public VisExtraInfo 00289 { 00290 public: 00291 long coverage; 00292 long direction; 00293 // AN-468 00294 std::string zoneId; 00295 // END AN-468 00296 }; 00297 00299 class XV_DECL StarExtraInfo : public VisExtraInfo 00300 { 00301 public: 00302 long startCoverage; 00303 long stopCoverage; 00304 }; 00305 00307 class XV_DECL OrbitExtraInfo 00308 { 00309 public: 00310 std::vector<double> szaUp; 00311 std::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 // 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, long refOrb, long val0, long val1) 00394 { 00395 type = typeIn; 00396 orbitRef = refOrb; 00397 valOrbitStart = val0; 00398 valOrbitStop = val1; 00399 00400 switch(type) 00401 { 00402 case XVCFI_FILE_AUTO: 00403 case XVCFI_FILE_STF: 00404 case XVCFI_FILE_SDF: 00405 { 00406 filename = fileIn; 00407 break; 00408 } 00409 00410 case XVCFI_STF_DATA: 00411 { 00412 stfFile = stfFileIn; 00413 break; 00414 } 00415 00416 case XVCFI_SDF_DATA: 00417 { 00418 sdfFile = sdfFileIn; 00419 break; 00420 } 00421 } 00422 00423 nofRegenOrbits = nofIn; 00424 } 00425 }; 00426 00428 class XV_DECL VisTime 00429 { 00430 public: 00431 long type; 00432 double utcTime; 00433 long orbitNum; 00434 long sec; 00435 long msec; 00436 00437 VisTime() 00438 { 00439 type = 0; 00440 utcTime = 0.; 00441 orbitNum = 0; 00442 sec = 0; 00443 msec = 0; 00444 } 00445 VisTime(long typeIn, double utcIn, long orbitNumIn, long secIn, long msecIn) 00446 { 00447 type = typeIn; 00448 utcTime = utcIn; 00449 orbitNum = orbitNumIn; 00450 sec = secIn; 00451 msec = msecIn; 00452 } 00453 }; 00454 00456 class XV_DECL VisTimeInterval 00457 { 00458 public: 00459 VisTime tstart; 00460 VisTime tstop; 00461 00462 VisTimeInterval() 00463 { 00464 } 00465 00466 VisTimeInterval(const VisTime& t0, const VisTime& t1) 00467 { 00468 tstart = t0; 00469 tstop = t1; 00470 } 00471 }; 00472 00474 class XV_DECL ZoneInfo 00475 { 00476 public: 00477 std::string zoneId; 00478 long type; 00479 std::string zoneDBFilename; 00480 ZoneRec zoneData; 00481 long projection; 00482 double minDuration; 00483 00485 ZoneInfo() 00486 { 00487 zoneId = ""; 00488 type = 0; 00489 zoneDBFilename = ""; 00490 projection = 0; 00491 minDuration = 0.; 00492 } 00493 00495 ZoneInfo(const std::string& zoneIdIn, const std::string& zoneDBIn, long projIn, long durIn) 00496 { 00497 type = XVCFI_USE_ZONE_DB_FILE; 00498 zoneId = zoneIdIn; 00499 zoneDBFilename = zoneDBIn; 00500 projection = projIn; 00501 minDuration = durIn; 00502 } 00503 00505 ZoneInfo(const ZoneRec& zoneIn, long projIn, long durIn) 00506 { 00507 type = XVCFI_USE_ZONE_DATA; 00508 zoneData = zoneIn; 00509 projection = projIn; 00510 minDuration = durIn; 00511 } 00512 }; 00513 00515 class XV_DECL ZoneInfoList 00516 { 00517 public: 00518 long calcFlag; 00519 std::vector<ZoneInfo> zoneInfo; 00520 00522 ZoneInfoList() 00523 { 00524 calcFlag = XVCFI_COMPUTE; 00525 } 00526 00528 ZoneInfoList(long calcFlagIn, const std::vector<ZoneInfo>& zoneInfoIn) 00529 { 00530 calcFlag = calcFlagIn; 00531 zoneInfo = zoneInfoIn; 00532 } 00533 }; 00534 00544 class XV_DECL StationInfo 00545 { 00546 public: 00547 long type; 00548 std::string stationId; 00549 std::string stationDBFilename; 00550 StationRec stationData; 00551 double defaultAos; 00552 double defaultLos; 00553 long defaultMask; 00554 double minDuration; 00555 00557 StationInfo() 00558 { 00559 stationId = ""; 00560 type = 0; 00561 stationDBFilename = ""; 00562 defaultAos = 0.; 00563 defaultLos = 0.; 00564 defaultMask = 0; 00565 minDuration = 0.; 00566 } 00567 00569 StationInfo(long typeIn, const std::string& stationIdIn, const std::string& stationDBIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) 00570 { 00571 type = typeIn; 00572 stationId = stationIdIn; 00573 stationDBFilename = stationDBIn; 00574 defaultAos = defaultAosIn; 00575 defaultLos = defaultLosIn; 00576 defaultMask = defaultMaskIn; 00577 minDuration = durIn; 00578 } 00579 00580 StationInfo(long typeIn, const StationRec& staIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) 00581 { 00582 type = typeIn; 00583 stationData = staIn; 00584 defaultAos = defaultAosIn; 00585 defaultLos = defaultLosIn; 00586 defaultMask = defaultMaskIn; 00587 minDuration = durIn; 00588 } 00589 }; 00590 00592 class XV_DECL StationInfoList 00593 { 00594 public: 00595 long calcFlag; 00596 std::vector<StationInfo> stationInfo; 00597 00599 StationInfoList() 00600 { 00601 calcFlag = XVCFI_COMPUTE; 00602 } 00603 00605 StationInfoList(long calcFlagIn, const std::vector<StationInfo>& staInfoIn) 00606 { 00607 calcFlag = calcFlagIn; 00608 stationInfo = staInfoIn; 00609 } 00610 }; 00611 00613 class XV_DECL SwathPoint 00614 { 00615 public: 00616 double lon; 00617 double lat; 00618 double alt; 00619 00621 SwathPoint(double lonIn, double latIn, double altIn) 00622 { 00623 lon = lonIn; 00624 lat = latIn; 00625 alt = altIn; 00626 } 00627 }; 00628 00630 class XV_DECL SwathPointList 00631 { 00632 public: 00633 std::vector<SwathPoint> swathPoint; 00634 00636 SwathPointList(const std::vector<SwathPoint>& list) 00637 { 00638 swathPoint = list; 00639 } 00640 }; 00641 00642 // END 468 00643 00644 } // namespace EECFI 00645 00646 #endif