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