![]() |
Earth Observation Mission CFI Software Visibility Software User Manual |
![]() |
00001 //-------------------------------------------------------- 00002 // Earth Observation Mission CFI Software. Version 4.15 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_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 00219 //------------------------------------------------------ 00220 // DATA STRUCTURES 00221 //------------------------------------------------------ 00223 class XV_DECL VisExtraInfo 00224 { 00225 // No atributes 00226 }; 00227 00229 class XV_DECL ZoneExtraInfo : public VisExtraInfo 00230 { 00231 public: 00232 00233 // AN-468 00234 string zoneId; 00235 // END AN-468 00236 long coverage; 00237 00238 }; 00239 00241 class XV_DECL StationExtraInfo : public VisExtraInfo 00242 { 00243 public: 00244 00245 // AN-468 00246 string stationId; 00247 double utcTime; 00248 // END AN-468 00249 // Zero doppler segments ( ONLY used in stationVisTime ). 00250 ANXTime zdop; 00251 }; 00252 00254 class XV_DECL MultiZonesExtraInfo : public VisExtraInfo 00255 { 00256 public: 00257 00258 long numberOfZones; 00259 vector<long> zonesInSegment; 00260 vector<long> multiCoverage; 00261 // AN-468 00262 vector<string> zoneNamesInSegment; 00263 }; 00264 00266 class XV_DECL MultiStationsExtraInfo : public VisExtraInfo 00267 { 00268 public: 00269 00270 long numberOfStations; 00271 vector<long> stationsInSegment; 00272 vector<ANXTime> multiZdop; 00273 // AN-468 00274 vector<string> stationNamesInSegment; 00275 vector<double> utcTime; 00276 }; 00277 00279 class XV_DECL MappingExtraInfo : public VisExtraInfo 00280 { 00281 public: 00282 00283 long coverage; 00284 long direction; 00285 // AN-468 00286 string zoneId; 00287 // END AN-468 00288 00289 }; 00290 00292 class XV_DECL StarExtraInfo : public VisExtraInfo 00293 { 00294 public: 00295 00296 long startCoverage; 00297 long stopCoverage; 00298 }; 00299 00301 class XV_DECL OrbitExtraInfo 00302 { 00303 public: 00304 vector<double> szaUp; 00305 vector<double> szaDown; 00306 double eclipseEntry; 00307 double eclipseExit; 00308 double sunMoonEntry; 00309 double sunMoonExit; 00310 }; 00311 00313 class XV_DECL ScfAppear 00314 { 00315 public: 00316 long colour; 00317 long draw; 00318 long fill; 00319 long opacity; 00320 }; 00321 00322 00323 // AN-468 00325 class XV_DECL SwathInfo 00326 { 00327 public: 00328 long type; 00329 string filename; 00330 SdfFile sdfFile; 00331 StfFile stfFile; 00332 long nofRegenOrbits; 00333 00334 SwathInfo() 00335 { 00336 // Empty 00337 } 00338 00339 SwathInfo(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn) 00340 { 00341 type = typeIn; 00342 switch(type) 00343 { 00344 case XVCFI_FILE_AUTO: 00345 case XVCFI_FILE_STF: 00346 case XVCFI_FILE_SDF: 00347 { 00348 filename = fileIn; 00349 break; 00350 } 00351 00352 case XVCFI_STF_DATA: 00353 { 00354 stfFile = stfFileIn; 00355 break; 00356 } 00357 00358 case XVCFI_SDF_DATA: 00359 { 00360 sdfFile = sdfFileIn; 00361 break; 00362 } 00363 } 00364 00365 nofRegenOrbits = nofIn; 00366 } 00367 }; 00368 00369 // AN-468 00371 class XV_DECL SwathIdData 00372 { 00373 public: 00374 long type; 00375 string filename; 00376 SdfFile sdfFile; 00377 StfFile stfFile; 00378 long nofRegenOrbits; 00379 long orbitRef; 00380 long valOrbitStart; 00381 long valOrbitStop; 00382 00383 SwathIdData() 00384 { 00385 // Empty 00386 } 00387 00388 SwathIdData(long typeIn, string fileIn, SdfFile &sdfFileIn, StfFile &stfFileIn, long nofIn, 00389 long refOrb, long val0, long val1) 00390 { 00391 type = typeIn; 00392 orbitRef = refOrb; 00393 valOrbitStart = val0; 00394 valOrbitStop = val1; 00395 00396 switch(type) 00397 { 00398 case XVCFI_FILE_AUTO: 00399 case XVCFI_FILE_STF: 00400 case XVCFI_FILE_SDF: 00401 { 00402 filename = fileIn; 00403 break; 00404 } 00405 00406 case XVCFI_STF_DATA: 00407 { 00408 stfFile = stfFileIn; 00409 break; 00410 } 00411 00412 case XVCFI_SDF_DATA: 00413 { 00414 sdfFile = sdfFileIn; 00415 break; 00416 } 00417 } 00418 00419 nofRegenOrbits = nofIn; 00420 } 00421 }; 00422 00424 class XV_DECL VisTime 00425 { 00426 public: 00427 long type; 00428 double utcTime; 00429 long orbitNum; 00430 long sec; 00431 long msec; 00432 00433 VisTime() 00434 { 00435 type = 0; 00436 utcTime = 0.; 00437 orbitNum = 0; 00438 sec = 0; 00439 msec = 0; 00440 } 00441 VisTime(long typeIn, double utcIn, long orbitNumIn, 00442 long secIn, long msecIn) 00443 { 00444 type = typeIn; 00445 utcTime = utcIn; 00446 orbitNum = orbitNumIn; 00447 sec = secIn; 00448 msec = msecIn; 00449 } 00450 }; 00451 00453 class XV_DECL VisTimeInterval 00454 { 00455 public: 00456 VisTime tstart; 00457 VisTime tstop; 00458 00459 VisTimeInterval() 00460 { 00461 } 00462 00463 VisTimeInterval(VisTime t0, VisTime t1) 00464 { 00465 tstart = t0; 00466 tstop = t1; 00467 } 00468 }; 00469 00471 class XV_DECL ZoneInfo 00472 { 00473 public: 00474 00475 string zoneId; 00476 long type; 00477 string zoneDBFilename; 00478 ZoneRec zoneData; 00479 long projection; 00480 double minDuration; 00481 00483 ZoneInfo() 00484 { 00485 zoneId = ""; 00486 type = 0; 00487 zoneDBFilename = ""; 00488 projection = 0; 00489 minDuration = 0.; 00490 } 00491 00493 ZoneInfo( string zoneIdIn, string zoneDBIn, 00494 long projIn, long durIn) 00495 { 00496 type = XVCFI_USE_ZONE_DB_FILE; 00497 zoneId = zoneIdIn; 00498 zoneDBFilename = zoneDBIn; 00499 projection = projIn; 00500 minDuration = durIn; 00501 } 00502 00504 ZoneInfo( ZoneRec zoneIn, long projIn, long durIn) 00505 { 00506 type = XVCFI_USE_ZONE_DATA; 00507 zoneData = zoneIn; 00508 projection = projIn; 00509 minDuration = durIn; 00510 } 00511 00512 }; 00513 00515 class XV_DECL ZoneInfoList 00516 { 00517 public: 00518 00519 long calcFlag; 00520 vector<ZoneInfo> zoneInfo; 00521 00523 ZoneInfoList() 00524 { 00525 calcFlag = XVCFI_COMPUTE; 00526 } 00527 00529 ZoneInfoList( long calcFlagIn, vector<ZoneInfo> zoneInfoIn) 00530 { 00531 calcFlag = calcFlagIn; 00532 zoneInfo = zoneInfoIn; 00533 } 00534 00535 }; 00536 00546 class XV_DECL StationInfo 00547 { 00548 public: 00549 00550 long type; 00551 string stationId; 00552 string stationDBFilename; 00553 StationRec stationData; 00554 double defaultAos; 00555 double defaultLos; 00556 long defaultMask; 00557 double minDuration; 00558 00560 StationInfo() 00561 { 00562 stationId = ""; 00563 type = 0; 00564 stationDBFilename = ""; 00565 defaultAos = 0.; 00566 defaultLos = 0.; 00567 defaultMask = 0; 00568 minDuration = 0.; 00569 } 00570 00572 StationInfo( long typeIn, string stationIdIn, string stationDBIn, 00573 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00574 double durIn) 00575 { 00576 type = typeIn; 00577 stationId = stationIdIn; 00578 stationDBFilename = stationDBIn; 00579 defaultAos = defaultAosIn; 00580 defaultLos = defaultLosIn; 00581 defaultMask = defaultMaskIn; 00582 minDuration = durIn; 00583 } 00584 00585 StationInfo( long typeIn, StationRec staIn, 00586 double defaultAosIn, double defaultLosIn, long defaultMaskIn, 00587 double durIn) 00588 { 00589 type = typeIn; 00590 stationData = staIn; 00591 defaultAos = defaultAosIn; 00592 defaultLos = defaultLosIn; 00593 defaultMask = defaultMaskIn; 00594 minDuration = durIn; 00595 } 00596 }; 00597 00599 class XV_DECL StationInfoList 00600 { 00601 public: 00602 00603 long calcFlag; 00604 vector<StationInfo> stationInfo; 00605 00607 StationInfoList() 00608 { 00609 calcFlag = XVCFI_COMPUTE; 00610 } 00611 00613 StationInfoList( long calcFlagIn, vector<StationInfo> staInfoIn) 00614 { 00615 calcFlag = calcFlagIn; 00616 stationInfo = staInfoIn; 00617 } 00618 00619 }; 00620 00622 class XV_DECL SwathPoint 00623 { 00624 public: 00625 double lon; 00626 double lat; 00627 double alt; 00628 00630 SwathPoint(double lonIn, double latIn, double altIn) 00631 { 00632 lon = lonIn; 00633 lat = latIn; 00634 alt = altIn; 00635 } 00636 } ; 00637 00639 class XV_DECL SwathPointList 00640 { 00641 public: 00642 vector<SwathPoint> swathPoint; 00643 00645 SwathPointList(vector<SwathPoint> list) 00646 { 00647 swathPoint = list; 00648 } 00649 }; 00650 00651 // END 468 00652 00653 } // closing namespace 00654 00655 #endif