57 BESDEBUG(MODULE,
"Reading sidecar file " << fileName << endl);
61 if ((ret = nc_open(fileName.c_str(), NC_NOWRITE, &d_ncid)))
65 char title_in[NC_MAX_NAME + 1];
66 if ((ret = nc_get_att_text(d_ncid, NC_GLOBAL, SSC_TITLE_NAME, title_in)))
68 if (strncmp(title_in, SSC_TITLE, NC_MAX_NAME))
69 return SSC_NOT_SIDECAR;
73 if ((ret = nc_inq(d_ncid, &ndims, &nvars, NULL, NULL)))
78 for (
int v = 0; v < nvars; v++) {
80 char var_name[NC_MAX_NAME + 1];
82 int ndims, dimids[NDIM2], natts;
83 if ((ret = nc_inq_var(d_ncid, v, var_name, &xtype, &ndims, dimids, &natts)))
86 BESDEBUG(MODULE,
"var " << var_name <<
" type " << xtype <<
" ndims " << ndims << endl);
89 char long_name_in[NC_MAX_NAME + 1];
90 if ((ret = nc_get_att_text(d_ncid, v, SSC_LONG_NAME, long_name_in)))
94 if (!strncmp(long_name_in, SSC_INDEX_LONG_NAME, NC_MAX_NAME)) {
96 d_stare_varid.push_back(v);
100 if ((ret = nc_inq_dimlen(d_ncid, dimids[0], &dimlen[0])))
102 if ((ret = nc_inq_dimlen(d_ncid, dimids[1], &dimlen[1])))
106 char variables_in[NC_MAX_NAME + 1];
107 if ((ret = nc_get_att_text(d_ncid, v, SSC_INDEX_VAR_ATT_NAME, variables_in)))
110 d_variables.emplace_back(
string(variables_in));
113 d_stare_index_name.emplace_back(var_name);
116 d_size_i.push_back(dimlen[0]);
117 d_size_j.push_back(dimlen[1]);
121 BESDEBUG(MODULE,
"variable_in " << variables_in << endl);
139 BESDEBUG(MODULE,
"get_stare_indices called for '" << variable_name <<
"'" << endl);
143 for (
unsigned long v = 0; v < d_variables.size(); ++v) {
144 BESDEBUG(MODULE,
"Looking st: '" << d_variables[v] <<
"'" << endl);
147 if (d_variables[v].find(variable_name) != string::npos) {
148 BESDEBUG(MODULE,
"found" << endl);
150 values.resize(d_size_i[v] * d_size_j[v]);
151 int status = nc_get_var(d_ncid, d_stare_varid[v], values.data());
152 if (status != NC_NOERR)
155 +
" for " + variable_name +
" - " + nc_strerror(status), __FILE__, __LINE__);