32#include "config_hdf5.h"
37#include <libdap/InternalErr.h>
44BaseType *HDF5GMCFSpecialCVArray::ptr_duplicate()
49bool HDF5GMCFSpecialCVArray::read()
52 BESDEBUG(
"h5",
"Coming to HDF5GMCFSpecialCVArray read "<<endl);
54 read_data_NOT_from_mem_cache(
false,
nullptr);
61void HDF5GMCFSpecialCVArray::obtain_gpm_l3_layer(
int nelms, vector<int>&offset, vector<int>&step, vector<int>&)
64 vector<float> total_val;
65 total_val.resize(tnumelm);
66 for (
int i = 0; i < 20; i++)
67 total_val[i] = 0.5 * (i + 1);
69 for (
int i = 20; i < 28; i++)
70 total_val[i] = total_val[19] + (i - 19);
75 if (nelms == tnumelm) {
76 set_value((dods_float32 *) total_val.data(), nelms);
83 for (
int i = 0; i < nelms; i++)
84 val[i] = total_val[offset[0] + step[0] * i];
85 set_value((dods_float32 *) val.data(), nelms);
94void HDF5GMCFSpecialCVArray::obtain_gpm_l3_layer2(
int nelms, vector<int>&offset, vector<int>&step,
const vector<int>&)
97 vector<float> total_val;
98 total_val.resize(tnumelm);
99 for (
int i = 0; i < 2; i++)
100 total_val[i] = 0.5 * (i + 1);
102 for (
int i = 2; i < 19; i++)
103 total_val[i] = total_val[1] + (i - 1);
108 if (nelms == tnumelm) {
109 set_value((dods_float32 *) total_val.data(), nelms);
116 for (
int i = 0; i < nelms; i++)
117 val[i] = total_val[offset[0] + step[0] * i];
118 set_value((dods_float32 *) val.data(), nelms);
122void HDF5GMCFSpecialCVArray::obtain_gpm_l3_hgt(
int nelms, vector<int>&offset, vector<int>&step,
const vector<int>&)
125 vector<float> total_val;
136 if (nelms == tnumelm) {
137 set_value((dods_float32 *) total_val.data(), nelms);
144 for (
int i = 0; i < nelms; i++)
145 val[i] = total_val[offset[0] + step[0] * i];
146 set_value((dods_float32 *) val.data(), nelms);
150void HDF5GMCFSpecialCVArray::obtain_gpm_l3_nalt(
int nelms, vector<int>&offset, vector<int>&step,
const vector<int>&)
152 vector<float> total_val;
164 if (nelms == tnumelm) {
165 set_value((dods_float32 *) total_val.data(), nelms);
172 for (
int i = 0; i < nelms; i++)
173 val[i] = total_val[offset[0] + step[0] * i];
174 set_value((dods_float32 *) val.data(), nelms);
178void HDF5GMCFSpecialCVArray::read_data_NOT_from_mem_cache(
bool ,
void*)
181 BESDEBUG(
"h5",
"Coming to HDF5GMCFSpecialCVArray: read_data_NOT_from_mem_cache "<<endl);
194 int nelms = format_constraint(offset.data(), step.data(), count.data());
196 if (GPMS_L3 == product_type || GPMM_L3 == product_type || GPM_L3_New == product_type) {
197 if (varname ==
"nlayer" && 28 == tnumelm)
198 obtain_gpm_l3_layer(nelms, offset, step, count);
199 else if (varname ==
"nlayer" && 19 == tnumelm)
200 obtain_gpm_l3_layer2(nelms, offset, step, count);
201 else if (varname ==
"hgt" && 5 == tnumelm) {
202 obtain_gpm_l3_hgt(nelms, offset, step, count);
204 else if (varname ==
"nalt" && 5 == tnumelm) obtain_gpm_l3_nalt(nelms, offset, step, count);
This class specifies the retrieval of the missing lat/lon values for general HDF5 products.