OB.DAAC Logo
NASA Logo
Ocean Color Science Software

ocssw V2022
VcstLutNetCDF4.h
Go to the documentation of this file.
1 /******************************************************************************
2  * NAME: VcstLutNetCDF4.h
3  *
4  * DESCRIPTION: Object class that generates a netCDF4 LUT.
5  *
6  * Created on: June 5, 2015
7  * Author: Sam Anderson, VCST
8  *
9  * Modified: October 15, 2015, for generation and processing of time-dependent
10  * netCDF4 LUTs
11  *
12  ******************************************************************************/
13 
14 #ifndef VcstLutNetCDF4_H_
15 #define VcstLutNetCDF4_H_
16 
17 #include <string>
18 #include <vector>
19 #include <map>
20 #include <sstream>
21 #include <iostream>
22 #include <netinet/in.h>
23 
24 #include <VcstViirsStructs.h>
25 #include <VcstCmnGeoStructs.h>
26 #include <VcstGeoParameters.h>
27 #include <VcstCalLutStructures.h>
28 #include <VcstCmnLutInputItem.h>
29 #include <VcstCalLutInputItem.h>
30 #include <VcstGeoLutInputItem.h>
31 
32 #include <netcdf>
33 
34 using namespace std;
35 using namespace netCDF;
36 using namespace netCDF::exceptions;
37 
39 public:
40 
41  // file attributes
42  string lut_title_;
44 
45  // global attributes:
46  string sensor_;
49  string Conventions_;
50  string institution_;
51  string license_;
53  string date_created_;
56  string creator_name_;
58  string creator_url_;
59  string project_;
66  string history_;
71 
77 
82  ~VcstLutNetCDF4();
83 
88  int initialize( string platform );
89 
94  int create_cmngeo_lut();
95 
100  int create_geo_lut();
101 
106  int create_cal_static_lut();
107 
112  int create_rsb_dynamic_lut();
113 
118  int create_dnb_dynamic_lut();
119 
124  int create_straylight_dynamic_lut();
125 
132 
142 
143  // Pointers to Calibration LUT data structures
144 
148 
154 
161 
168 
174 
178 
179  // Pointers to Geolocation LUT data structures
180 
184 
186  history_ = history;
187  }
188 
190  return history_;
191  }
192 
193 protected:
194 
201  VcstCmnLutInputItem* read_cmngeo_lut(std::string groupName, int size);
202 
209  VcstCalLutInputItem* read_cal_lut(std::string groupName, int size);
210 
217  VcstGeoLutInputItem* read_geo_lut(std::string groupName, int size);
218 
227  int write_global_attributes(NcFile* nc_output);
228 
237  bool isPlatformLittleEndian();
238 
249  int write_CMNGEO_PLATFORM_LUT(NcFile* nc_output);
250  int write_CMNGEO_JPL_EPHEM(NcFile* nc_output, JPLEphemLutType* lut,
251  std::string fileName);
252  int write_CMNGEO_SAA_COEFF(NcFile* nc_output, SAALutType* lut,
253  std::string fileName);
254  int write_CMNGEO_PARAM_LUT(NcFile* nc_output, CmnGeoParamLutType* lut,
255  std::string fileName);
256  int write_SOLAR_DIFF_VOLT_LUT(NcFile* nc_output, SolarDiffVoltLutType* lut,
257  std::string fileName);
258  int write_SOLAR_DIFF_ROT_MATRIX_LUT(NcFile* nc_output,
260 
261  int write_SDR_DG_ANOMALY_DN_LIMITS_LUT(NcFile* nc_output,
262  proSdrViirsCalDgAnDnLmtLUT* lut, std::string fileName);
263  int write_SDR_DNB_STRAY_LIGHT_CORRECTION_LUT(NcFile* nc_output,
265  int write_SDR_DNB_DN0_LUT(NcFile* nc_output, proSdrViirsDnbDn0Type* lut,
266  std::string fileName);
267  int write_SDR_DNB_RVS_LUT(NcFile* nc_output, proSdrViirsCaldnbRVSLUT* lut,
268  std::string fileName);
269  int write_SDR_DNB_FRAME_TO_ZONE_LUT(NcFile* nc_output,
271  int write_SDR_DNB_LGS_GAINS_LUT(NcFile* nc_output,
273  int write_SDR_DNB_GAIN_RATIOS_LUT(NcFile* nc_output,
275  int write_SDR_F_PREDICTED_LUT(NcFile* nc_output,
277  int write_SDR_GAIN_LUT(NcFile* nc_output, proSdrViirsCalGainTableLUT* lut,
278  std::string fileName);
279  int write_SDR_HAM_ER_TABLE_LUT(NcFile* nc_output,
280  proSdrViirsCalHAMERLUT* lut, std::string fileName);
281  int write_SDR_RTA_ER_TABLE_LUT(NcFile* nc_output,
282  proSdrViirsCalRTAERLUT* lut, std::string fileName);
283  int write_SDR_OBC_ER_TABLE_LUT(NcFile* nc_output,
284  proSdrViirsCalOBCERLUT* lut, std::string fileName);
285  int write_SDR_OBC_RR_TABLE_LUT(NcFile* nc_output,
286  proSdrViirsCalOBCRRLUT* lut, std::string fileName);
287  int write_SDR_EBBT_TABLE_LUT(NcFile* nc_output,
288  proSdrViirsCalLtoEBBTLUT* lut, std::string fileName);
289  int write_SDR_TELE_COEFFS_LUT(NcFile* nc_output,
290  proSdrViirsCalTeleCoeffLUT* lut, std::string fileName);
291  int write_SDR_SOLAR_IRAD_LUT(NcFile* nc_output,
292  proSdrViirsCalSolarIradLUT* lut, std::string fileName);
293  int write_SDR_OBS_TO_PIXELS_LUT(NcFile* nc_output,
295  int write_SDR_RADIOMETRIC_PARAMETERS_LUT(NcFile* nc_output,
297  int write_SDR_QA_LUT(NcFile* nc_output, proSdrViirsCalQALUT* lut,
298  std::string fileName);
299  int write_SDR_EMISSIVE_LUT(NcFile* nc_output,
300  proSdrViirsCalEmissiveLUT* lut, std::string fileName);
301  int write_SDR_REFLECTIVE_LUT(NcFile* nc_output,
303  int write_SDR_RVS_LUT(NcFile* nc_output, proSdrViirsCalRVSLUT* lut,
304  std::string fileName);
305  int write_SDR_BB_TEMP_COEFFS_LUT(NcFile* nc_output,
306  proSdrViirsCalBBTempCoeffs* lut, std::string fileName);
307  int write_SDR_DELTA_C_LUT(NcFile* nc_output,
309  int write_SDR_COEFF_A_LUT(NcFile* nc_output,
311  int write_SDR_COEFF_B_LUT(NcFile* nc_output,
313  int write_SDR_RELATIVE_SPECTRAL_RESPONSE_LUT(NcFile* nc_output,
315  std::string fileName);
316  int write_SDR_SOLAR_SPECTRAL_IRAD_LUT(NcFile* nc_output,
318  std::string fileName);
319 
320  int write_GEO_PARAM_LUT(NcFile* nc_output, GEO_param_struct* lut,
321  std::string str_geo_params_name, std::string fileName);
322 
331  int compress_StrayLight_LUT(proSdrViirsCalDnbStrayLightLUT* long_lut,
332  shortViirsCalDnbStrayLightLUT* short_lut);
333 
341  int write_all_SDR_DNB_STRAY_LIGHT_CORRECTION_LUT(NcFile* nc_output);
342  int write_all_SDR_F_PREDICTED_LUT(NcFile* nc_output);
343  int write_all_SDR_RELATIVE_SPECTRAL_RESPONSE_LUT(NcFile* nc_output);
344  int write_all_SDR_SOLAR_SPECTRAL_IRAD_LUT(NcFile* nc_output);
345  int write_all_SDR_DNB_LGS_GAINS_LUT(NcFile* nc_output);
346  int write_all_SDR_DNB_GAIN_RATIOS_LUT(NcFile* nc_output);
347  int write_all_SDR_DNB_DN0_LUT(NcFile* nc_output);
348 
355  int collect_lut_files(std::string lutName, std::string path);
356 
363  long long compute_iet_from_filename(std::string fileName);
364 
371  int compute_solar_irradiance(
373 
374  // Dimensions -- time
375 
382 
387  std::map<std::string, std::string> lut_files_;
388 
393  double solar_irad_[14];
394 
395  // Dimensions
396 
397  NcDim scalar_dim_;
409 
466 
477 
478 };
479 
480 #endif /* VcstLutNetCDF4_H_ */
NcDim num_obcer_files_dim_
proSdrViirsCalDeltaCTempLUT * DeltaCTable_
proSdrViirsCalFPredictedTableLUT * TableFPredicted_
NcDim num_electronics_sides_dim_
NcDim num_viirs_detectors_dim_
std::map< std::string, std::string > lut_files_
string date_created_
NcDim num_sdsm_samples_dim_
NcDim num_obcer_values_dim_
NcDim num_dg_gain_states_dim_
NcDim td_luts_dim_dnblgs_
string creator_name_
NcDim num_scan_start_dim_
proSdrViirsCalBBTempCoeffs * bBTempCoeffs_
string naming_authority_
NcDim num_dnb_gains_dim_
NcDim max_poly_degree_plus_one_dim_
NcDim num_mirror_sides_dim_
NcDim num_dnb_detectors_dim_
proSdrViirsCalInstrumentResponseLUT * TableB_
GEO_param_struct * geoDnbParams_
NcDim num_hamer_files_dim_
ProSdrViirsCalSolarSpectralIradLUT * solarSpectralIradLUT_
NcDim num_375m_bands_dim_
SolarDiffRotationMatrixLutType * SdRotMatPtr_
NcDim dnb_aggzone_bound_cols_dim_
proSdrViirsCaldnbRVSLUT * RVS_DNB_
proSdrViirsCalRMParametersLUT * rmParameters_
NcDim max_limit_check_dim_
NcDim num_sdsm_coef_dim_
proSdrViirsCalLtoEBBTLUT * EBBTLUT_
NcDim td_luts_dim_dnbdn0_
void initialize(int pixref_flag, int blkref_flag)
Definition: Usds.c:1371
proSdrViirsCalDnbFrameToZoneLUT * ftz_
proSdrViirsCalObsToPixelsLUT * obs_to_pixels_
proSdrViirsCalDnbStrayLightLUT * strayLight_
NcDim num_qual_flag_values_dim_
NcDim max_num_gains_dim_
SAALutType * saaCoeff_
proSdrViirsCalDgAnDnLmtLUT * dgAnDnLimits_
NcDim num_jpl_ephem_cols_dim_
NcDim num_dnb_gain_ratio_coeff_dim_
@ string
std::string getHistory()
NcDim num_obcrr_files_dim_
NcDim num_ebbt_values_dim_
proSdrViirsCalReflectiveLUT * refLUT_
proSdrViirsCalSolarIradLUT * solarIradLUT_
NcDim num_focal_planes_dim_
string platform_name_
NcDim num_refl_750m_dg_bands_dim_
NcDim num_moon_offset_dim_
string publisher_url_
string creator_email_
NcDim max_num_detectors_dim_
proSdrViirsCalRVSLUT * rvsLUT_
NcDim num_hemispheres_dim_
NcDim num_rtaer_files_dim_
NcDim num_refl_dnb_bands_dim_
string lut_prod_name_
NcDim max_thermistor_id_dim_
ProSdrViirsCalRelativeSpectralResponseLUT * rsrLUT_
NcDim num_tomm_therm_dim_
NcDim td_luts_dim_dnbgr_
string path
Definition: color_dtdb.py:221
NcDim num_dnb_ev_frames_dim_
string keywords_vocabulary_
NcDim num_jpl_ipt_cols_dim_
NcDim num_ebbt_files_dim_
ProSdrViirsCalDnbGainRatiosLUT * TableDnbGainRatios_
GEO_param_struct * geoImgParams_
JPLEphemLutType * jplEphemPtr_
NcDim num_hamer_values_dim_
NcDim num_telec_therm_dim_
NcDim max_band_num_plus_one_dim_
NcDim num_temp_coeffs_dim_
NcDim num_dnb_agg_seq_dim_
NcDim num_jpl_ephem_rows_dim_
NcDim td_luts_dim_rsbrsr_
GEO_param_struct * geoModParams_
NcDim num_solar_irad_values_dim_
ProSdrViirsCalDnbLgsGainsLUT * TableDnbLgsGains_
proSdrViirsCalOBCERLUT * OBCERLUT_
proSdrViirsCalRTAERLUT * RTAERLUT_
void setHistory(std::string history)
NcDim num_tdet_levels_dim_
NcDim num_750m_dg_bands_dim_
string publisher_name_
NcDim num_obcrr_values_dim_
string time_coverage_end_
string history
Definition: ncattredit.py:30
NcDim num_dnb_aggzone_dim_
proSdrViirsCalQALUT * QALUT_
NcDim num_viirs_bands_dim_
NcDim num_750m_sg_bands_dim_
proSdrViirsCalHAMERLUT * HAMERLUT_
NcDim num_dg_ev_frames_dim_
NcDim num_thermistor_dim_
NcDim num_thermistors_dim_
NcDim num_rtaer_values_dim_
string processing_level_
proSdrViirsCalGainTableLUT * GainTable_
string publisher_email_
NcDim num_ttel_therm_dim_
string time_coverage_start_
NcDim num_therm_weights_dim_
proSdrViirsCalEmissiveLUT * EmissiveLUT_
proSdrViirsCalDetectorResponseLUT * TableA_
NcDim num_375m_frms_dim_
CmnGeoParamLutType * paramLut_
VIIRS_PLATFORM_ENUM
proSdrViirsCalTeleCoeffLUT * tCoeffs_
VIIRS_PLATFORM_ENUM platform_
SolarDiffVoltLutType * SdsmVoltPtr_
proSdrViirsCalOBCRRLUT * OBCRRLUT_
proSdrViirsDnbDn0Type * dnbDn0_
NcDim num_jpl_ipt_rows_dim_
NcDim num_tele_levels_dim_
string processing_version_
NcDim num_dnb_gain_ratios_dim_
string cdm_data_type_
NcDim revision_char_dim_
NcDim num_sg_ev_frames_dim_
NcDim dnb_aggzone_bounds_dim_
string stdname_vocabulary_
NcDim num_thermistor_coeffs_dim_