MobilityDB  1.0
Data Structures | Macros | Functions
geography_functions.c File Reference

Spatial functions for PostGIS geography. More...

#include "point/geography_funcs.h"
#include <postgres.h>
#include <float.h>
#include <fmgr.h>
#include <utils/array.h>
#include <utils/builtins.h>
#include <liblwgeom.h>
#include "point/postgis.h"
#include "point/tpoint_spatialfuncs.h"
Include dependency graph for geography_functions.c:

Data Structures

struct  sort_node
 

Macros

#define CIRC_NODE_SIZE   8
 
#define PG_GETARG_GSERIALIZED_P_COPY(varno)   ((GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(varno)))
 

Functions

int ptarray_has_z (const POINTARRAY *pa)
 
int ptarray_has_m (const POINTARRAY *pa)
 
int circ_tree_get_point (const CIRC_NODE *node, POINT2D *pt)
 
int circ_tree_contains_point (const CIRC_NODE *node, const POINT2D *pt, const POINT2D *pt_outside, int *on_boundary)
 
CIRC_NODElwgeom_calculate_circ_tree (const LWGEOM *lwgeom)
 
void circ_tree_free (CIRC_NODE *node)
 
double circ_tree_distance_tree (const CIRC_NODE *n1, const CIRC_NODE *n2, const SPHEROID *spheroid, double threshold)
 
static GSERIALIZED * geography_serialize (LWGEOM *geom)
 
static int circ_node_is_leaf (const CIRC_NODE *node)
 
static double circ_node_min_distance (const CIRC_NODE *n1, const CIRC_NODE *n2)
 
static double circ_node_max_distance (const CIRC_NODE *n1, const CIRC_NODE *n2)
 
static int circ_nodes_sort_cmp (const void *a, const void *b)
 
static void circ_internal_nodes_sort (CIRC_NODE **nodes, uint32_t num_nodes, const CIRC_NODE *target_node)
 
double circ_tree_distance_tree_internal (const CIRC_NODE *n1, const CIRC_NODE *n2, double threshold, double *min_dist, double *max_dist, GEOGRAPHIC_POINT *closest1, GEOGRAPHIC_POINT *closest2)
 
LWGEOM * geography_tree_closestpoint (const GSERIALIZED *g1, const GSERIALIZED *g2, double threshold)
 
Datum geography_closestpoint (PG_FUNCTION_ARGS)
 
LWGEOM * geography_tree_shortestline (const GSERIALIZED *g1, const GSERIALIZED *g2, double threshold, const SPHEROID *spheroid)
 
Datum geography_shortestline (PG_FUNCTION_ARGS)
 
void interpolate_point4d_sphere (const POINT3D *p1, const POINT3D *p2, const POINT4D *v1, const POINT4D *v2, double f, POINT4D *p)
 Find interpolation point p between geography points p1 and p2 so that the len(p1,p) == len(p1,p2) f and p falls on p1,p2 segment. More...
 
double ptarray_length_sphere (const POINTARRAY *pa)
 
POINTARRAY * geography_substring (POINTARRAY *ipa, double from, double to, double tolerance)
 
Datum geography_line_substring (PG_FUNCTION_ARGS)
 
POINTARRAY * geography_interpolate_points (const LWLINE *line, double length_fraction, const SPHEROID *s, char repeat)
 
void spheroid_init (SPHEROID *s, double a, double b)
 
Datum geography_line_interpolate_point (PG_FUNCTION_ARGS)
 
double ptarray_locate_point_spheroid (const POINTARRAY *pa, const POINT4D *p4d, const SPHEROID *s, double tolerance, double *mindistout, POINT4D *proj4d)
 
Datum geography_line_locate_point (PG_FUNCTION_ARGS)
 

Detailed Description

Spatial functions for PostGIS geography.

These functions are supposed to be included in a forthcoming version of PostGIS, to be proposed as a PR. This still remains to be done. These functions are not needed in MobilityDB.