OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
DDOptions.cpp
Go to the documentation of this file.
1 /**************************************************************************
2 *
3 * NAME: DDOptions.cpp
4 *
5 * DESCRIPTION: Sets up the options defined in the program parameters file
6 * and the command line.
7 *
8 * Created on: Aug 25, 2020
9 * Author: Sam Anderson, DT
10 *
11 **************************************************************************/
12 
13 #include <cassert>
14 #include <iostream>
15 #include <ostream>
16 #include <cstring>
17 #include <vector>
18 #include <libgen.h>
19 
20 #include <DDOptions.h>
21 
22 using namespace std;
23 
24 //---------------------------------------------------------------------------
25 // Static constants
26 //---------------------------------------------------------------------------
27 
28 const string INPUT_SPIX = "spixl";
29 const string INPUT_EPIX = "epixl";
30 const string INPUT_DPIX = "dpixl";
31 const string INPUT_SLINE = "sline";
32 const string INPUT_ELINE = "eline";
33 const string INPUT_DLINE = "dline";
34 const string INPUT_LT_NOISE_SCALE = "lt_noise_scale";
35 const string INPUT_LINES_PER_RW = "lines_per_rw";
36 
37 const string INPUT_PAR = "par";
38 const string PRODUCT_XML = "prod_xml";
39 const string INPUT_IFFSVM = "ifile_svm";
40 const string INPUT_L1B = "ifile";
41 const string INPUT_GEO = "geofile";
42 const string INPUT_GDAS1 = "gdas1";
43 const string INPUT_GDAS2 = "gdas2";
44 const string INPUT_GDAS = "gdas";
45 const string INPUT_LANDMASK = "landmask";
46 const string INPUT_CLDMASK = "cldmask";
47 const string INPUT_GAS_CORRECTION = "lut_gascorr";
48 const string INPUT_SAT_ID = "lut_satid";
49 const string OUTPUT_NC4 = "ofile";
50 const string INPUT_GRIB = "met";
51 const string INPUT_OZONE = "ozone";
52 //Dark Target
53 const string INPUT_OCEAN_BIG1 = "lut_ocean_big1";
54 const string INPUT_OCEAN_BIG2 = "lut_ocean_big2";
55 const string INPUT_OCEAN_BIG3 = "lut_ocean_big3";
56 const string INPUT_OCEAN_BIG4 = "lut_ocean_big4";
57 const string INPUT_OCEAN_SMALL1 = "lut_ocean_small1";
58 const string INPUT_OCEAN_SMALL2 = "lut_ocean_small2";
59 const string INPUT_OCEAN_SMALL3 = "lut_ocean_small3";
60 const string INPUT_OCEAN_SMALL4 = "lut_ocean_small4";
61 const string INPUT_LAND_W0466 = "lut_land_w0466";
62 const string INPUT_LAND_W0554 = "lut_land_w0554";
63 const string INPUT_LAND_W0645 = "lut_land_w0645";
64 const string INPUT_LAND_W2113 = "lut_land_w2113";
65 const string INPUT_LAND_MAP = "lut_land_aerosol_map";
66 // Water vapor
67 const string INPUT_TRANSM_H2O_1 = "lut_transm_h2o_1";
68 const string INPUT_TRANSM_H2O_2 = "lut_transm_h2o_2";
69 const string INPUT_TRANSM_H2O_3 = "lut_transm_h2o_3";
70 const string INPUT_TRANSM_H2O_4 = "lut_transm_h2o_4";
71 const string INPUT_TRANSM_H2O_5 = "lut_transm_h2o_5";
72 const string INPUT_TRANSM_H2O_6 = "lut_transm_h2o_6";
73 const string INPUT_WEIGHT_TABLE = "lut_weight_table";
74 const string INPUT_REFL_CH2 = "lut_refl_ch2";
75 const string INPUT_RATIO_CH19_TO_CH2 = "lut_ratio_ch19_to_ch2";
76 // Deep Blue
77 //const string INPUT_MODIS_TABLE = "lut_modis_table";
78 const string INPUT_GLOBAL_IGBP = "lut_global_igbp";
79 const string INPUT_NVALX_412 = "lut_nvalx_412";
80 const string INPUT_NVALX_470 = "lut_nvalx_470";
81 const string INPUT_NVALX_650 = "lut_nvalx_650";
82 const string INPUT_NVALX21 = "lut_nvalx21";
83 const string INPUT_DBDT_REGIONS = "lut_dbdt_regions";
84 const string INPUT_MODIS_SWIR = "lut_modis_swir";
85 const string INPUT_MODIS_SURF_REFL = "lut_modis_surfdb";
86 const string INPUT_MODIS_XCAL_412 = "lut_modis_xcal_412";
87 const string INPUT_MODIS_XCAL_470 = "lut_modis_xcal_470";
88 const string INPUT_GAIN_412 = "lut_gain_412";
89 const string INPUT_GAIN_470 = "lut_gain_470";
90 const string INPUT_ATMOSPHERE = "lut_atmosphere";
91 
92 const string INPUT_AERO_LAND_FINE = "lut_aero_land_fine";
93 const string INPUT_AERO_LAND_DUST = "lut_aero_land_dust";
94 const string INPUT_AERO_OCEAN_DUST = "lut_aero_ocean_dust";
95 const string INPUT_AERO_OCEAN_FINE = "lut_aero_ocean_fine";
96 const string INPUT_AERO_OCEAN_MARI = "lut_aero_ocean_mari";
97 const string INPUT_AERO_OCEAN_MIX = "lut_aero_ocean_mix";
98 const string INPUT_BATHYMETRY = "lut_bathymetry";
99 const string INPUT_CHL = "lut_chl";
100 const string INPUT_LER_TABLE = "lut_ler_table";
101 const string INPUT_LANDCOVER = "lut_landcover";
102 const string INPUT_SURFACE_PRESSURE = "lut_surface_pressure";
103 const string INPUT_GEOZONE = "lut_geozone";
104 const string INPUT_SEASONAL_DESERTS = "lut_seasonal_deserts";
105 const string INPUT_BRDF = "lut_brdf";
106 const string INPUT_VIIRS_SURF_REFL = "lut_viirs_surfdb";
107 const string INPUT_SURF_COEFF = "lut_surfcoeff";
108 const string INPUT_SWIR = "lut_swir";
109 const string INPUT_VEG_LANDCOVER = "lut_veg_landcover";
110 const string INPUT_VEG_21SFC = "lut_veg_21sfc";
111 const string INPUT_RAYL_412 = "lut_rayl_412";
112 const string INPUT_RAYL_470 = "lut_rayl_488";
113 const string INPUT_RAYL_650 = "lut_rayl_670";
114 const string INPUT_VIIRS_XCAL_412 = "lut_viirs_xcal_412";
115 const string INPUT_VIIRS_XCAL_488 = "lut_viirs_xcal_488";
116 const string INPUT_VIIRS_XCAL_670 = "lut_viirs_xcal_670";
117 
118 const string INPUT_NC4_LUT = "lut";
119 const string INPUT_DT_NC4_LUT = "lut_nc4_dt";
120 const string INPUT_DB_NC4_LUT = "lut_nc4_db";
121 const string INPUT_SENSOR_INFO = "sensor_info";
122 const string LEAP_SEC_PATH = "leapsec_file";
123 
124 const string LUT_GRIB = "GRIB";
125 const string LUT_GAS_CORRECTION = "GAS_CORRECTION";
126 const string LUT_LAND_AEROSOL = "LAND_AEROSOL";
127 const string LUT_OCEAN_AEROSOL = "OCEAN_AEROSOL";
128 const string LUT_WATER_VAPOR = "WATER_VAPOR";
129 const string LUT_SURFACE_PRESSURE = "SURFACE_PRESSURE";
130 const string LUT_MODIS_SWIR = "MODIS_SWIR_VIS";
131 const string LUT_MODIS_SURFACE_REFL = "MODIS_SURFACE_REFLECTANCE";
132 const string LUT_MODIS_CORRECTIONS = "MODIS_CORRECTIONS";
133 const string LUT_NVALX = "NVALX";
134 const string LUT_RAYLEIGH = "RAYLEGH";
135 
136 const string LUT_NVALX21 = "VEG_21SFC";
137 const string LUT_LER_TABLES = "LER_TABLES";
138 const string LUT_SWIR = "SWIR_VS_VISIBLE";
139 const string LUT_VIIRS_SURFACE_REFL = "VIIRS_SURFACE_REFLECTANCE";
140 const string LUT_SURFACE_COEFF = "SURFACE_COEFFICIENTS";
141 const string LUT_LANDCOVER = "LANDCOVER";
142 const string LUT_GEOZONE = "GEOZONE";
143 const string LUT_OCEAN_AEROSOL_FINE = "OCEAN_AEROSOL_FINE";
144 const string LUT_OCEAN_AEROSOL_DUST = "OCEAN_AEROSOL_DUST";
145 const string LUT_OCEAN_AEROSOL_MARI = "OCEAN_AEROSOL_MARITIME";
146 const string LUT_OCEAN_AEROSOL_MIX = "OCEAN_AEROSOL_MIXED";
147 const string LUT_LAND_AEROSOL_FINE = "LAND_AEROSOL_FINE";
148 const string LUT_LAND_AEROSOL_DUST = "LAND_AEROSOL_DUST";
149 const string LUT_BATHYMETRY = "BATHYMETRY";
150 const string LUT_CHL = "LOG_CHL";
151 
152 const string BOOL_SENSOR = "sensor_band_parameters";
153 const string BOOL_SCANS = "scan_line_attributes";
154 const string BOOL_NAVIGATION = "navigation_data";
155 const string BOOL_PROCESS = "processing_control";
156 const string BOOL_WAVELENGTHS = "wavelengths";
157 const string BOOL_DATA = "geophysical_data";
158 const string BOOL_FLAGS = "flag_percentages";
159 const string BOOL_ANCILLARY = "ancillary";
160 const string BOOL_GEOLOCATION = "geolocation";
161 const string BOOL_OBSERVATIONS = "observations";
162 const string BOOL_STATISTICS = "statistics";
163 const string BOOL_ADD_LT_NOISE = "add_lt_noise";
164 const string BOOL_GAS_CORRECTION = "gas_correction";
165 const string BOOL_MASK_GLINT = "mask_glint";
166 const string BOOL_MASK_CLOUD = "mask_cloud";
167 const string BOOL_SHORT_FORMAT = "short_format";
168 
169 const string BOOL_L2_FLAGS = "l2_flags";
170 const string BOOL_CLOUD_MASK = "cloud_mask";
171 const string BOOL_QUALITY_FLAG = "quality_flag";
172 const string BOOL_AEROSOL_TYPE = "aerosol_type";
173 const string BOOL_SCATTER_ANGLE = "scattering_angle";
174 const string BOOL_CHLOROPHYLL = "chlorophyll";
175 const string BOOL_RESIDUAL_ERROR = "residual_error";
176 const string BOOL_FMF_550 = "fmf_550";
177 const string BOOL_NDVI = "ndvi";
178 const string BOOL_ANGSTROM = "angstrom";
179 const string BOOL_AOT_380 = "aot_380";
180 const string BOOL_AOT_410 = "aot_410";
181 const string BOOL_AOT_490 = "aot_490";
182 const string BOOL_AOT_550 = "aot_550";
183 const string BOOL_AOT_670 = "aot_670";
184 const string BOOL_AOT_865 = "aot_865";
185 const string BOOL_AOT_1240 = "aot_1240";
186 const string BOOL_AOT_1610 = "aot_1610";
187 const string BOOL_AOT_2250 = "aot_2250";
188 const string BOOL_SURF_410 = "surface_410";
189 const string BOOL_SURF_490 = "surface_490";
190 const string BOOL_SURF_670 = "surface_670";
191 const string BOOL_SURF_2250 = "surface_2250";
192 
193 const string ALGORITHM = "alg";
194 const string NETCDF_LUT_PATH = "lut_nc4_path";
195 
196 // global variable to hold the command line parameters
197 static clo_optionList_t* global_optionList = NULL;
198 
200  global_optionList = list;
201 }
202 
204  if(global_optionList == NULL) {
205  cerr << "get_optionList: optionList pointer needs to be set before accessing." << endl;
206  exit(EXIT_FAILURE);
207  }
208  return global_optionList;
209 }
210 
211 string get_option(const string& name) {
212  if(global_optionList == NULL) {
213  cerr << "get_option: optionList pointer needs to be set before accessing." << endl;
214  exit(EXIT_FAILURE);
215  }
216  clo_option_t* option = clo_findOption(global_optionList, name.c_str());
217  if(option == NULL || !clo_isOptionSet(option))
218  return "";
219  string result(clo_getOptionString(option));
220  return result;
221 }
222 
223 int get_option_int(const string& name) {
224  if(global_optionList == NULL) {
225  cerr << "get_option: optionList pointer needs to be set before accessing." << endl;
226  exit(EXIT_FAILURE);
227  }
228  return clo_getInt(global_optionList, name.c_str());
229 }
230 
231 int get_bool(const string& name) {
232  if(global_optionList == NULL) {
233  cerr << "get_option: optionList pointer needs to be set before accessing." << endl;
234  exit(EXIT_FAILURE);
235  }
236  return clo_getBool(global_optionList, name.c_str());
237 }
238 
239 float* get_option_floats(const string& name, int *count) {
240  if(global_optionList == NULL) {
241  cerr << "get_option: optionList pointer needs to be set before accessing." << endl;
242  exit(EXIT_FAILURE);
243  }
244  clo_option_t* option = clo_findOption(global_optionList, name.c_str());
245  if(option == NULL || !clo_isOptionSet(option))
246  return nullptr;
247  float* result(clo_getOptionFloats(option, count));
248  return result;
249 }
250 
252  if(global_optionList == NULL)
253  global_optionList = list;
254 
255  const string INPUT_SPIX = "spixl";
256  const string INPUT_EPIX = "epixl";
257  const string INPUT_DPIX = "dpixl";
258  const string INPUT_SLINE = "sline";
259  const string INPUT_ELINE = "eline";
260  const string INPUT_DLINE = "dline";
261  const string INPUT_LT_NOISE_SCALE = "lt_noise_scale";
262 
263  clo_addOption(list, INPUT_SPIX.c_str(), CLO_TYPE_INT, "1", "start pixel number");
264  clo_addOption(list, INPUT_EPIX.c_str(), CLO_TYPE_INT, "-1", "end pixel number (-1=the last pixel)");
265  clo_addOption(list, INPUT_DPIX.c_str(), CLO_TYPE_INT, "1", "pixel sub-sampling interval");
266  clo_addOption(list, INPUT_SLINE.c_str(), CLO_TYPE_INT, "1", "start line number");
267  clo_addOption(list, INPUT_ELINE.c_str(), CLO_TYPE_INT, "-1", "end line number (-1=the last line)");
268  clo_addOption(list, INPUT_DLINE.c_str(), CLO_TYPE_INT, "1", "line sub-sampling interval");
269  clo_addOption(list, INPUT_LINES_PER_RW.c_str(), CLO_TYPE_INT, "1", "lines per read/process/write");
270  clo_addOption(list, INPUT_LT_NOISE_SCALE.c_str(), CLO_TYPE_FLOAT, NULL, "noise scaling factors");
271 
272  clo_addOption(list, PRODUCT_XML.c_str(), CLO_TYPE_IFILE, NULL, "product xml file name");
273  clo_addOption(list, INPUT_L1B.c_str(), CLO_TYPE_IFILE, NULL, "input L1B file name");
274  clo_addOption(list, INPUT_GEO.c_str(), CLO_TYPE_IFILE, NULL, "input geolocation file name");
275  clo_addOption(list, INPUT_GDAS1.c_str(), CLO_TYPE_IFILE, NULL, "input ancillary LUT file before");
276  clo_addOption(list, INPUT_GDAS2.c_str(), CLO_TYPE_IFILE, NULL, "input ancillary LUT file after");
277  clo_addOption(list, INPUT_GDAS.c_str(), CLO_TYPE_IFILE, NULL, "input ancillary LUT file");
278  clo_addOption(list, INPUT_GRIB.c_str(), CLO_TYPE_IFILE, NULL, "input meteorological LUT file");
279  clo_addOption(list, INPUT_OZONE.c_str(), CLO_TYPE_IFILE, NULL, "input ozone LUT file");
280  clo_addOption(list, INPUT_ATMOSPHERE.c_str(), CLO_TYPE_IFILE, NULL, "input atmosphere file name");
281  clo_addOption(list, INPUT_CLDMASK.c_str(), CLO_TYPE_IFILE, NULL, "input cloud mask file name");
282  clo_addOption(list, INPUT_LANDMASK.c_str(), CLO_TYPE_IFILE, NULL, "input land mask LUT file");
283 
284  clo_addOption(list, INPUT_GAS_CORRECTION.c_str(), CLO_TYPE_IFILE, NULL, "input gas correction LUT file");
285  clo_addOption(list, INPUT_OCEAN_BIG1.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
286  clo_addOption(list, INPUT_OCEAN_BIG2.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
287  clo_addOption(list, INPUT_OCEAN_BIG3.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
288  clo_addOption(list, INPUT_OCEAN_BIG4.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
289  clo_addOption(list, INPUT_OCEAN_SMALL1.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
290  clo_addOption(list, INPUT_OCEAN_SMALL2.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
291  clo_addOption(list, INPUT_OCEAN_SMALL3.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
292  clo_addOption(list, INPUT_OCEAN_SMALL4.c_str(), CLO_TYPE_IFILE, NULL, "input ocean aerosol LUT file");
293  clo_addOption(list, INPUT_LAND_W0466.c_str(), CLO_TYPE_IFILE, NULL, "input land aerosol LUT file");
294  clo_addOption(list, INPUT_LAND_W0554.c_str(), CLO_TYPE_IFILE, NULL, "input land aerosol LUT file");
295  clo_addOption(list, INPUT_LAND_W0645.c_str(), CLO_TYPE_IFILE, NULL, "input land aerosol LUT file");
296  clo_addOption(list, INPUT_LAND_W2113.c_str(), CLO_TYPE_IFILE, NULL, "input land aerosol LUT file");
297  clo_addOption(list, INPUT_LAND_MAP.c_str(), CLO_TYPE_IFILE, NULL, "input land aerosol LUT file");
298 
299  clo_addOption(list, INPUT_TRANSM_H2O_1.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
300  clo_addOption(list, INPUT_TRANSM_H2O_2.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
301  clo_addOption(list, INPUT_TRANSM_H2O_3.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
302  clo_addOption(list, INPUT_TRANSM_H2O_4.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
303  clo_addOption(list, INPUT_TRANSM_H2O_5.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
304  clo_addOption(list, INPUT_TRANSM_H2O_6.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
305  clo_addOption(list, INPUT_WEIGHT_TABLE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
306  clo_addOption(list, INPUT_REFL_CH2.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
307  clo_addOption(list, INPUT_RATIO_CH19_TO_CH2.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
308 
309  clo_addOption(list, INPUT_SURFACE_PRESSURE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
310  clo_addOption(list, INPUT_NVALX_412.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
311  clo_addOption(list, INPUT_NVALX_470.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
312  clo_addOption(list, INPUT_NVALX_650.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
313  clo_addOption(list, INPUT_SEASONAL_DESERTS.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
314  clo_addOption(list, INPUT_DBDT_REGIONS.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
315  clo_addOption(list, INPUT_MODIS_SURF_REFL.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
316  clo_addOption(list, INPUT_GLOBAL_IGBP.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
317  clo_addOption(list, INPUT_NVALX21.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
318  clo_addOption(list, INPUT_MODIS_SWIR.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
319  clo_addOption(list, INPUT_MODIS_XCAL_412.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
320  clo_addOption(list, INPUT_MODIS_XCAL_470.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
321  clo_addOption(list, INPUT_GAIN_412.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
322  clo_addOption(list, INPUT_GAIN_470.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
323  clo_addOption(list, INPUT_RAYL_412.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
324  clo_addOption(list, INPUT_RAYL_470.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
325  clo_addOption(list, INPUT_RAYL_650.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
326 
327  clo_addOption(list, INPUT_AERO_LAND_FINE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
328  clo_addOption(list, INPUT_AERO_LAND_DUST.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
329  clo_addOption(list, INPUT_AERO_OCEAN_DUST.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
330  clo_addOption(list, INPUT_AERO_OCEAN_FINE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
331  clo_addOption(list, INPUT_AERO_OCEAN_MARI.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
332  clo_addOption(list, INPUT_AERO_OCEAN_MIX.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
333  clo_addOption(list, INPUT_BATHYMETRY.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
334  clo_addOption(list, INPUT_CHL.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
335  clo_addOption(list, INPUT_LER_TABLE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
336  clo_addOption(list, INPUT_SWIR.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
337  clo_addOption(list, INPUT_LANDCOVER.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
338  clo_addOption(list, INPUT_GEOZONE.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
339  clo_addOption(list, INPUT_VIIRS_SURF_REFL.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
340  clo_addOption(list, INPUT_SURF_COEFF.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
341  clo_addOption(list, INPUT_BRDF.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
342  clo_addOption(list, INPUT_VEG_LANDCOVER.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
343  clo_addOption(list, INPUT_VEG_21SFC.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
344  clo_addOption(list, INPUT_VIIRS_XCAL_412.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
345  clo_addOption(list, INPUT_VIIRS_XCAL_488.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
346  clo_addOption(list, INPUT_VIIRS_XCAL_670.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue LUT file");
347 
348  clo_addOption(list, INPUT_NC4_LUT.c_str(), CLO_TYPE_IFILE, NULL, "input DTDB NetCDF4 LUT file");
349  clo_addOption(list, INPUT_DT_NC4_LUT.c_str(), CLO_TYPE_IFILE, NULL, "input Darktarget NetCDF4 LUT file");
350  clo_addOption(list, INPUT_DB_NC4_LUT.c_str(), CLO_TYPE_IFILE, NULL, "input DeepBlue NetCDF4 LUT file");
351  clo_addOption(list, INPUT_SENSOR_INFO.c_str(), CLO_TYPE_IFILE, NULL, "OCI sensor info, F0");
352 
353  clo_addOption(list, OUTPUT_NC4.c_str(), CLO_TYPE_OFILE, NULL, "output dark target filename");
354  clo_addOption(list, NETCDF_LUT_PATH.c_str(), CLO_TYPE_OFILE, NULL, "path to NetCDF4 LUT output directory");
355 
356  clo_addOption(list, "pversion", CLO_TYPE_STRING, "Unspecified", "processing version string");
357 
358  clo_addOption(list, "PGEVersion", CLO_TYPE_STRING, NULL, "PGE version");
359  clo_addOption(list, "PGE_Name", CLO_TYPE_STRING, NULL, "PGE name");
360  // next 2 added by LSIPS
361  clo_addOption(list, "VersionID", CLO_TYPE_STRING, NULL, "Version ID");
362 
363  clo_addOption(list, ALGORITHM.c_str(), CLO_TYPE_STRING, NULL, "Algorithm identifier");
364 
365  clo_addOption(list, BOOL_SENSOR.c_str(), CLO_TYPE_BOOL, "True",
366  "Report input sensor data");
367  clo_addOption(list, BOOL_SCANS.c_str(), CLO_TYPE_BOOL, "True",
368  "Report input scan line data");
370  "Report input navigation data");
371  clo_addOption(list, BOOL_PROCESS.c_str(), CLO_TYPE_BOOL, "True",
372  "Report process data");
374  "Report all wavelength sets");
375  clo_addOption(list, BOOL_DATA.c_str(), CLO_TYPE_BOOL, "True",
376  "Report all geophysical product data");
377  clo_addOption(list, BOOL_FLAGS.c_str(), CLO_TYPE_BOOL, "True",
378  "Report flag percentages");
379  clo_addOption(list, BOOL_ANCILLARY.c_str(), CLO_TYPE_BOOL, "False",
380  "Report input ancillary data");
382  "Report input geolocation data");
384  "Report input TOA and surface reflectance data");
385  clo_addOption(list, BOOL_STATISTICS.c_str(), CLO_TYPE_BOOL, "False",
386  "Report statistical representations");
388  "Add noise to observed inputs");
390  "Apply gas corrections");
392  "Apply glint mask");
394  "Apply cloud mask");
396  "Convert floats to 16 bit short integer");
397 
398 //output product options
399  clo_addOption(list, BOOL_CLOUD_MASK.c_str(), CLO_TYPE_BOOL, "False",
400  "Product selection option");
402  "Product selection option");
403  clo_addOption(list, BOOL_L2_FLAGS.c_str(), CLO_TYPE_BOOL, "False",
404  "Product selection option");
406  "Product selection option");
408  "Product selection option");
410  "Product selection option");
412  "Product selection option");
413  clo_addOption(list, BOOL_FMF_550.c_str(), CLO_TYPE_BOOL, "False",
414  "Product selection option");
415  clo_addOption(list, BOOL_NDVI.c_str(), CLO_TYPE_BOOL, "False",
416  "Product selection option");
417  clo_addOption(list, BOOL_ANGSTROM.c_str(), CLO_TYPE_BOOL, "False",
418  "Product selection option");
419  clo_addOption(list, BOOL_AOT_380.c_str(), CLO_TYPE_BOOL, "False",
420  "Product selection option");
421  clo_addOption(list, BOOL_AOT_410.c_str(), CLO_TYPE_BOOL, "False",
422  "Product selection option");
423  clo_addOption(list, BOOL_AOT_490.c_str(), CLO_TYPE_BOOL, "False",
424  "Product selection option");
425  clo_addOption(list, BOOL_AOT_550.c_str(), CLO_TYPE_BOOL, "False",
426  "Product selection option");
427  clo_addOption(list, BOOL_AOT_670.c_str(), CLO_TYPE_BOOL, "False",
428  "Product selection option");
429  clo_addOption(list, BOOL_AOT_865.c_str(), CLO_TYPE_BOOL, "False",
430  "Product selection option");
431  clo_addOption(list, BOOL_AOT_1240.c_str(), CLO_TYPE_BOOL, "False",
432  "Product selection option");
433  clo_addOption(list, BOOL_AOT_1610.c_str(), CLO_TYPE_BOOL, "False",
434  "Product selection option");
435  clo_addOption(list, BOOL_AOT_2250.c_str(), CLO_TYPE_BOOL, "False",
436  "Product selection option");
437  clo_addOption(list, BOOL_SURF_410.c_str(), CLO_TYPE_BOOL, "False",
438  "Product selection option");
439  clo_addOption(list, BOOL_SURF_490.c_str(), CLO_TYPE_BOOL, "False",
440  "Product selection option");
441  clo_addOption(list, BOOL_SURF_670.c_str(), CLO_TYPE_BOOL, "False",
442  "Product selection option");
443  clo_addOption(list, BOOL_SURF_2250.c_str(), CLO_TYPE_BOOL, "False",
444  "Product selection option");
445 
446  clo_addOption(list, "END", CLO_TYPE_BOOL, "False", "Parameter end flag");
447 
448  string desc = "\n";
449  desc += "This program can also accept a PCF file. The PCF file option names take\n";
450  desc += "precedence over the standard option parameters even if the standard option\n";
451  desc += "is on the command line. To over ride an option in a PCF file, use the PCF\n";
452  desc += "option name on the command line.\n\n";
453  desc += "use \"-dump_options\" on the command line to see a list of ALL option names.\n";
454  clo_addOption(list, "pcf_help", CLO_TYPE_HELP, NULL, desc.c_str());
455 }
456 
457 void copy_options() {
458 // clo_option_t* option;
459 // clo_optionList_t* list = get_optionList();
460 }
461 
462 string get_source() {
463  vector<string> sourcesList;
464 
465  sourcesList.push_back("gdas1");
466  sourcesList.push_back("gdas2");
467  sourcesList.push_back("lut_gascorr");
468  sourcesList.push_back("lut_satid");
469  sourcesList.push_back("lut_ocean_big1");
470  sourcesList.push_back("lut_ocean_big2");
471  sourcesList.push_back("lut_ocean_big3");
472  sourcesList.push_back("lut_ocean_big4");
473  sourcesList.push_back("lut_ocean_small1");
474  sourcesList.push_back("lut_ocean_small2");
475  sourcesList.push_back("lut_ocean_small3");
476  sourcesList.push_back("lut_ocean_small4");
477  sourcesList.push_back("lut_land_w0466");
478  sourcesList.push_back("lut_land_w0554");
479  sourcesList.push_back("lut_land_w0645");
480  sourcesList.push_back("lut_land_w2113");
481  sourcesList.push_back("lut_land_aerosol_map");
482  sourcesList.push_back("lut_nc4");
483 
484  string source = basename((char*)get_option(INPUT_IFFSVM).c_str());
485 
486  for(vector<string>::iterator it = sourcesList.begin(); it < sourcesList.end(); it++) {
487  string str = get_option(*it);
488  if(!str.empty()) {
489  source.append(",");
490  source.append(basename((char*)str.c_str()));
491  }
492  }
493  return source;
494 }
495 
496 string get_history(int argc, char* argv[]) {
497  string history = basename(argv[0]);
498  for (int i=1; i<argc; i++) {
499  history.append(" ");
500  history.append(basename(argv[i]));
501  }
502  return history;
503 }
504 
505 static const char *help_optionKeys[] = {
506  "-help",
507  "-version",
508  "-dump_options",
509  "-dump_options_paramfile",
510  "-dump_options_xmlfile",
511  "par",
512  "alg",
513  "ifile",
514  "geofile",
515  "gdas1",
516  "gdas2",
517  "ofile",
518  "verbose",
519  "pversion",
520  "pcf_help",
521  NULL
522 };
523 
524 // should the par file processing descend into other par files
525 static int enableFileDescending = 1;
526 
529 void par_option_cb(struct clo_option_t *option) {
530  if (enableFileDescending)
531  clo_readFile((clo_optionList_t*) option->cb_data, option->valStr);
532 }
533 
535 void init_options(clo_optionList_t* list, const char* softwareVersion) {
536  char tmpStr[2048];
537  clo_option_t* option;
538 
539  clo_setVersion2("dtdb", softwareVersion);
540 
541  sprintf(tmpStr, "Usage: dtdb argument-list\n\n");
542 
543  strcat(tmpStr, " This program generates a Deep Blue or Dark Target product.\n\n");
544 
545  strcat(tmpStr, " The argument-list is a set of keyword=value pairs. The arguments can\n");
546  strcat(tmpStr, " be specified on the command line, or put into a parameter file, or the\n");
547  strcat(tmpStr, " two methods can be used together, with command line over-riding.\n\n");
548  strcat(tmpStr, "The list of valid keywords follows:\n");
549  clo_setHelpStr(tmpStr);
550 
551  // add the par option and add the callback function
552 // option = clo_addOption(list, "par", CLO_TYPE_STRING, NULL, "input parameter file");
553 // option->cb_data = (void*) list;
554 // option->cb = par_option_cb;
555 
556  // add the parameters common to all VIIRS programs
557  add_options(list);
558 
559  option = clo_addOption(list, "verbose", CLO_TYPE_BOOL, "false", "turn on verbose output");
560  clo_addOptionAlias(option, "v");
561 
562  clo_setSelectOptionKeys((char**)help_optionKeys);
563 }
564 
565 
566 /*
567  Read the command line option and all of the default parameter files.
568 
569  This is the order for loading the options:
570  - load the main program defaults file
571  - load the command line (including specified par files)
572  - re-load the command line disabling file descending so command
573  line arguments will over ride
574 
575  */
576 void read_options(clo_optionList_t* list, int argc, char* argv[]) {
577  char *dataRoot;
578  char tmpStr[FILENAME_MAX];
579  assert(list);
580 
581  if ((dataRoot = getenv("OCDATAROOT")) == NULL) {
582  fprintf(stderr, "-E- OCDATAROOT environment variable is not defined.\n");
583  exit(EXIT_FAILURE);
584  }
585 
586  // disable the dump option until we have read all of the files
588 
589  enableFileDescending = 1;
590 
591  // load program defaults
592  sprintf(tmpStr, "%s/common/dtdb_defaults.par", dataRoot);
593  clo_readFile(list, tmpStr);
594  clo_setString(list, "par", tmpStr, "");
595 
596  // read all arguments including descending par files
597  clo_readArgs(list, argc, argv);
598 
599  // enable the dump option
601 
602  // if a file was descended, make sure the command args over-rides
603  enableFileDescending = 0;
604  clo_readArgs(list, argc, argv);
605  enableFileDescending = 1;
606 
607  copy_options();
608 }
const string BOOL_SENSOR
Definition: DDOptions.cpp:152
const string LUT_WATER_VAPOR
Definition: DDOptions.cpp:128
const string INPUT_SURFACE_PRESSURE
Definition: DDOptions.cpp:102
clo_option_t * clo_addOption(clo_optionList_t *list, const char *key, enum clo_dataType_t dataType, const char *defaultVal, const char *desc)
Definition: clo.c:684
void read_options(clo_optionList_t *list, int argc, char *argv[])
Definition: DDOptions.cpp:576
const string ALGORITHM
Definition: DDOptions.cpp:193
const string BOOL_AOT_550
Definition: DDOptions.cpp:182
const string LUT_NVALX21
Definition: DDOptions.cpp:136
const string LUT_GAS_CORRECTION
Definition: DDOptions.cpp:125
const string LUT_MODIS_CORRECTIONS
Definition: DDOptions.cpp:132
const string BOOL_AEROSOL_TYPE
Definition: DDOptions.cpp:172
const string INPUT_LAND_W0645
Definition: DDOptions.cpp:63
void clo_readArgs(clo_optionList_t *list, int argc, char *argv[])
Definition: clo.c:2103
const string LUT_VIIRS_SURFACE_REFL
Definition: DDOptions.cpp:139
list(APPEND LIBS ${PGSTK_LIBRARIES}) add_executable(atteph_info_modis atteph_info_modis.c) target_link_libraries(atteph_info_modis $
Definition: CMakeLists.txt:7
const string INPUT_GAIN_412
Definition: DDOptions.cpp:88
const string LUT_OCEAN_AEROSOL_DUST
Definition: DDOptions.cpp:144
const string INPUT_LT_NOISE_SCALE
Definition: DDOptions.cpp:34
const string INPUT_RAYL_470
Definition: DDOptions.cpp:112
const string INPUT_NC4_LUT
Definition: DDOptions.cpp:118
const string INPUT_NVALX21
Definition: DDOptions.cpp:82
const string INPUT_TRANSM_H2O_1
Definition: DDOptions.cpp:67
const string INPUT_MODIS_XCAL_412
Definition: DDOptions.cpp:86
const string BOOL_MASK_CLOUD
Definition: DDOptions.cpp:166
#define NULL
Definition: decode_rs.h:63
const string INPUT_IFFSVM
Definition: DDOptions.cpp:39
const string INPUT_RAYL_650
Definition: DDOptions.cpp:113
const string INPUT_GDAS1
Definition: DDOptions.cpp:42
const string INPUT_WEIGHT_TABLE
Definition: DDOptions.cpp:73
const string BOOL_FLAGS
Definition: DDOptions.cpp:158
const string BOOL_ANCILLARY
Definition: DDOptions.cpp:159
string get_option(const string &name)
Definition: DDOptions.cpp:211
const string BOOL_SCATTER_ANGLE
Definition: DDOptions.cpp:173
const string BOOL_AOT_490
Definition: DDOptions.cpp:181
const string INPUT_GAIN_470
Definition: DDOptions.cpp:89
const string BOOL_PROCESS
Definition: DDOptions.cpp:155
const string INPUT_LAND_W0554
Definition: DDOptions.cpp:62
const string LUT_LAND_AEROSOL
Definition: DDOptions.cpp:126
clo_option_t * clo_findOption(clo_optionList_t *list, const char *key)
Definition: clo.c:967
const string BOOL_AOT_1240
Definition: DDOptions.cpp:185
const string INPUT_MODIS_SWIR
Definition: DDOptions.cpp:84
const string BOOL_SURF_670
Definition: DDOptions.cpp:190
@ CLO_TYPE_FLOAT
Definition: clo.h:81
const string INPUT_LAND_W2113
Definition: DDOptions.cpp:64
const string INPUT_LAND_MAP
Definition: DDOptions.cpp:65
const string LUT_SURFACE_PRESSURE
Definition: DDOptions.cpp:129
const string INPUT_OCEAN_SMALL2
Definition: DDOptions.cpp:58
int clo_setString(clo_optionList_t *list, const char *key, const char *val, const char *source)
Definition: clo.c:1667
const string INPUT_SLINE
Definition: DDOptions.cpp:31
const string BOOL_SURF_2250
Definition: DDOptions.cpp:191
const string BOOL_RESIDUAL_ERROR
Definition: DDOptions.cpp:175
int clo_getInt(clo_optionList_t *list, const char *key)
Definition: clo.c:1393
const string NETCDF_LUT_PATH
Definition: DDOptions.cpp:194
const string INPUT_ELINE
Definition: DDOptions.cpp:32
const string INPUT_TRANSM_H2O_6
Definition: DDOptions.cpp:72
const string INPUT_REFL_CH2
Definition: DDOptions.cpp:74
const string LUT_BATHYMETRY
Definition: DDOptions.cpp:149
const string LUT_CHL
Definition: DDOptions.cpp:150
int clo_isOptionSet(clo_option_t *option)
Definition: clo.c:2257
const string INPUT_GLOBAL_IGBP
Definition: DDOptions.cpp:78
const string LUT_MODIS_SURFACE_REFL
Definition: DDOptions.cpp:131
const string LUT_MODIS_SWIR
Definition: DDOptions.cpp:130
@ CLO_TYPE_BOOL
Definition: clo.h:78
const string BOOL_AOT_865
Definition: DDOptions.cpp:184
const string BOOL_SURF_410
Definition: DDOptions.cpp:188
void clo_setVersion2(const char *programName, const char *versionStr)
Definition: clo.c:464
const string BOOL_STATISTICS
Definition: DDOptions.cpp:162
const string BOOL_AOT_670
Definition: DDOptions.cpp:183
const string INPUT_VEG_LANDCOVER
Definition: DDOptions.cpp:109
const string INPUT_SURF_COEFF
Definition: DDOptions.cpp:107
const string INPUT_L1B
Definition: DDOptions.cpp:40
void clo_setSelectOptionKeys(char **keys)
Definition: clo.c:514
const string INPUT_TRANSM_H2O_4
Definition: DDOptions.cpp:70
const string INPUT_DT_NC4_LUT
Definition: DDOptions.cpp:119
const string BOOL_SURF_490
Definition: DDOptions.cpp:189
const string BOOL_CHLOROPHYLL
Definition: DDOptions.cpp:174
const string INPUT_MODIS_XCAL_470
Definition: DDOptions.cpp:87
const string INPUT_GDAS2
Definition: DDOptions.cpp:43
void add_options(clo_optionList_t *list)
Definition: DDOptions.cpp:251
clo_optionList_t * get_optionList()
Definition: DDOptions.cpp:203
const string LUT_LANDCOVER
Definition: DDOptions.cpp:141
const string INPUT_PAR
Definition: DDOptions.cpp:37
const string INPUT_GRIB
Definition: DDOptions.cpp:50
void clo_setEnableDumpOptions(int val)
Definition: clo.c:410
const string LUT_OCEAN_AEROSOL_MIX
Definition: DDOptions.cpp:146
const string LUT_OCEAN_AEROSOL_MARI
Definition: DDOptions.cpp:145
const string INPUT_AERO_OCEAN_MARI
Definition: DDOptions.cpp:96
const string LUT_OCEAN_AEROSOL_FINE
Definition: DDOptions.cpp:143
void clo_setHelpStr(const char *str)
Definition: clo.c:487
char * valStr
Definition: clo.h:108
const string BOOL_OBSERVATIONS
Definition: DDOptions.cpp:161
@ CLO_TYPE_INT
Definition: clo.h:79
string get_history(int argc, char *argv[])
Definition: DDOptions.cpp:496
char * clo_getOptionString(clo_option_t *option)
Definition: clo.c:1050
int get_bool(const string &name)
Definition: DDOptions.cpp:231
const string BOOL_WAVELENGTHS
Definition: DDOptions.cpp:156
const string BOOL_ANGSTROM
Definition: DDOptions.cpp:178
int get_option_int(const string &name)
Definition: DDOptions.cpp:223
float * clo_getOptionFloats(clo_option_t *option, int *count)
Definition: clo.c:1295
const string INPUT_DB_NC4_LUT
Definition: DDOptions.cpp:120
const string INPUT_GEO
Definition: DDOptions.cpp:41
const string BOOL_AOT_380
Definition: DDOptions.cpp:179
float * get_option_floats(const string &name, int *count)
Definition: DDOptions.cpp:239
const string INPUT_SPIX
Definition: DDOptions.cpp:28
const string BOOL_FMF_550
Definition: DDOptions.cpp:176
const string INPUT_CHL
Definition: DDOptions.cpp:99
const string INPUT_NVALX_650
Definition: DDOptions.cpp:81
const string BOOL_GEOLOCATION
Definition: DDOptions.cpp:160
const string INPUT_RAYL_412
Definition: DDOptions.cpp:111
void init_options(clo_optionList_t *list, const char *softwareVersion)
Definition: DDOptions.cpp:535
@ CLO_TYPE_IFILE
Definition: clo.h:84
const string INPUT_TRANSM_H2O_3
Definition: DDOptions.cpp:69
const string INPUT_NVALX_412
Definition: DDOptions.cpp:79
@ CLO_TYPE_OFILE
Definition: clo.h:85
const string BOOL_AOT_410
Definition: DDOptions.cpp:180
const string INPUT_LINES_PER_RW
Definition: DDOptions.cpp:35
const string LUT_LER_TABLES
Definition: DDOptions.cpp:137
const string INPUT_OCEAN_BIG3
Definition: DDOptions.cpp:55
const string OUTPUT_NC4
Definition: DDOptions.cpp:49
const string LUT_GEOZONE
Definition: DDOptions.cpp:142
const string INPUT_TRANSM_H2O_2
Definition: DDOptions.cpp:68
void clo_addOptionAlias(clo_option_t *option, const char *alias)
Definition: clo.c:632
string history
Definition: ncattredit.py:30
void clo_readFile(clo_optionList_t *list, const char *fileName)
Definition: clo.c:2210
const string INPUT_OCEAN_SMALL1
Definition: DDOptions.cpp:57
const string LUT_GRIB
Definition: DDOptions.cpp:124
const string INPUT_VIIRS_XCAL_412
Definition: DDOptions.cpp:114
const string INPUT_DPIX
Definition: DDOptions.cpp:30
const string INPUT_VIIRS_XCAL_488
Definition: DDOptions.cpp:115
const string LUT_RAYLEIGH
Definition: DDOptions.cpp:134
const string LUT_SURFACE_COEFF
Definition: DDOptions.cpp:140
#define basename(s)
Definition: l0chunk_modis.c:29
const string INPUT_BRDF
Definition: DDOptions.cpp:105
const string INPUT_AERO_LAND_FINE
Definition: DDOptions.cpp:92
@ CLO_TYPE_HELP
Definition: clo.h:86
const char * str
Definition: l1c_msi.cpp:35
const string INPUT_SAT_ID
Definition: DDOptions.cpp:48
const string INPUT_LER_TABLE
Definition: DDOptions.cpp:100
const string INPUT_AERO_OCEAN_FINE
Definition: DDOptions.cpp:95
const string INPUT_CLDMASK
Definition: DDOptions.cpp:46
const string INPUT_MODIS_SURF_REFL
Definition: DDOptions.cpp:85
const string BOOL_L2_FLAGS
Definition: DDOptions.cpp:169
const string BOOL_SCANS
Definition: DDOptions.cpp:153
const string INPUT_DBDT_REGIONS
Definition: DDOptions.cpp:83
const string INPUT_GAS_CORRECTION
Definition: DDOptions.cpp:47
const string LUT_SWIR
Definition: DDOptions.cpp:138
const string BOOL_AOT_1610
Definition: DDOptions.cpp:186
const string INPUT_AERO_LAND_DUST
Definition: DDOptions.cpp:93
const string PRODUCT_XML
Definition: DDOptions.cpp:38
const string INPUT_RATIO_CH19_TO_CH2
Definition: DDOptions.cpp:75
const string BOOL_NAVIGATION
Definition: DDOptions.cpp:154
const string BOOL_CLOUD_MASK
Definition: DDOptions.cpp:170
const string BOOL_ADD_LT_NOISE
Definition: DDOptions.cpp:163
const string LEAP_SEC_PATH
Definition: DDOptions.cpp:122
const string INPUT_AERO_OCEAN_DUST
Definition: DDOptions.cpp:94
void copy_options()
Definition: DDOptions.cpp:457
void par_option_cb(struct clo_option_t *option)
Definition: DDOptions.cpp:529
const string INPUT_LAND_W0466
Definition: DDOptions.cpp:61
const string INPUT_EPIX
Definition: DDOptions.cpp:29
const string INPUT_DLINE
Definition: DDOptions.cpp:33
const string INPUT_OCEAN_BIG4
Definition: DDOptions.cpp:56
const string INPUT_OCEAN_BIG1
Definition: DDOptions.cpp:53
const string INPUT_LANDMASK
Definition: DDOptions.cpp:45
const string INPUT_VIIRS_XCAL_670
Definition: DDOptions.cpp:116
const string LUT_OCEAN_AEROSOL
Definition: DDOptions.cpp:127
void * cb_data
Definition: clo.h:111
const string INPUT_LANDCOVER
Definition: DDOptions.cpp:101
const string INPUT_SENSOR_INFO
Definition: DDOptions.cpp:121
const string BOOL_AOT_2250
Definition: DDOptions.cpp:187
const string INPUT_TRANSM_H2O_5
Definition: DDOptions.cpp:71
int clo_getBool(clo_optionList_t *list, const char *key)
Definition: clo.c:1375
const string BOOL_SHORT_FORMAT
Definition: DDOptions.cpp:167
const string INPUT_GEOZONE
Definition: DDOptions.cpp:103
const string INPUT_VIIRS_SURF_REFL
Definition: DDOptions.cpp:106
const string INPUT_BATHYMETRY
Definition: DDOptions.cpp:98
const string INPUT_ATMOSPHERE
Definition: DDOptions.cpp:90
const string BOOL_DATA
Definition: DDOptions.cpp:157
const string LUT_LAND_AEROSOL_FINE
Definition: DDOptions.cpp:147
const string INPUT_OZONE
Definition: DDOptions.cpp:51
const string BOOL_QUALITY_FLAG
Definition: DDOptions.cpp:171
int i
Definition: decode_rs.h:71
string get_source()
Definition: DDOptions.cpp:462
const string LUT_LAND_AEROSOL_DUST
Definition: DDOptions.cpp:148
@ CLO_TYPE_STRING
Definition: clo.h:83
const string INPUT_SWIR
Definition: DDOptions.cpp:108
const string INPUT_GDAS
Definition: DDOptions.cpp:44
const string INPUT_NVALX_470
Definition: DDOptions.cpp:80
const string INPUT_AERO_OCEAN_MIX
Definition: DDOptions.cpp:97
const string INPUT_OCEAN_SMALL4
Definition: DDOptions.cpp:60
const string BOOL_GAS_CORRECTION
Definition: DDOptions.cpp:164
const string INPUT_VEG_21SFC
Definition: DDOptions.cpp:110
const string BOOL_NDVI
Definition: DDOptions.cpp:177
const string BOOL_MASK_GLINT
Definition: DDOptions.cpp:165
const string INPUT_OCEAN_SMALL3
Definition: DDOptions.cpp:59
void set_optionList(clo_optionList_t *list)
Definition: DDOptions.cpp:199
const string LUT_NVALX
Definition: DDOptions.cpp:133
const string INPUT_SEASONAL_DESERTS
Definition: DDOptions.cpp:104
const string INPUT_OCEAN_BIG2
Definition: DDOptions.cpp:54
int count
Definition: decode_rs.h:79