60 std::string _returnAs;
61 std::string _indent_increment =
" ";
62 std::string atomicVals;
63 std::string currDataType;
64 std::string domainType =
"Unknown";
65 std::string coordRefType =
"GeographicCRS";
72 bool canConvertToCovJson =
false;
86 std::string standardName;
91 unsigned int axisCount = 0;
92 std::vector<Axis *> axes;
93 std::string axis_t_units;
94 std::string axis_z_units;
95 std::string axis_z_direction;
96 std::string axis_z_standardName;
98 unsigned int parameterCount = 0;
99 std::vector<Parameter *> parameters;
100 std::vector<int> shapeVals;
103 std::string axis_x_varname;
104 std::string axis_y_varname;
105 std::string axis_z_varname;
106 std::string axis_t_varname;
112 std::string dim_name;
113 std::string bound_name;
120 std::vector<float> axisVar_x_bnd_val;
121 std::vector<float> axisVar_y_bnd_val;
122 std::vector<float> axisVar_z_bnd_val;
123 std::vector<double> axisVar_t_bnd_val;
125 std::vector<std::string>bnd_dim_names;
126 std::vector<std::string>par_vars;
128 bool is_simple_cf_geographic =
false;
129 bool is_dap2_grid =
false;
130 bool is_geo_dap2_grid =
false;
133 DSGType dsg_type = UNSUPPORTED_DSG;
138 bool err_msg_set =
false;
141 bool is_cf_grid_mapping_var(libdap::BaseType *v)
const;
143 bool is_supported_vars_by_type(libdap::BaseType*v)
const;
144 void handle_axisVars_array(libdap::BaseType*v,axisVar & this_axisVar) ;
145 void set_axisVar(libdap::BaseType*v,
const string &val);
146 bool is_simple_dsg(DSGType dsg);
147 bool is_simple_dsg_common()
const;
148 DSGType is_single_point ()
const;
149 DSGType is_point_series ()
const;
150 DSGType is_single_profile ()
const;
151 bool is_valid_single_point_par_var(libdap::BaseType*)
const;
152 bool is_fake_coor_vars(libdap::Array*)
const;
153 bool is_valid_array_dsg_par_var(libdap::Array*)
const;
154 bool is_valid_dsg_par_var(libdap::BaseType *);
155 bool obtain_valid_dsg_par_vars(libdap::DDS *);
156 bool check_update_simple_dsg(libdap::DDS *);
158 void check_update_simple_geo(libdap::DDS *dds,
bool sendData);
159 void check_update_simple_geo_dap4(libdap::D4Group *d4g);
160 bool check_add_axis(libdap::Array *d_a,
const std::string &,
const std::vector<std::string> &, axisVar &,
bool is_t_axis);
161 void check_bounds(libdap::DDS *dds, std::map<std::string,std::string>& vname_b_name);
162 void obtain_bound_values(libdap::DDS *dds,
const axisVar& av, std::vector<float>& av_bnd_val,std::string &bnd_dim_name,
bool);
163 void obtain_bound_values(libdap::DDS *dds,
const axisVar& av, std::vector<double>& av_bnd_val,std::string &bnd_dim_name,
bool);
164 libdap::Array * obtain_bound_values_worker(libdap::DDS *dds,
const std::string & bound_name, std::string &bound_dim_name);
167 bool obtain_valid_vars(libdap::DDS *dds,
short axis_var_z_count,
short axis_var_t_count);
168 bool obtain_valid_vars_dap4(libdap::D4Group *d4g,
short axis_var_z_count,
short axis_var_t_count);
171 std::string cf_time_to_greg(
long long time);
172 void print_bound(std::ostream *strm,
const std::vector<std::string> & t_bnd_val,
const std::string & indent,
bool is_t_axis)
const;
175 bool check_geo_dap2_grid(libdap::DDS *dds,
const vector<string> & dap2_grid_map_names)
const;
176 short check_cf_unit_attr(libdap::Array *d_a)
const;
213 void getAttributes(std::ostream *strm, libdap::AttrTable &attr_table, std::string name,
214 bool *axisRetrieved,
bool *parameterRetrieved);
218 void getAttributes_simple_cf_geographic_dsg(std::ostream *strm, libdap::AttrTable &attr_table,
const std::string& name,
219 bool *axisRetrieved,
bool *parameterRetrieved);
232 string sanitizeTimeOriginString(std::string timeOrigin);
249 void transform(std::ostream *strm, libdap::DDS *dds, std::string indent,
bool sendData,
bool testOverride);
251 void transform(std::ostream *strm, libdap::DMR *dmr,
const std::string& indent,
bool sendData,
bool testOverride);
265 void transform(std::ostream *strm, libdap::BaseType *bt, std::string indent,
bool sendData);
284 void transform(std::ostream *strm, libdap::Constructor *cnstrctr, std::string indent,
bool sendData);
296 void transform(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
309 void transformAtomic(
ostream *strm, libdap::BaseType *bt,
const std::string& indent,
bool sendData);
325 string indent,
bool sendData);
334 void printCoverage(std::ostream *strm, std::string indent);
369 void printDomain(std::ostream *strm, std::string indent);
385 void printAxes(std::ostream *strm, std::string indent);
408 void printReference(std::ostream *strm, std::string indent);
441 void printParameters(std::ostream *strm, std::string indent);
465 void printRanges(std::ostream *strm, std::string indent);
477 void printCoverageJSON(std::ostream *strm,
string indent,
bool testOverride);
497 void covjsonSimpleTypeArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
519 void covjsonStringArray(std::ostream *strm, libdap::Array *a, std::string indent,
bool sendData);
534 unsigned int covjsonSimpleTypeArrayWorker(std::ostream *strm, T *values,
unsigned int indx,
535 std::vector<unsigned int> *shape,
unsigned int currentDim,
bool is_axis_t_sgeo,libdap::Type a_type);
545 void addAxis(std::string name, std::string values);
562 void addParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
563 std::string longName, std::string standardName, std::string shape, std::string values);
566 void setAxesExistence(
bool x,
bool y,
bool z,
bool t) {
573 void setDomainType(
int domainType) {
574 this->domainType = domainType;
592 virtual void transform(std::ostream &ostrm,
bool sendData,
bool testOverride);
593 virtual void transform_dap4(std::ostream &ostrm,
bool sendData,
bool testOverride);
620 for (std::vector<Axis *>::const_iterator i = axes.begin(); i != axes.end(); ++i)
623 for (std::vector<Parameter *>::const_iterator i = parameters.begin(); i != parameters.end(); ++i)
637 virtual void dump(std::ostream &strm)
const;
640 virtual void addTestAxis(std::string name, std::string values) {
641 addAxis(name, values);
644 virtual void addTestParameter(std::string
id, std::string name, std::string type, std::string dataType, std::string unit,
645 std::string longName, std::string standardName, std::string shape, std::string values) {
646 addParameter(
id, name, type, dataType, unit, longName, standardName, shape, values);
649 virtual void setTestAxesExistence(
bool x,
bool y,
bool z,
bool t) {
650 setAxesExistence(x, y, z, t);
653 virtual void setTestDomainType(
int domainType) {
654 setDomainType(domainType);
657 virtual void printCoverage(std::ostream &ostrm, std::string indent) {
658 printCoverage(&ostrm, indent);
661 virtual void printDomain(std::ostream &ostrm, std::string indent) {
662 printDomain(&ostrm, indent);
665 virtual void printAxes(std::ostream &ostrm, std::string indent) {
666 printAxes(&ostrm, indent);
669 virtual void printReference(std::ostream &ostrm, std::string indent) {
670 printReference(&ostrm, indent);
673 virtual void printParameters(std::ostream &ostrm, std::string indent) {
674 printParameters(&ostrm, indent);
677 virtual void printRanges(std::ostream &ostrm, std::string indent) {
678 printRanges(&ostrm, indent);