32 {
"$Id: ArrayGeoConstraint.cc 21922 2010-01-07 18:23:57Z jimg $" 55 void ArrayGeoConstraint::m_init()
57 if (d_array->dimensions() < 2 || d_array->dimensions() > 3)
58 throw Error(
"The geoarray() function works only with Arrays of two or three dimensions.");
65 ArrayGeoConstraint::ArrayGeoConstraint(
Array *
array,
double top,
double left,
66 double bottom,
double right)
68 d_extent(top, left, bottom, right), d_projection(
"plat-carre",
"wgs84")
75 double top,
double left,
double bottom,
double right,
76 const string &projection,
const string &datum)
78 d_extent(top, left, bottom, right), d_projection(projection, datum)
95 bool ArrayGeoConstraint::build_lat_lon_maps()
102 double *lon_map =
new double[number_elements_longitude];
103 for (
int i = 0; i < number_elements_longitude; ++i) {
104 lon_map[i] = ((d_extent.d_right - d_extent.d_left) / (number_elements_longitude - 1)) * i + d_extent.d_left;
113 double *lat_map =
new double[number_elements_latitude];
114 for (
int i = 0; i < number_elements_latitude; ++i) {
115 lat_map[i] = ((d_extent.d_bottom - d_extent.d_top) / (number_elements_latitude - 1)) * i + d_extent.d_top;
131 ArrayGeoConstraint::lat_lon_dimensions_ok()
154 "The Latitude and Longitude constraints must be set before calling\n\ 155 apply_constraint_to_data().");
166 throw Error(
"The upper and lower latitude indexes appear to be reversed. Please provide\nthe latitude bounding box numbers giving the northern-most latitude first.");
203 (
"Expected data size not copied to the Grid's buffer.");
void set_lat_dim(Array::Dim_iter lat)
virtual bool read()
Read data into a local buffer.
virtual void add_constraint(Dim_iter i, int start, int stride, int stop)
Adds a constraint to an Array dimension.
void set_latitude_index_bottom(int bottom)
virtual unsigned int dimensions(bool constrained=false)
Return the total number of dimensions in the array.
void set_lon(double *lon)
Array::Dim_iter get_lat_dim() const
bool is_bounding_box_set() const
virtual void reorder_data_longitude_axis(Array &a, Array::Dim_iter lon_dim)
int get_lon_length() const
void set_latitude_index_top(int top)
virtual void set_read_p(bool state)
Indicates that the data is ready to send.
void set_longitude_rightmost(bool state)
int get_array_data_size() const
void set_lat(double *lat)
ArrayGeoConstraint(Array *)
void set_lat_length(int len)
int get_latitude_index_bottom() const
int get_longitude_index_left() const
A class for software fault reporting.
virtual int dimension_size(Dim_iter i, bool constrained=false)
Returns the size of the dimension.
virtual void apply_constraint_to_data()
virtual unsigned int val2buf(void *val, bool reuse=false)
Reads data into the Vector buffer.
LatitudeSense get_latitude_sense() const
void set_longitude_index_right(int right)
void set_longitude_index_left(int left)
int get_longitude_index_right() const
int get_latitude_index_top() const
A class for error processing.
char * get_array_data() const
A multidimensional array of identical data types.
void set_lon_dim(Array::Dim_iter lon)
Array::Dim_iter get_lon_dim() const
void set_lon_length(int len)