NASA Logo
Ocean Color Science Software

ocssw V2022
l1c_str.h
Go to the documentation of this file.
1 // l1c_str.h
2 // Created by Martin Montes on 8/15/2022
3 //
4 
5 #ifndef L1C_STR_H
6 #define L1C_STR_H
7 
8 #include "l1c_filehandle.h"
9 #include <stdbool.h>
10 #include <stdint.h>
11 #include "l1c_input.h"
12 #include <filehandle.h>
13 #include <netcdf>
14 
15 #include "l1c_latlongrid.h"
16 
17 namespace l1c {
18 
19 class l1c_str {
20  protected:
21  public:
22  // methods
23  l1c_str();
24  virtual ~l1c_str();
25 
26  // Open, read, close
27  virtual int32_t openl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
28  virtual int32_t readl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
29  virtual int32_t closel1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
30 
31  virtual int32_t openl1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
32  virtual int32_t closel1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
33 
34  virtual int32_t openl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
35  virtual int32_t readl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
36  virtual int32_t closel1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
37 
38  virtual int32_t openl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
39  virtual int32_t readl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
40  virtual int32_t closel1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
41 
42  virtual int32_t openl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file);
43  virtual int32_t readl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file,
44  int32_t recnum);
45  virtual int32_t closel1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file);
46 
47  virtual int32_t readl1b_ocis_3lines(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
48  virtual int32_t writel1c_ocis(l1c_str *l1cstr, bin_str *binl1c, netCDF::NcFile *nc_output, float **Ltfrac,
49  float **areafrac, short **obs_view, int band_ix, int view_ix);
50 
51  // global attributes
52  size_t npix;
53  size_t iscan;
54  size_t nscan;
55  size_t nviews;
56  size_t nbands;
57  // scan line attributes--
58  double *ev_mid_time;
60  size_t spix;
61  size_t epix;
62  size_t dpix;
63 
64  // structure--pointers to data arrays
65  float *Fobar;
66  float *Lt_tot; // dim depends between sensors--OCI is bands x pixels --
67  float **Lt;
68  float **Lt_blue; //[num_views][num_pol][num_blue_bands][num_pixels]
69  float **Lt_red;
70  float **Lt_SWIR;
71  float *blue_lambdas;
72  float *red_lambdas;
73  float *SWIR_lambdas;
74 
75  // spex
76  float **I;
77  float **I_polsample;
78  float **I_lambdas;
79  float **pol_lambdas;
80  uint8_t *viewport;
81 
82  // sensor/sun geometry
83  float *senz;
84  float *sena;
85  float *solz;
86  float *sola;
87  float *delphi;
88  float *scattang;
89 
90  // navigation--
91  float att_ang[3];
92  float orb_pos[3];
93  float orb_vel[3];
94 
95  // geolocation--
96  double *timepix;
97  float *tilt;
98  float *senazpix;
99  float *latpix;
100  float *lonpix;
101  float *latpix2; // lat2/lon are the sline +1
102  float *lonpix2;
103  float *latpix3; // lat2/lon are the sline +1
104  float *lonpix3;
105 
106  // harp2
107  float **senazpix_3d;
108  float **latpix_3d;
109  float **lonpix_3d;
110  float **latpix2_3d; // lat2/lon are the sline +1
111  float **lonpix2_3d;
112 
113  float *latnad; // nadir latitude
114  float *lonnad;
115  float *lonershift; // earth rotation shift
116  float *terr_height;
117  float *cloud_height;
118 
120  filehandle *l1file;
121 };
122 
123 // prototypes------
124 // Open, read, close
125 int32_t openl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
126 int32_t readl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
127 int32_t closel1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
128 
129 int32_t openl1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
130 int32_t closel1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
131 
132 int32_t openl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
133 int32_t readl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
134 int32_t closel1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
135 
136 int32_t openl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
137 int32_t readl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
138 int32_t closel1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile);
139 
140 int32_t openl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file);
141 int32_t readl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file, int32_t recnum);
142 int32_t closel1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file);
143 
144 int32_t readl1b_ocis_3lines(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum);
145 int32_t writel1c_ocis(l1c_str *l1cstr, bin_str *binl1c, netCDF::NcFile *nc_output, float **Ltfrac,
146  float **areafrac, short **obs_view, int band_ix, int view_ix);
147 
148 } // namespace l1c
149 
150 #endif /* L1C_STR_H */
virtual int32_t closel1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:2060
int32 l1file(int32 sdfid, int32 *nsamp, int32 *nscans, int16 *dtynum)
Definition: l1stat_chk.c:586
float ** Lt_blue
Definition: l1c_str.h:68
virtual int32_t openl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:200
int32_t writel1c_ocis(l1c_str *l1cstr, bin_str *binl1c, netCDF::NcFile *nc_output, float **Ltfrac, float **areafrac, short **obs_view, int band_ix, int view_ix)
float * cloud_height
Definition: l1c_str.h:117
l1c_filehandle * l1cfile
Definition: l1c_str.h:119
virtual int32_t openl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:722
float ** Lt_SWIR
Definition: l1c_str.h:70
int32_t readl1b_ocis_3lines(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
float ** I_polsample
Definition: l1c_str.h:77
size_t epix
Definition: l1c_str.h:61
virtual int32_t closel1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:1920
float orb_pos[3]
Definition: l1c_str.h:92
float * lonpix2
Definition: l1c_str.h:102
double * timepix
Definition: l1c_str.h:96
float * scattang
Definition: l1c_str.h:88
float ** I_lambdas
Definition: l1c_str.h:78
float ** senazpix_3d
Definition: l1c_str.h:107
float ** I
Definition: l1c_str.h:76
float * red_lambdas
Definition: l1c_str.h:72
float * latpix
Definition: l1c_str.h:99
virtual int32_t openl1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:400
float * senazpix
Definition: l1c_str.h:98
int32_t openl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
filehandle * l1file
Definition: l1c_str.h:120
float * latpix2
Definition: l1c_str.h:101
float * lonpix3
Definition: l1c_str.h:104
float * lonpix
Definition: l1c_str.h:100
int32_t closel1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
float * latpix3
Definition: l1c_str.h:103
virtual int32_t readl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
Definition: l1c_str.cpp:1278
float ** Lt
Definition: l1c_str.h:67
int32_t openl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file)
float ** lonpix2_3d
Definition: l1c_str.h:111
size_t iscan
Definition: l1c_str.h:53
read recnum
int32_t openl1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
int32_t closel1b_oci_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
size_t nbands
Definition: l1c_str.h:56
virtual ~l1c_str()
Definition: l1c_str.cpp:180
float att_ang[3]
Definition: l1c_str.h:91
virtual int32_t closel1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:1871
float * senz
Definition: l1c_str.h:83
float * blue_lambdas
Definition: l1c_str.h:71
size_t dpix
Definition: l1c_str.h:62
size_t nscan
Definition: l1c_str.h:54
float * SWIR_lambdas
Definition: l1c_str.h:73
double * ev_mid_time
Definition: l1c_str.h:58
int32_t readl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
Definition: l1c.cpp:71
virtual int32_t closel1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:1993
float * Fobar
Definition: l1c_str.h:65
int32_t openl1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
size_t spix
Definition: l1c_str.h:60
size_t * scan_quality_flag
Definition: l1c_str.h:59
int32_t closel1b_spex_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
virtual int32_t readl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file, int32_t recnum)
Definition: l1c_str.cpp:1812
virtual int32_t readl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
Definition: l1c_str.cpp:1757
virtual int32_t writel1c_ocis(l1c_str *l1cstr, bin_str *binl1c, netCDF::NcFile *nc_output, float **Ltfrac, float **areafrac, short **obs_view, int band_ix, int view_ix)
Definition: l1c_str.cpp:1340
float * lonershift
Definition: l1c_str.h:115
virtual int32_t openl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
Definition: l1c_str.cpp:1042
float ** latpix2_3d
Definition: l1c_str.h:110
int32_t closel1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file)
float * sola
Definition: l1c_str.h:86
virtual int32_t readl1b_ocis_3lines(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
Definition: l1c_str.cpp:1586
uint8_t * viewport
Definition: l1c_str.h:80
float orb_vel[3]
Definition: l1c_str.h:93
int32_t readl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
int32_t closel1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
float * tilt
Definition: l1c_str.h:97
float * terr_height
Definition: l1c_str.h:116
float * latnad
Definition: l1c_str.h:113
virtual int32_t readl1b_ocis_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
Definition: l1c_str.cpp:1426
float * sena
Definition: l1c_str.h:84
float * delphi
Definition: l1c_str.h:87
int32_t readl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, int32_t recnum)
virtual int32_t closel1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file)
Definition: l1c_str.cpp:2101
int32_t readl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file, int32_t recnum)
float ** latpix_3d
Definition: l1c_str.h:108
float * lonnad
Definition: l1c_str.h:114
size_t npix
Definition: l1c_str.h:52
float ** lonpix_3d
Definition: l1c_str.h:109
size_t nviews
Definition: l1c_str.h:55
float * solz
Definition: l1c_str.h:85
float ** pol_lambdas
Definition: l1c_str.h:79
float * Lt_tot
Definition: l1c_str.h:66
virtual int32_t openl1b_misr_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile, filehandle *l1file)
Definition: l1c_str.cpp:183
int32_t openl1b_harp2_l1c(l1c_str *l1cstr, l1c_filehandle *l1cfile)
float ** Lt_red
Definition: l1c_str.h:69