/* Basic general module for reading and verifying RSS gridded binary data files All instrument-specific readers contain classes extending Dataset and Verify with entered instrument details Refer to 'dataset.cpp' for base implementation of methods To contact RSS support: http://www.remss.com/support 8/2014 n.picard */ #ifndef DATASET_H #define DATASET_H #include #include #include #include using namespace std; /* Defines datamap type*/ /* Datamap holds gridded binary data in a four-dimensional vector The size of data (the datamap with file data in Dataset) will be specified in get_dimensions() Access goes as follows: data .at((no asc/dec pattern)/ascending = 0, descending = 1) .at(variable index) .at(latitude) .at(longitude) */ typedef vector > > > datamap; class Dataset { /* Base class for dataset reading and information*/ /* Public: filename = name of data file Classes extending Dataset implement the following: get_attributes() = returns list of attributes for each variable (vector) get_dimensions() = returns list of dimensions (vector of size 4) get_coordinates() = returns coordinates (vector) get_variables() = returns list of all variables (vector) get_index(string var) = returns variable index of var (int) get_scale(string var) = returns scaling value for var (float) get_offset(string var) = returns offset value for var (float) get_long_name(string var) = returns full name of var (string) get_units(string var) = returns measurement units of var (string) get_valid_min(string var) = returns min value for var (float) get_valid_max(string var) = returns max value for var (float) */ public: vector dimensions; datamap data; Dataset(); datamap get(char * filename); datamap get_data(char * filename); unsigned short * readgz(char * filename); datamap unpack(unsigned short * stream); void show_somedata(int iasc, vector var_names, int ilat1, int ilat2, int ilon1, int ilon2); void show_somedata_scat(int iasc, vector var_names, int ilat1, int ilat2, int ilon1, int ilon2); void show_dimensions(); void show_variables(); void show_validrange(); virtual vector get_attributes(); virtual vector get_dimensions(); virtual vector get_coordinates(); virtual vector get_variables(); virtual int get_index(string var); virtual float get_scale(string var); virtual float get_offset(string var); virtual string get_long_name(string var); virtual string get_units(string var); virtual float get_valid_min(string var); virtual float get_valid_max(string var); }; class Verify { /* Base class for Dataset read verification. */ /* Public (to be initialized in Verify(), 0-based): ilon1 = longitude index ilon2 = longitude index ilat1 = latitude index ilat2 = latitude index iasc = asc/dsc index (daily only) variables = list of variable sets to be displayed (vector) Classes extending Verify implement the following: Verify() = constructor for class, initializes variables */ public: int ilon1, ilon2, ilat1, ilat2, iasc; vector variables; Verify(); void checkVerify(Dataset &dataset); }; #endif