00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _grid_geo_constraint_h
00027 #define _grid_geo_constraint_h 1
00028
00029 #include <string>
00030 #include <sstream>
00031 #include <set>
00032
00033 #ifndef _geo_constraint_h
00034 #include "GeoConstraint.h"
00035 #endif
00036
00037 namespace libdap
00038 {
00039
00040
00041 extern bool unit_or_name_match(set < string > units, set < string > names,
00042 const string & var_units,
00043 const string & var_name);
00044
00048 class GridGeoConstraint : public GeoConstraint
00049 {
00050
00051 private:
00052
00053 Grid *d_grid;
00054
00055 Array *d_latitude;
00056 Array *d_longitude;
00057
00058 bool build_lat_lon_maps();
00059 bool build_lat_lon_maps(Array *lat, Array *lon);
00060
00061 bool lat_lon_dimensions_ok();
00062
00063 friend class GridGeoConstraintTest;
00064
00065 public:
00068 GridGeoConstraint(Grid *grid);
00069 GridGeoConstraint(Grid *grid, Array *lat, Array *lon);
00071
00072 virtual ~GridGeoConstraint()
00073 {}
00074
00075 virtual void apply_constraint_to_data() ;
00076
00077 virtual Grid *get_constrained_grid() const
00078 {
00079 return d_grid;
00080 }
00081 };
00082
00083 }
00084
00085 #endif // _grid_geo_constraint_h
00086