/usr/include/libdap/ArrayGeoConstraint.h is in libdap-dev 3.11.1-10.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | // -*- mode: c++; c-basic-offset:4 -*-
// This file is part of libdap, A C++ implementation of the OPeNDAP Data
// Access Protocol.
// Copyright (c) 2006 OPeNDAP, Inc.
// Author: James Gallagher <jgallagher@opendap.org>
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
// You can contact OPeNDAP, Inc. at PO Box 112, Saunderstown, RI. 02874-0112.
#ifndef _array_geo_constraint_h
#define _array_geo_constraint_h 1
#include <string>
#include <sstream>
#include <set>
#ifndef _geo_constraint_h
#include "GeoConstraint.h"
#endif
#ifndef _util_h
#include "util.h"
#endif
namespace libdap
{
extern bool unit_or_name_match(set < string > units, set < string > names,
const string & var_units,
const string & var_name);
/** Geographical constraint applied to an Array.
@note This class assumes that the Longitude dimension varies fastest, as
does the COARDS conventions.
@author James Gallagher */
class ArrayGeoConstraint : public GeoConstraint
{
private:
struct Extent
{
double d_left;
double d_top;
double d_right;
double d_bottom;
Extent() : d_left(0.0), d_top(0.0), d_right(0.0), d_bottom(0.0)
{}
Extent(double t, double l, double b, double r)
: d_left(l), d_top(t), d_right(r), d_bottom(b)
{}
};
struct Projection
{
string d_name;
string d_datum;
Projection()
{}
Projection(const string &n, const string &d)
: d_name(n), d_datum(d)
{
downcase(d_name);
if (d_name != "plat-carre")
throw Error(
"geoarray(): Only the Plat-Carre projection is supported by this version of\n\
geoarray().");
downcase(d_datum);
if (d_datum != "wgs84")
throw Error(
"geoarray(): Only the wgs84 datum is supported by this version of geoarray().");
}
};
Array *d_array;
Extent d_extent;
Projection d_projection;
bool build_lat_lon_maps();
bool lat_lon_dimensions_ok();
void m_init();
friend class ArrayGeoConstraintTest; // Unit tests
public:
/** @name Constructors */
//@{
ArrayGeoConstraint(Array *)
: GeoConstraint(), d_array(0)
{
// See ce_finctions.cc:function_geoarray() to put this message in
// context.
throw Error(
"Bummer. The five-argument version of geoarray() is not currently implemented.");
}
ArrayGeoConstraint(Array *array,
double left, double top, double right, double bottom);
ArrayGeoConstraint(Array *array,
double left, double top, double right, double bottom,
const string &projection, const string &datum);
//@}
virtual ~ArrayGeoConstraint()
{}
virtual void apply_constraint_to_data();
virtual Array *get_constrained_array() const
{
return d_array;
}
};
} // namespace libdap
#endif // _array_geo_constraint_h
|