![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.27 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 XVCFI_GENERIC_VIS = 8 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_SENTINEL_6A = XLCFI_SAT_SENTINEL_6A, 00161 XVCFI_SAT_SENTINEL_6B = XLCFI_SAT_SENTINEL_6B, 00162 XVCFI_SAT_CIMR = XLCFI_SAT_CIMR, 00163 XVCFI_SAT_ROSEL = XLCFI_SAT_ROSEL, 00164 XVCFI_SAT_CHIME = XLCFI_SAT_CHIME, 00165 XVCFI_SAT_CRISTAL = XLCFI_SAT_CRISTAL, 00166 XVCFI_SAT_CO2M = XLCFI_SAT_CO2M, 00167 XVCFI_SAT_LSTM = XLCFI_SAT_LSTM, 00168 XVCFI_SAT_FORUM = XLCFI_SAT_FORUM, 00169 XVCFI_SAT_TRUTHS = XLCFI_SAT_TRUTHS, 00170 XVCFI_SAT_GENERIC = XLCFI_SAT_GENERIC, 00171 // AN-353 00172 XVCFI_SAT_GENERIC_GEO = XLCFI_SAT_GENERIC_GEO, 00173 XVCFI_SAT_MTG = XLCFI_SAT_MTG, 00174 // END AN-353 00175 XVCFI_SAT_GENERIC_MEO = XLCFI_SAT_GENERIC_MEO // AN-550 00176 00177 } SatIdVisibilityEnum; 00178 00179 // AN-468 00181 typedef enum 00182 { 00183 XVCFI_FILE_AUTO, 00184 XVCFI_FILE_SDF, 00185 XVCFI_FILE_STF, 00186 XVCFI_SDF_DATA, 00187 XVCFI_STF_DATA 00188 } XVSwathInitEnum; 00189 00191 typedef enum 00192 { 00193 XVCFI_USE_ZONE_DB_FILE, 00194 XVCFI_USE_ZONE_DATA 00195 } XVZoneTypeEnum; 00196 00198 typedef enum 00199 { 00200 XVCFI_DO_NOT_COMPUTE = 0, 00201 XVCFI_COMPUTE = 1 00202 } XVComputeFlagEnum; 00203 00205 typedef enum 00206 { 00207 XVCFI_USE_STATION_FILE, 00208 XVCFI_USE_STATION_DATA, 00209 XVCFI_USE_STATION_FILE_AND_MASK_OVERRIDE, 00210 XVCFI_USE_STATION_DATA_AND_MASK_OVERRIDE 00211 } XVStationTypeEnum; 00212 00214 typedef enum 00215 { 00216 XVCFI_UTC_TYPE, 00217 XVCFI_ORBIT_TYPE, 00218 XVCFI_BOTH_TYPE 00219 } XVTimeTypeEnum; 00220 // END AN-468 00221 00223 typedef enum 00224 { 00225 XVCFI_COVERAGE_FIXED_DISTANCE, 00226 XVCFI_COVERAGE_PERCENTAGE_PRECISION 00227 } XVTypeCoverageEnum; // AN-505 00228 00229 typedef enum 00230 { 00231 XVCFI_SUN, 00232 XVCFI_MOON 00233 } XVTypeCelestialBodyEnum; // AN-677 00234 00235 typedef enum 00236 { 00237 XVCFI_TIME_ORDER = 0, 00238 XVCFI_NO_TIME_ORDER = 1 00239 00240 } XV_time_segments_order_enum; 00241 00242 //------------------------------------------------------ 00243 // DATA STRUCTURES 00244 //------------------------------------------------------ 00246 class XV_DECL VisExtraInfo 00247 { 00248 public: 00249 virtual ~VisExtraInfo(); 00250 // No attributes 00251 }; 00252 00254 class XV_DECL ZoneExtraInfo : public VisExtraInfo 00255 { 00256 public: 00257 ZoneExtraInfo() {} 00258 ZoneExtraInfo(const ZoneExtraInfo& other); 00259 ~ZoneExtraInfo(); 00260 ZoneExtraInfo& operator=(const ZoneExtraInfo& other); 00261 00262 std::string zoneId; 00263 long coverage; 00264 }; 00265 00267 class XV_DECL StationExtraInfo : public VisExtraInfo 00268 { 00269 public: 00270 StationExtraInfo() {} 00271 StationExtraInfo(const StationExtraInfo& other); 00272 ~StationExtraInfo(); 00273 StationExtraInfo& operator=(const StationExtraInfo& other); 00274 00275 std::string stationId; 00276 double utcTime; 00277 // Zero doppler segments ( ONLY used in stationVisTime ). 00278 ANXTime zdop; 00279 }; 00280 00282 class XV_DECL MultiZonesExtraInfo : public VisExtraInfo 00283 { 00284 public: 00285 MultiZonesExtraInfo() {} 00286 MultiZonesExtraInfo(const MultiZonesExtraInfo& other); 00287 ~MultiZonesExtraInfo(); 00288 MultiZonesExtraInfo& operator=(const MultiZonesExtraInfo& other); 00289 00290 long numberOfZones; 00291 std::vector<long> zonesInSegment; 00292 std::vector<long> multiCoverage; 00293 std::vector<std::string> zoneNamesInSegment; 00294 }; 00295 00297 class XV_DECL MultiStationsExtraInfo : public VisExtraInfo 00298 { 00299 public: 00300 MultiStationsExtraInfo() {} 00301 MultiStationsExtraInfo(const MultiStationsExtraInfo& other); 00302 ~MultiStationsExtraInfo(); 00303 MultiStationsExtraInfo& operator=(const MultiStationsExtraInfo& other); 00304 00305 long numberOfStations; 00306 std::vector<long> stationsInSegment; 00307 std::vector<ANXTime> multiZdop; 00308 std::vector<std::string> stationNamesInSegment; 00309 std::vector<double> utcTime; 00310 }; 00311 00313 class XV_DECL MappingExtraInfo : public VisExtraInfo 00314 { 00315 public: 00316 MappingExtraInfo() {} 00317 MappingExtraInfo(const MappingExtraInfo& other); 00318 ~MappingExtraInfo(); 00319 MappingExtraInfo& operator=(const MappingExtraInfo& other); 00320 00321 long coverage; 00322 long direction; 00323 std::string zoneId; 00324 }; 00325 00327 class XV_DECL StarExtraInfo : public VisExtraInfo 00328 { 00329 public: 00330 StarExtraInfo() {} 00331 StarExtraInfo(const StarExtraInfo& other); 00332 ~StarExtraInfo(); 00333 StarExtraInfo& operator=(const StarExtraInfo& other); 00334 00335 long startCoverage; 00336 long stopCoverage; 00337 }; 00338 00340 class XV_DECL OrbitExtraInfo 00341 { 00342 public: 00343 std::vector<double> szaUp; 00344 std::vector<double> szaDown; 00345 double eclipseEntry; 00346 double eclipseExit; 00347 double sunMoonEntry; 00348 double sunMoonExit; 00349 }; 00350 00352 class XV_DECL ScfAppear 00353 { 00354 public: 00355 long colour; 00356 long draw; 00357 long fill; 00358 long opacity; 00359 }; 00360 00361 // AN-468 00363 class XV_DECL SwathInfo 00364 { 00365 public: 00366 long type; 00367 std::string filename; 00368 SdfFile sdfFile; 00369 StfFile stfFile; 00370 long nofRegenOrbits; 00371 00372 SwathInfo() : 00373 type(0L), filename(), sdfFile(), stfFile(), nofRegenOrbits(0L) {} 00374 00375 SwathInfo(long typeIn, const std::string& fileIn, const SdfFile& sdfFileIn, const StfFile& stfFileIn, long nofIn) : 00376 type(typeIn), filename(), sdfFile(), stfFile(), nofRegenOrbits(nofIn) 00377 { 00378 switch(type) 00379 { 00380 case XVCFI_FILE_AUTO: 00381 case XVCFI_FILE_STF: 00382 case XVCFI_FILE_SDF: 00383 { 00384 filename = fileIn; 00385 break; 00386 } 00387 case XVCFI_STF_DATA: 00388 { 00389 stfFile = stfFileIn; 00390 break; 00391 } 00392 case XVCFI_SDF_DATA: 00393 { 00394 sdfFile = sdfFileIn; 00395 break; 00396 } 00397 } 00398 } 00399 }; 00400 00401 // AN-468 00403 class XV_DECL SwathIdData 00404 { 00405 public: 00406 long type; 00407 std::string filename; 00408 SdfFile sdfFile; 00409 StfFile stfFile; 00410 long nofRegenOrbits; 00411 long orbitRef; 00412 long valOrbitStart; 00413 long valOrbitStop; 00414 00415 SwathIdData() : 00416 type(0L), filename(), sdfFile(), stfFile(), nofRegenOrbits(0L), orbitRef(0L), valOrbitStart(0L), valOrbitStop(0L) {} 00417 00418 SwathIdData(long typeIn, const std::string& fileIn, const SdfFile& sdfFileIn, const StfFile& stfFileIn, long nofIn, long refOrb, long val0, long val1) : 00419 type(typeIn), filename(), sdfFile(), stfFile(), nofRegenOrbits(nofIn), orbitRef(refOrb), valOrbitStart(val0), valOrbitStop(val1) 00420 { 00421 switch(type) 00422 { 00423 case XVCFI_FILE_AUTO: 00424 case XVCFI_FILE_STF: 00425 case XVCFI_FILE_SDF: 00426 { 00427 filename = fileIn; 00428 break; 00429 } 00430 case XVCFI_STF_DATA: 00431 { 00432 stfFile = stfFileIn; 00433 break; 00434 } 00435 case XVCFI_SDF_DATA: 00436 { 00437 sdfFile = sdfFileIn; 00438 break; 00439 } 00440 } 00441 } 00442 }; 00443 00445 class XV_DECL VisTime 00446 { 00447 public: 00448 long type; 00449 double utcTime; 00450 long orbitNum; 00451 long sec; 00452 long msec; 00453 00454 VisTime() : 00455 type(0L), utcTime(0.), orbitNum(0L), sec(0L), msec(0L) {} 00456 00457 VisTime(long typeIn, double utcIn, long orbitNumIn, long secIn, long msecIn) : 00458 type(typeIn), utcTime(utcIn), orbitNum(orbitNumIn), sec(secIn), msec(msecIn) {} 00459 }; 00460 00462 class XV_DECL VisTimeInterval 00463 { 00464 public: 00465 VisTime tstart; 00466 VisTime tstop; 00467 00468 VisTimeInterval() : 00469 tstart(), tstop() {} 00470 00471 VisTimeInterval(const VisTime& t0, const VisTime& t1) : 00472 tstart(t0), tstop(t1) {} 00473 }; 00474 00476 class XV_DECL ZoneInfo 00477 { 00478 public: 00479 std::string zoneId; 00480 long type; 00481 std::string zoneDBFilename; 00482 ZoneRec zoneData; 00483 long projection; 00484 double minDuration; 00485 00487 ZoneInfo() : 00488 zoneId(), type(0L), zoneDBFilename(), projection(0L), minDuration(0.) 00489 { 00490 } 00491 00493 ZoneInfo(const std::string& zoneIdIn, const std::string& zoneDBIn, long projIn, long durIn) : 00494 zoneId(zoneIdIn), type(XVCFI_USE_ZONE_DB_FILE), zoneDBFilename(zoneDBIn), projection(projIn), minDuration(static_cast<double>(durIn)) 00495 { 00496 } 00497 00499 ZoneInfo(const ZoneRec& zoneIn, long projIn, long durIn) : 00500 zoneId(), type(XVCFI_USE_ZONE_DATA), zoneData(zoneIn), projection(projIn), minDuration(static_cast<double>(durIn)) 00501 { 00502 } 00503 }; 00504 00506 class XV_DECL ZoneInfoList 00507 { 00508 public: 00509 long calcFlag; 00510 std::vector<ZoneInfo> zoneInfo; 00511 00513 ZoneInfoList() : 00514 calcFlag(XVCFI_COMPUTE), zoneInfo() {} 00515 00517 ZoneInfoList(long calcFlagIn, const std::vector<ZoneInfo>& zoneInfoIn) : 00518 calcFlag(calcFlagIn), zoneInfo(zoneInfoIn) {} 00519 }; 00520 00530 class XV_DECL StationInfo 00531 { 00532 public: 00533 long type; 00534 std::string stationId; 00535 std::string stationDBFilename; 00536 StationRec stationData; 00537 double defaultAos; 00538 double defaultLos; 00539 long defaultMask; 00540 double minDuration; 00541 00543 StationInfo() : 00544 type(0L), stationId(), stationDBFilename(), stationData(), defaultAos(0.), defaultLos(0.), defaultMask(0L), minDuration(0.) {} 00545 00547 StationInfo(long typeIn, const std::string& stationIdIn, const std::string& stationDBIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) : 00548 type(typeIn), stationId(stationIdIn), stationDBFilename(stationDBIn), stationData(), defaultAos(defaultAosIn), defaultLos(defaultLosIn), defaultMask(defaultMaskIn), minDuration(durIn) {} 00549 00550 StationInfo(long typeIn, const StationRec& staIn, double defaultAosIn, double defaultLosIn, long defaultMaskIn, double durIn) : 00551 type(typeIn), stationId(), stationDBFilename(), stationData(staIn), defaultAos(defaultAosIn), defaultLos(defaultLosIn), defaultMask(defaultMaskIn), minDuration(durIn) {} 00552 }; 00553 00555 class XV_DECL StationInfoList 00556 { 00557 public: 00558 long calcFlag; 00559 std::vector<StationInfo> stationInfo; 00560 00562 StationInfoList() : 00563 calcFlag(XVCFI_COMPUTE), stationInfo() {} 00564 00566 StationInfoList(long calcFlagIn, const std::vector<StationInfo>& staInfoIn) : 00567 calcFlag(calcFlagIn), stationInfo(staInfoIn) {} 00568 }; 00569 00571 class XV_DECL SwathPoint 00572 { 00573 public: 00574 double lon; 00575 double lat; 00576 double alt; 00577 00579 SwathPoint(double lonIn, double latIn, double altIn) : 00580 lon(lonIn), lat(latIn), alt(altIn) {} 00581 }; 00582 00584 class XV_DECL SwathPointList 00585 { 00586 public: 00587 std::vector<SwathPoint> swathPoint; 00588 00590 SwathPointList(const std::vector<SwathPoint>& list) : 00591 swathPoint(list) {} 00592 }; 00593 00594 // END 468 00595 00596 } // namespace EECFI 00597 00598 #endif