26 #ifndef _geo_constraint_h 27 #define _geo_constraint_h 1 120 int d_array_data_size;
128 int d_latitude_index_top;
129 int d_latitude_index_bottom;
130 int d_longitude_index_left;
131 int d_longitude_index_right;
133 bool d_bounding_box_set;
134 bool d_longitude_rightmost;
143 set<string> d_coards_lat_units;
144 set<string> d_coards_lon_units;
146 set<string> d_lat_names;
147 set<string> d_lon_names;
162 virtual bool build_lat_lon_maps() = 0;
174 virtual bool lat_lon_dimensions_ok() = 0;
176 Notation categorize_notation(
const double left,
const double right)
const;
177 void transform_constraint_to_pos_notation(
double &left,
double &right)
const;
178 virtual void transform_longitude_to_pos_notation();
179 virtual void transform_longitude_to_neg_pos_notation();
180 virtual bool is_bounding_box_valid(
const double left,
const double top,
181 const double right,
const double bottom)
const;
182 void find_longitude_indeces(
double left,
double right,
183 int &longitude_index_left,
184 int &longitude_index_right)
const;
186 virtual void transpose_vector(
double *src,
const int length);
187 virtual void reorder_longitude_map(
int longitude_index_left);
190 void find_latitude_indeces(
double top,
double bottom,
LatitudeSense sense,
191 int &latitude_index_top,
192 int &latitude_index_bottom)
const;
195 virtual void flip_latitude_within_array(
libdap::Array &a,
int lat_length,
int lon_length);
197 friend class GridGeoConstraintTest;
207 delete [] d_lat; d_lat = 0;
208 delete [] d_lon; d_lon = 0;
209 delete [] d_array_data; d_array_data = 0;
215 char *get_array_data()
const 219 int get_array_data_size()
const 221 return d_array_data_size;
224 double *get_lat()
const 228 double *get_lon()
const 232 void set_lat(
double *lat)
236 void set_lon(
double *lon)
241 int get_lat_length()
const 245 int get_lon_length()
const 249 void set_lat_length(
int len)
253 void set_lon_length(
int len)
276 int get_latitude_index_top()
const 278 return d_latitude_index_top;
280 int get_latitude_index_bottom()
const 282 return d_latitude_index_bottom;
284 void set_latitude_index_top(
int top)
286 d_latitude_index_top = top;
288 void set_latitude_index_bottom(
int bottom)
290 d_latitude_index_bottom = bottom;
293 int get_longitude_index_left()
const 295 return d_longitude_index_left;
297 int get_longitude_index_right()
const 299 return d_longitude_index_right;
301 void set_longitude_index_left(
int left)
303 d_longitude_index_left = left;
305 void set_longitude_index_right(
int right)
307 d_longitude_index_right = right;
310 bool is_bounding_box_set()
const 312 return d_bounding_box_set;
314 bool is_longitude_rightmost()
const 316 return d_longitude_rightmost;
318 void set_longitude_rightmost(
bool state)
320 d_longitude_rightmost = state;
323 Notation get_longitude_notation()
const 325 return d_longitude_notation;
329 return d_latitude_sense;
331 void set_longitude_notation(
Notation n)
333 d_longitude_notation = n;
337 d_latitude_sense = l;
340 set<string> get_coards_lat_units()
const 342 return d_coards_lat_units;
344 set<string> get_coards_lon_units()
const 346 return d_coards_lon_units;
349 set<string> get_lat_names()
const 353 set<string> get_lon_names()
const 359 void set_bounding_box(
double top,
double left,
double bottom,
double right);
363 virtual void apply_constraint_to_data() = 0;
368 #endif // _geo_constraint_h
top level DAP object to house generic methods
std::vector< dimension >::iterator Dim_iter
A multidimensional array of identical data types.