1 #ifndef _L2_FLAGS_H
2 #define _L2_FLAGS_H
3
4 #include <filehandle.h>
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif
9
10
11 #define ATMFAIL 1
12 #define LAND 2
13 #define PRODWARN 4
14 #define HIGLINT 8
15 #define HILT 16
16 #define HISATZEN 32
17 #define COASTZ 64
18 #define SPARE1 128
19 #define STRAYLIGHT 256
20 #define CLOUD 512
21 #define COCCOLITH 1024
22 #define TURBIDW 2048
23 #define HISOLZEN 4096
24 #define SPARE2 8192
25 #define LOWLW 16384
26 #define CHLFAIL 32768
27 #define NAVWARN 65536
28 #define ABSAER 131072
29 #define SPARE3 262144
30 #define MAXAERITER 524288
31 #define MODGLINT 1048576
32 #define CHLWARN 2097152
33 #define ATMWARN 4194304
34 #define OPSHAL 8388608
35 #define SEAICE 16777216
36 #define NAVFAIL 33554432
37 #define FILTER 67108864
38 #define SPARE5 134217728
39 #define BOWTIEDEL 268435456
40 #define HIPOL 536870912
41 #define PRODFAIL 1073741824
42 #define SPARE7 2147483648
43
44 static const char * const l2_flag_lname[L1_NFLAGS] = {"ATMFAIL",
45 "LAND",
46 "PRODWARN",
47 "HIGLINT",
48 "HILT",
49 "HISATZEN",
50 "COASTZ",
51 "SPARE",
52 "STRAYLIGHT",
53 "CLDICE",
54 "COCCOLITH",
55 "TURBIDW",
56 "HISOLZEN",
57 "SPARE",
58 "LOWLW",
59 "CHLFAIL",
60 "NAVWARN",
61 "ABSAER",
62 "SPARE",
63 "MAXAERITER",
64 "MODGLINT",
65 "CHLWARN",
66 "ATMWARN",
67 "SPARE",
68 "SEAICE",
69 "NAVFAIL",
70 "FILTER",
71 "SPARE",
72 "BOWTIEDEL",
73 "HIPOL",
74 "PRODFAIL",
75 "SPARE"};
76
77 static const char * const l2_flag_sname[L1_NFLAGS] = {"f01_name",
78 "f02_name",
79 "f03_name",
80 "f04_name",
81 "f05_name",
82 "f06_name",
83 "f07_name",
84 "f08_name",
85 "f09_name",
86 "f10_name",
87 "f11_name",
88 "f12_name",
89 "f13_name",
90 "f14_name",
91 "f15_name",
92 "f16_name",
93 "f17_name",
94 "f18_name",
95 "f19_name",
96 "f20_name",
97 "f21_name",
98 "f22_name",
99 "f23_name",
100 "f24_name",
101 "f25_name",
102 "f26_name",
103 "f27_name",
104 "f28_name",
105 "f29_name",
106 "f30_name",
107 "f31_name",
108 "f32_name"};
109
110
111 #ifdef __cplusplus
112 }
113 #endif
114
115 #endif
While going through the OCSSW source code, I found that in the l2_flags.h header file, the flag OPSHAL was actually defined (Line 34). However, in the l2_flags of the default MODIS-Aqua L2 files generated by OCSSW, these two flags were respectively replaced by SPARE.
I'm now very curious whether we can enable these flag, or whether these flag have actually been calculated but haven't been named yet.Because this flag is very helpful for distinguishing whether the pixels near the shore are trustworthy or not.
Questions regarding l2_flag OPSHAL
-
mercury_1106
- Posts: 3
- Joined: Mon Mar 27, 2023 4:32 am America/New_York
-
OB.DAAC - SeanBailey
- User Services

- Posts: 64
- Joined: Mon Dec 16, 2024 8:43 am America/New_York
- Endorsed: 5 times
Re: Questions regarding l2_flag OPSHAL
The optically shallow flag (OPSHAL) is actively being populated in the current version of the code. Here is what is output in the current L2 files:
Regards,
Sean
Code: Select all
int l2_flags(number_of_lines, pixels_per_line) ;
l2_flags:long_name = "Level-2 Processing Flags" ;
l2_flags:coordinates = "longitude latitude" ;
l2_flags:valid_min = -2147483648 ;
l2_flags:valid_max = 2147483647 ;
l2_flags:flag_masks = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, 1073741824, -2147483648 ;
l2_flags:flag_meanings = "ATMFAIL LAND PRODWARN HIGLINT HILT HISATZEN COASTZ SPARE STRAYLIGHT CLDICE COCCOLITH TURBIDW HISOLZEN SPARE LOWLW CHLFAIL NAVWARN ABSAER SPARE MAXAERITER MODGLINT CHLWARN ATMWARN OPSHAL SEAICE NAVFAIL FILTER SPARE BOWTIEDEL HIPOL PRODFAIL SPARE" ;Sean