NASA Logo
Ocean Color Science Software

ocssw V2022
readL2scan.h
Go to the documentation of this file.
1 #ifndef READL2SCAN_H
2 #define READL2SCAN_H
3 
4 #include <dfutils.h>
5 #include <stdint.h>
6 
7 #define byte uint8_t
8 
9 #define MAXNFILES 10000 /* Increase to 544 09/25/06 JMG - 800 WDR */
10 #define MAXNUMBERPRODUCTS 2000
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 // set of functions defined in expand 3D module
16 void l3_l2_conversion(char **inp3, char **out2);
17 void l3_l2_index(char **inp3, int *start, int *count);
18 int get_set_flag();
19 int get_l2_flag_use();
20 typedef struct l2prod_struct {
21  int32_t fileindex;
22 
23  char filename[256];
24  char oformat[32];
25 
26  int32_t nrec;
27  int32_t nsamp;
28 
29  int16_t syear;
30  int16_t sday;
31  int32_t smsec;
32  int16_t eyear;
33  int16_t eday;
34  int32_t emsec;
35  int32_t orbit;
36  char dtype[8];
37 
38  int32_t ntilts;
39  int16_t tilt_flags[20];
40  int16_t tilt_ranges[2][20];
41 
42  char *flagnames;
43  int32_t flagmask;
44 
45  int32_t year;
46  int32_t day;
47  int32_t msec;
48 
49  int32_t *year_cache;
50  int32_t *day_cache;
51  int32_t *msec_cache;
52  double *scantime_cache;
53 
54  float *longitude;
55  float *latitude;
56 
57  float *geonav[6];
58 
59  float *lon_cntl;
60  float *lat_cntl;
61  float *cntl_pnts;
63  float *spline_arr;
64 
65  int32_t nprod;
70 
71  float **l2_data;
72  int32_t *l2_flags;
73  int32_t *l2_bits;
74 
75  byte eng_qual[4];
76  byte s_flags[4];
77  int32_t nflag[8];
78 
79  int32_t geointerp;
80 
81  byte *mside;
82  byte *detnum;
83  int32_t *pixnum;
84 
85  // area weighting variables
86  float *lat1; // lat1 for corner of pixel
87  float *lon1; // lon1 for corner of pixel
88  float *lat2; // lat2 for corner of pixel
89  float *lon2; // lon2 for corner of pixel
90  byte lat2Valid; // does lat2 and lon2 contain valid coordinates
91 
92  int wavelength[250];
93  int wavelengths_3d[250];
94 
95  int32_t bandsPerPixel;
96  int32_t wavelength_3d;
97 } l2_prod;
98 
99 typedef struct meta_l2Struct {
100  char *product_name; /* ATTR Product name(file name) */
101  char *title;
102  char *data_center; /* ATTR data_center, processing center */
103  char *mission; /* ATTR mission */
104  char *mission_char; /* ATTR Mission Characteristics */
105  char *sensor_name; /* ATTR sensor name */
106  char *sensor; /* ATTR sensor */
107  char *sensor_char; /* ATTR instrumentInformation */
108  char *sw_id; /* ATTR Software ID */
109  char *infiles; /* ATTR Input files */
110  char *stime; /* ATTR Start time */
111  char *etime; /* ATTR End time */
112  char *ctime; /* ATTR scene center time */
113  char *ntime; /* ATTR Node crossing time */
114  char *snode; /* ATTR Start Node */
115  char *enode; /* ATTR End Node */
116  int orbnum; /* ATTR orbit number */
117  char *norad1; /* ATTR NORAD elements, first line */
118  char *norad2; /* ATTR NORAD elements, second line */
119  int pix_start; /* ATTR LAC Pixel Start Number */
120  int pix_sub; /* ATTR LAC Pixel Subsampling */
121  int ncrec; /* ATTR scene center scan line */
122  int nfrec; /* ATTR number of filled scan line */
123  byte ff_mis; /* ATTR FF missing frames */
124  byte sd_mis; /* ATTR SDPS missing frames */
125  float flags_pc[32]; /* MFSD % data for each quality flag */
126  char *lat_units; /* ATTR Latitude units */
127  char *lon_units; /* ATTR Longitude units */
128  float northlat; /* ATTR Northernmost latitude */
129  float southlat; /* ATTR Southernmost latitude */
130  float westlon; /* ATTR Westernmost longitude */
131  float eastlon; /* ATTR Easternmost longitude */
132  float startclat; /* ATTR Start Center Latitude */
133  float startclon; /* ATTR Start Center Longitude */
134  float endclat; /* ATTR End Center Latitude */
135  float endclon; /* ATTR End Center Longitude */
136  float nodel; /* ATTR Orbit node longitude */
137  int ntilts; /* MFSD Sensor Tilt */
138  /* Calibration Vgroup */
139  short entry_year;
140  short entry_day;
141  short ref_year;
142  short ref_day;
143  short ref_minute;
144 } meta_l2Type;
145 
146 /* Prototypes */
147 void free_rowgroup_cache();
148 void init_rowgroup_cache();
149 int32_t get_dtype(int32_t dtype, ds_format_t fileformat);
150 int32_t openL2(const char *fname, const char *plist, l2_prod *l2_str);
151 int32_t reopenL2(int32_t fileindex, l2_prod *l2_str);
152 int32_t readL2(l2_prod *l2_str, int32_t ifile, int32_t recnum, int32_t iprod,
153  unsigned char *scan_in_rowgroup);
154 int32_t readlonlat(l2_prod *l2_str, int32_t ifile, int32_t *start, int32_t *edges,
155  unsigned char *scan_in_rowgroup);
156 int32_t closeL2(l2_prod *l2_str, int32_t ifile);
157 int32_t freeL2(l2_prod *l2_str);
158 int32_t findprod(l2_prod *l2_str, char *prodname);
159 int32_t readL2meta(meta_l2Type *meta_l2, int32_t ifile);
160 int32_t freeL2meta(meta_l2Type *meta_l2);
161 int32_t getL3units(l2_prod *l2_str, int32_t ifile, char *l3b_prodname, char *units);
162 
164 
171 
172 #ifdef __cplusplus
173 }
174 #endif
175 #endif
float * lat2
Definition: readL2scan.h:88
char * product_name
Definition: readL2scan.h:100
@ L2PixelOff
Definition: readL2scan.h:163
float * spline_arr
Definition: readL2scan.h:63
float * lon_cntl
Definition: readL2scan.h:59
float * latitude
Definition: readL2scan.h:55
int32_t * year_cache
Definition: readL2scan.h:49
int get_set_flag()
Definition: expand3D.cpp:434
void l3_l2_conversion(char **inp3, char **out2)
Definition: expand3D.cpp:413
char * data_center
Definition: readL2scan.h:102
int32_t ntilts
Definition: readL2scan.h:38
void l3_l2_index(char **inp3, int *start, int *count)
Definition: expand3D.cpp:428
float startclat
Definition: readL2scan.h:132
int32_t reopenL2(int32_t fileindex, l2_prod *l2_str)
Definition: readL2scan.c:1050
int32_t getL3units(l2_prod *l2_str, int32_t ifile, char *l3b_prodname, char *units)
Definition: readL2scan.c:2346
float * lon2
Definition: readL2scan.h:89
byte * mside
Definition: readL2scan.h:81
float flags_pc[32]
Definition: readL2scan.h:125
int32_t readL2meta(meta_l2Type *meta_l2, int32_t ifile)
Definition: readL2scan.c:2151
int32_t wavelength_3d
Definition: readL2scan.h:96
@ L2PixelCorner
Definition: readL2scan.h:163
int16_t tilt_ranges[2][20]
Definition: readL2scan.h:40
int32_t msec
Definition: readL2scan.h:47
float * cntl_pnts_cache
Definition: readL2scan.h:62
int32_t bandsPerPixel
Definition: readL2scan.h:95
int32_t thirdDim[MAXNUMBERPRODUCTS]
Definition: readL2scan.h:69
float * longitude
Definition: readL2scan.h:54
char * lon_units
Definition: readL2scan.h:127
char oformat[32]
Definition: readL2scan.h:24
char * enode
Definition: readL2scan.h:115
char * lat_units
Definition: readL2scan.h:126
int32_t nsamp
Definition: readL2scan.h:27
int wavelengths_3d[250]
Definition: readL2scan.h:93
char * ctime
Definition: readL2scan.h:112
short ref_minute
Definition: readL2scan.h:143
int16_t tilt_flags[20]
Definition: readL2scan.h:39
float * cntl_pnts
Definition: readL2scan.h:61
int wavelength[250]
Definition: readL2scan.h:92
float * geonav[6]
Definition: readL2scan.h:57
void init_rowgroup_cache()
Definition: readL2scan.c:287
char * stime
Definition: readL2scan.h:110
int32_t emsec
Definition: readL2scan.h:34
@ L2PixelDelta
Definition: readL2scan.h:163
char * norad2
Definition: readL2scan.h:118
int32_t geointerp
Definition: readL2scan.h:79
int32_t year
Definition: readL2scan.h:45
byte * detnum
Definition: readL2scan.h:82
int16_t bv_scaled[MAXNUMBERPRODUCTS]
Definition: readL2scan.h:68
short entry_day
Definition: readL2scan.h:140
read recnum
char * sw_id
Definition: readL2scan.h:108
int32_t fileindex
Definition: readL2scan.h:21
float ** l2_data
Definition: readL2scan.h:71
void free_rowgroup_cache()
Definition: readL2scan.c:259
float northlat
Definition: readL2scan.h:128
char * snode
Definition: readL2scan.h:114
short entry_year
Definition: readL2scan.h:139
int32_t * msec_cache
Definition: readL2scan.h:51
int32_t readL2(l2_prod *l2_str, int32_t ifile, int32_t recnum, int32_t iprod, unsigned char *scan_in_rowgroup)
Definition: readL2scan.c:1336
char * mission
Definition: readL2scan.h:103
#define MAXNUMBERPRODUCTS
Definition: readL2scan.h:10
int32_t findprod(l2_prod *l2_str, char *prodname)
Definition: readL2scan.c:2140
int32_t * l2_flags
Definition: readL2scan.h:72
char * ntime
Definition: readL2scan.h:113
char * infiles
Definition: readL2scan.h:109
char * norad1
Definition: readL2scan.h:117
int32_t smsec
Definition: readL2scan.h:31
char * title
Definition: readL2scan.h:101
int32_t openL2(const char *fname, const char *plist, l2_prod *l2_str)
Definition: readL2scan.c:316
char * mission_char
Definition: readL2scan.h:104
int32_t * l2_bits
Definition: readL2scan.h:73
char * prodname[MAXNUMBERPRODUCTS]
Definition: readL2scan.h:66
int16_t eday
Definition: readL2scan.h:33
int32_t nflag[8]
Definition: readL2scan.h:77
float * lon1
Definition: readL2scan.h:87
int32_t get_dtype(int32_t dtype, ds_format_t fileformat)
Definition: readL2scan.c:231
L2PixelMode_t
Definition: readL2scan.h:163
char * sensor_char
Definition: readL2scan.h:107
char * sensor
Definition: readL2scan.h:106
int32_t day
Definition: readL2scan.h:46
char * flagnames
Definition: readL2scan.h:42
dtype
Definition: DDataset.hpp:31
double * scantime_cache
Definition: readL2scan.h:52
short ref_year
Definition: readL2scan.h:141
int32_t readlonlat(l2_prod *l2_str, int32_t ifile, int32_t *start, int32_t *edges, unsigned char *scan_in_rowgroup)
Definition: readL2scan.c:1828
float southlat
Definition: readL2scan.h:129
int16_t syear
Definition: readL2scan.h:29
char * etime
Definition: readL2scan.h:111
int get_l2_flag_use()
Definition: expand3D.cpp:437
int32_t nrec
Definition: readL2scan.h:26
void enableL2PixelArea(enum L2PixelMode_t val)
Definition: readL2scan.c:213
ds_format_t
Definition: dfutils.h:18
float startclon
Definition: readL2scan.h:133
int16_t eyear
Definition: readL2scan.h:32
int32_t freeL2meta(meta_l2Type *meta_l2)
Definition: readL2scan.c:2325
int32_t freeL2(l2_prod *l2_str)
Definition: readL2scan.c:2083
float * lat1
Definition: readL2scan.h:86
int32_t closeL2(l2_prod *l2_str, int32_t ifile)
Definition: readL2scan.c:1995
float bv_unscaled[MAXNUMBERPRODUCTS]
Definition: readL2scan.h:67
char * sensor_name
Definition: readL2scan.h:105
int32_t flagmask
Definition: readL2scan.h:43
float * lat_cntl
Definition: readL2scan.h:60
int32_t nprod
Definition: readL2scan.h:65
byte s_flags[4]
Definition: readL2scan.h:76
char filename[256]
Definition: readL2scan.h:23
byte lat2Valid
Definition: readL2scan.h:90
int32_t orbit
Definition: readL2scan.h:35
int32_t * day_cache
Definition: readL2scan.h:50
int32_t * pixnum
Definition: readL2scan.h:83
int16_t sday
Definition: readL2scan.h:30
int count
Definition: decode_rs.h:79