#include <polderparasolfiledata.h>


Public Member Functions | |
| PolderParasolFileData (const string &name=string(""), const string &mode=string("r")) | |
| virtual void * | read_data (void *data, const char *sds_name, int *start=NULL, int *stride=NULL, int *edges=NULL, int rank=-1) |
| read the data and apply a scaling to them. This method implements the interface of filedata If the read data is a physical value, it will return it as double. If the variable is a bitfield, it will return it as count (unscaled). You can used unsigned char to decode it. | |
| virtual vector< int > | get_dataset_dimension (const string &sds_name) |
| return the given dataset size along each axis | |
| void | get_dataset_fill_value (const string &sds_name, void *fill_value) |
| read the given dataset's fill value TODO Same method with many names of this method transfered from filedatareader. Need to be reformatted after functionnal tests with Data2Grid/MapsOperator | |
| int | get_n_dataset () |
| string | get_dataset_name (int i) |
| int | get_dataset_data_type (string sds_name) |
| string | get_values_attr_dataset (string sds_name, string attr_name) |
| bool | has_attr_dataset (string sds_name, string attr_name) |
| void | close_data_file () |
| closes the file | |
| void | open_data_file () |
| open the file | |
| void | get_fillValue (const string &sds_name, void *fillValue) |
Protected Member Functions | |
| void | getLatLon (short line, short column, float32 *lat, float32 *lon) |
| void | getLatLon1 (short line, short column, float32 *lat, float32 *lon) |
| short | NINT (float32 x) |
| void | free_read_write_allocations (const bool *are_limits_initialized, int *start, int *stride, int *edges) |
| const bool | check_read_write_limits (const char *sds_name, int *start, int *stride, int *edges, const int rank) |
| void | init_read_write_null_input_param (const char *sds_name, int *&start, int *&stride, int *&edges, int &rank, bool *initialized_values) |
| float32 * | read_data_latlon (float32 *data, const char *sds_name, int *start, int *stride, int *edges, int rank) |
| template<class T > | |
| T * | read_data_T (T *data, const char *sds_name, int *start, int *stride, int *edges, int rank, int type) |
| int | get_dataset_idtype (string name) |
| template<class T > | |
| void | getFillValues (T &fillvalue) |
| virtual void | get_scaling (const string &sds_name, float64 &scale, float64 &offset) |
| virtual vector< int > | get_dataset_full_dimension (const string &sds_name) |
Protected Attributes | |
| short | colmin |
| short | linemin |
| short | colmax |
| short | linemax |
| string | cursds |
| int | fileid |
| string | filename |
| string * | var_list |
| list of all variables of the product | |
| int | nb_var_list |
| number of variables of the product | |
| int | size |
| int | maxLine |
| int | maxColumn |
| vector< int > PolderParasolFileData::get_dataset_dimension | ( | const string & | sds_name | ) | [virtual] |
return the given dataset size along each axis
| ds_name | [IN] dataset name |
Reimplemented from FileData.
| void PolderParasolFileData::get_dataset_fill_value | ( | const string & | ds_name, | |
| void * | fillvalue | |||
| ) | [virtual] |
read the given dataset's fill value TODO Same method with many names of this method transfered from filedatareader. Need to be reformatted after functionnal tests with Data2Grid/MapsOperator
| ds_name | [IN] dataset name | |
| fillvalue | [OUT] fill value. |
Reimplemented from FileData.
| void * PolderParasolFileData::read_data | ( | void * | data, | |
| const char * | var_name, | |||
| int * | start = NULL, |
|||
| int * | stride = NULL, |
|||
| int * | edges = NULL, |
|||
| int | rank = -1 | |||
| ) | [virtual] |
read the data and apply a scaling to them. This method implements the interface of filedata If the read data is a physical value, it will return it as double. If the variable is a bitfield, it will return it as count (unscaled). You can used unsigned char to decode it.
// Initialize the PARASOL file instance PARASOLFileData pfd(filename); string param="seq_nb"; cout<<"---------- Extract Parameter "<<param<<" ----------"<<endl; // read the dimensions of the variable data : for this parametre, has 2 ones [nb_data_record],NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; cout<<"Dimensions : ["<<dimensions[0]<<","<<dimensions[1]<<"]"<<endl; cout<<"---------------------------------------------------"<<endl; // read the data signed short* data=NULL; // Set the data buffer to NULL to delegate its allocation to the read_data method data=static_cast<signed short*>(pfd.read_data(data,param.c_str())); // print out the values if (data!=NULL) { if (show_val_display) { for (int j = 0 ; j<nb_data_record;++j) { cout<<"Record #"<<j<<endl; for (int i = 0 ; i<nb_viewing_directions;++i) { cout<<"\t"<<data[j*nb_viewing_directions+i]; } cout<<endl; } } } // free the buffer once used delete[] data; data=NULL;
Another example : reading the dqx of the first viewing direction of a L1_B file, and print them out
// Initialize the PARASOL file instance PARASOLFileData pfd(filename); string param="dqx"; cout<<"---------- Extract Parameter "<<param<<" ----------"<<endl; // read the dimensions of the variable data : for this parametre, has 2 ones [nb_data_record],NB_PARASOL_DIRECTIONS] vector<int> dimensions=pfd.get_data_dimension(param); int nb_data_record=dimensions[0]; int nb_viewing_directions=dimensions[1]; cout<<"Dimensions : ["<<dimensions[0]<<","<<dimensions[1]<<"]"<<endl; cout<<"---------------------------------------------------"<<endl; // read the data -> set the range of the data to read int start[]={0,4}; // means : start to read the data from the first record (0), and from the 5th viewing direction (4) int edges[]={-1,1}; // means : read all the records (-1 is a kind of metaselector), and read only one viewing direction value (1) signed short* data=NULL; // Set the data buffer to NULL to delegate its allocation to the read_data method data=static_cast<signed short*>(pfd.read_data(data,param.c_str())); // print out the values if (data!=NULL) { if (show_val_display) { cout<<"Record\tbits"<<endl; for (int i = 0 ; i<nb_data_record];++i) cout<<i<<"\t"<<MyTools::to_bit(&ushort_count_data[i],2)<<endl; } } // free the buffer once used delete[] data; data=NULL;
| data | a buffer that will contain the data. | |
| var_name | the variable name | |
| start | the start indexes of the data to read. Indexes of -1 are considered as metacharacters and will be replaced by 0. Actually, if you read a directionnal parametre, start is [start_record_index, start_direction] | |
| stride | step between 2 read values (ignored at this time : 1 used by default)0. | |
| edges | the number of data to read along each direction. Indexes of -1 are considered as metacharacters and will be replaced by the maximum number of values. Actually, if you read a directionnal parametre, edges is [nb_record_to_read, nb_direction_to_read] | |
| rank | the size of the start and edges arrays : 1 for undirectionnal parametres, and 2 for directionnal ones. This parametre is not mandatory : if not specified, the method computes it. |
Reimplemented from PARASOLFileData.
1.7.1