6 #include <boost/geometry.hpp> 7 #include <boost/geometry/geometries/point.hpp> 8 #include <boost/geometry/geometries/box.hpp> 9 #include <boost/geometry/index/rtree.hpp> 14 #define TITANLIB_VERSION "0.2.0b1" 15 #define __version__ TITANLIB_VERSION 17 typedef std::vector<int>
ivec;
18 typedef std::vector<float>
vec;
19 typedef std::vector<double>
dvec;
20 typedef std::vector<vec>
vec2;
55 float min_horizontal_scale,
60 vec& prob_gross_error,
115 float event_threshold,
148 float vertical_radius);
178 bool convert_coordinates(
float lat,
float lon,
float& x_coord,
float& y_coord,
float& z_coord);
183 float calc_distance(
float lat1,
float lon1,
float lat2,
float lon2);
184 float calc_distance(
float x0,
float y0,
float z0,
float x1,
float y1,
float z1);
206 void sct(
int num_min,
int num_max,
float inner_radius,
float outer_radius,
int num_iterations,
int num_min_prof,
float min_elev_diff,
float min_horizontal_scale,
float vertical_scale,
const vec& t2pos,
const vec& t2neg,
const vec& eps2,
vec& sct,
vec& rep,
const ivec& indices=
ivec());
207 void buddy_check(
const vec& radius,
const ivec& num_min,
float threshold,
float max_elev_diff,
float elev_gradient,
float min_std,
int num_iterations,
const ivec& obs_to_check,
const ivec& indices=
ivec());
208 void buddy_event_check(
const vec& radius,
const ivec& num_min,
float event_threshold,
float threshold,
float max_elev_diff,
float elev_gradient,
int num_iterations,
const ivec& obs_to_check =
ivec(),
const ivec& indices=
ivec());
209 void isolation_check(
int num_min,
float radius,
float vertical_radius);
217 template <
class T> T
subset(
const T& array,
const ivec& indices) {
218 if(array.size() == 1) {
223 T new_array(indices.size());
224 for(
int i = 0; i < indices.size(); i++) {
225 new_array[i] = array[indices[i]];
230 template <
class T>
void unsubset(
const T& array, T& orig_array,
const ivec& indices) {
231 assert(array.size() == indices.size());
232 for(
int i = 0; i < indices.size(); i++) {
233 orig_array[indices[i]] = array[i];
246 int get_nearest_neighbour(
float lat,
float lon,
bool include_match);
247 ivec get_nearest_neighbour(
const vec& lats,
const vec& lons,
bool include_match);
256 ivec get_neighbours(
float lat,
float lon,
float radius,
int num_max,
bool include_match);
264 ivec get_neighbours_with_distance(
float lat,
float lon,
float radius,
int num_max,
bool include_match,
vec& distances);
271 int get_num_neighbours(
float lat,
float lon,
float radius,
int num_max,
bool include_match);
273 typedef boost::geometry::model::point<float, 3, boost::geometry::cs::cartesian> point;
274 typedef std::pair<point, unsigned> value;
275 typedef boost::geometry::model::box<point> box;
278 boost::geometry::index::rtree< value, boost::geometry::index::quadratic<16> > mTree;
291 float min_horizontal_scale,
296 vec& prob_gross_error,
float * test_array(float *v, int n)
Required for SWIG only.
Definition: util.cpp:144
bool convert_coordinates(const vec &lats, const vec &lons, vec &x_coords, vec &y_coords, vec &z_coords)
Convert lat/lons to 3D cartesian coordinates with the centre of the earth as the origin.
Definition: util.cpp:6
vec lons
Definition: titanlib.h:212
float compute_quantile(double quantile, const vec &array)
Definition: util.cpp:100
ivec range_check(const vec &values, const vec &min, const vec &max)
Range check.
Definition: range_check.cpp:14
vec subset(const vec &input, const ivec &indices)
Definition: util.cpp:133
ivec sct(const vec &lats, const vec &lons, const vec &elevs, const vec &values, int num_min, int num_max, float inner_radius, float outer_radius, int num_iterations, int num_min_prof, float min_elev_diff, float min_horizontal_scale, float vertical_scale, const vec &pos, const vec &neg, const vec &eps2, vec &prob_gross_error, vec &rep)
Spatial Consistency Test.
Definition: sct.cpp:28
vec interpolate_to_points(const vec2 &input_lats, const vec2 &input_lons, const vec2 &input_values, const vec &output_lats, const vec &output_lons)
Definition: util.cpp:73
std::vector< double > dvec
Definition: titanlib.h:19
std::vector< vec > vec2
Definition: titanlib.h:20
double max(const double *array, int sizeArray)
Definition: sct_smart_boxes.c:1006
void set_omp_threads(int num)
Set the number of OpenMP threads to use.
Definition: titanlib.cpp:20
vec values
Definition: titanlib.h:214
ivec isolation_check(const vec &lats, const vec &lons, int num_min, float radius)
Isolation check.
Definition: isolation_check.cpp:7
Titanlib.
Definition: titanlib.h:24
Definition: titanlib.h:238
vec lats
Definition: titanlib.h:211
void initialize_omp()
Sets the number of OpenMP threads to 1 if OMP_NUM_THREADS undefined.
Definition: titanlib.cpp:8
ivec sct_old(const vec &lats, const vec &lons, const vec &elevs, const vec &values, int nmin, int nmax, int num_min_prof, float min_elev_diff, float min_horizontal_scale, float dz, const vec &pos, const vec &neg, const vec &eps2, vec &prob_gross_error, vec &rep, ivec &boxids)
Old version of the spatial consistency test (for testing purposes only)
Definition: sct_old.cpp:11
double min(const double *array, int sizeArray)
Definition: sct_smart_boxes.c:1017
std::vector< float > vec
Definition: titanlib.h:18
Represents point and their observed values.
Definition: titanlib.h:198
ivec buddy_event_check(const vec &lats, const vec &lons, const vec &elevs, const vec &values, const vec &radius, const ivec &num_min, float event_threshold, float threshold, float max_elev_diff, float elev_gradient, int num_iterations, const ivec &obs_to_check=ivec())
Definition: buddy_event_check.cpp:11
vec elevs
Definition: titanlib.h:213
std::string version()
Definition: titanlib.cpp:4
float deg2rad(float deg)
Definition: util.cpp:70
ivec flags
Definition: titanlib.h:215
void convert_to_proj(const vec &lats, const vec &lons, std::string proj4, vec &x_coords, vec &y_coords)
Definition: util.cpp:29
double clock()
Definition: titanlib.cpp:26
ivec range_check_climatology(const vec &lats, const vec &lons, const vec &elevs, const vec &values, int unixtime, const vec &pos, const vec &neg)
Definition: range_check.cpp:44
float calc_distance(float lat1, float lon1, float lat2, float lon2)
Definition: util.cpp:47
ivec buddy_check(const vec &lats, const vec &lons, const vec &elevs, const vec &values, const vec &radius, const ivec &num_min, float threshold, float max_elev_diff, float elev_gradient, float min_std, int num_iterations, const ivec &obs_to_check=ivec())
Buddy check.
Definition: buddy_check.cpp:11
std::vector< int > ivec
Definition: titanlib.h:17