PostGIS  2.5.7dev-r@@SVN_REVISION@@
ptarray.c File Reference
#include <stdio.h>
#include <string.h>
#include "../postgis_config.h"
#include "liblwgeom_internal.h"
#include "lwgeom_log.h"
Include dependency graph for ptarray.c:

Go to the source code of this file.

Functions

int ptarray_has_z (const POINTARRAY *pa)
 
int ptarray_has_m (const POINTARRAY *pa)
 
size_t ptarray_point_size (const POINTARRAY *pa)
 
POINTARRAYptarray_construct (char hasz, char hasm, uint32_t npoints)
 Construct an empty pointarray, allocating storage and setting the npoints, but not filling in any information. More...
 
POINTARRAYptarray_construct_empty (char hasz, char hasm, uint32_t maxpoints)
 Create a new POINTARRAY with no points. More...
 
int ptarray_insert_point (POINTARRAY *pa, const POINT4D *p, uint32_t where)
 Insert a point into an existing POINTARRAY. More...
 
int ptarray_append_point (POINTARRAY *pa, const POINT4D *pt, int repeated_points)
 Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE, then a duplicate point will not be added. More...
 
int ptarray_append_ptarray (POINTARRAY *pa1, POINTARRAY *pa2, double gap_tolerance)
 Append a POINTARRAY, pa2 to the end of an existing POINTARRAY, pa1. More...
 
int ptarray_remove_point (POINTARRAY *pa, uint32_t where)
 Remove a point from an existing POINTARRAY. More...
 
POINTARRAYptarray_construct_reference_data (char hasz, char hasm, uint32_t npoints, uint8_t *ptlist)
 Build a new POINTARRAY, but on top of someone else's ordinate array. More...
 
POINTARRAYptarray_construct_copy_data (char hasz, char hasm, uint32_t npoints, const uint8_t *ptlist)
 Construct a new POINTARRAY, copying in the data from ptlist. More...
 
void ptarray_free (POINTARRAY *pa)
 
void ptarray_reverse_in_place (POINTARRAY *pa)
 
POINTARRAYptarray_flip_coordinates (POINTARRAY *pa)
 Reverse X and Y axis on a given POINTARRAY. More...
 
void ptarray_swap_ordinates (POINTARRAY *pa, LWORD o1, LWORD o2)
 Swap ordinate values o1 and o2 on a given POINTARRAY. More...
 
POINTARRAYptarray_segmentize2d (const POINTARRAY *ipa, double dist)
 Returns a modified POINTARRAY so that no segment is longer than the given distance (computed using 2d). More...
 
char ptarray_same (const POINTARRAY *pa1, const POINTARRAY *pa2)
 
POINTARRAYptarray_addPoint (const POINTARRAY *pa, uint8_t *p, size_t pdims, uint32_t where)
 Add a point in a pointarray. More...
 
POINTARRAYptarray_removePoint (POINTARRAY *pa, uint32_t which)
 Remove a point from a pointarray. More...
 
POINTARRAYptarray_merge (POINTARRAY *pa1, POINTARRAY *pa2)
 Merge two given POINTARRAY and returns a pointer on the new aggregate one. More...
 
POINTARRAYptarray_clone_deep (const POINTARRAY *in)
 Deep clone a pointarray (also clones serialized pointlist) More...
 
POINTARRAYptarray_clone (const POINTARRAY *in)
 Clone a POINTARRAY object. More...
 
int ptarray_is_closed (const POINTARRAY *in)
 Check for ring closure using whatever dimensionality is declared on the pointarray. More...
 
int ptarray_is_closed_2d (const POINTARRAY *in)
 
int ptarray_is_closed_3d (const POINTARRAY *in)
 
int ptarray_is_closed_z (const POINTARRAY *in)
 
int ptarray_contains_point (const POINTARRAY *pa, const POINT2D *pt)
 Return 1 if the point is inside the POINTARRAY, -1 if it is outside, and 0 if it is on the boundary. More...
 
int ptarray_contains_point_partial (const POINTARRAY *pa, const POINT2D *pt, int check_closed, int *winding_number)
 
int ptarrayarc_contains_point (const POINTARRAY *pa, const POINT2D *pt)
 For POINTARRAYs representing CIRCULARSTRINGS. More...
 
int ptarrayarc_contains_point_partial (const POINTARRAY *pa, const POINT2D *pt, int check_closed, int *winding_number)
 
double ptarray_signed_area (const POINTARRAY *pa)
 Returns the area in cartesian units. More...
 
int ptarray_isccw (const POINTARRAY *pa)
 
POINTARRAYptarray_force_dims (const POINTARRAY *pa, int hasz, int hasm)
 
POINTARRAYptarray_substring (POINTARRAY *ipa, double from, double to, double tolerance)
 @d1 start location (distance from start / total distance) @d2 end location (distance from start / total distance) More...
 
void closest_point_on_segment (const POINT4D *p, const POINT4D *A, const POINT4D *B, POINT4D *ret)
 
double ptarray_locate_point (const POINTARRAY *pa, const POINT4D *p4d, double *mindistout, POINT4D *proj4d)
 
void ptarray_longitude_shift (POINTARRAY *pa)
 Longitude shift for a pointarray. More...
 
static POINTARRAYptarray_remove_repeated_points_minpoints (const POINTARRAY *in, double tolerance, int minpoints)
 
POINTARRAYptarray_remove_repeated_points (const POINTARRAY *in, double tolerance)
 
void ptarray_remove_repeated_points_in_place (POINTARRAY *pa, double tolerance, uint32_t min_points)
 
static void ptarray_dp_findsplit_in_place (const POINTARRAY *pts, int p1, int p2, int *split, double *dist)
 
static int int_cmp (const void *a, const void *b)
 
void ptarray_simplify_in_place (POINTARRAY *pa, double epsilon, uint32_t minpts)
 
double ptarray_arc_length_2d (const POINTARRAY *pts)
 Find the 2d length of the given POINTARRAY, using circular arc interpolation between each coordinate triple. More...
 
double ptarray_length_2d (const POINTARRAY *pts)
 Find the 2d length of the given POINTARRAY (even if it's 3d) More...
 
double ptarray_length (const POINTARRAY *pts)
 Find the 3d/2d length of the given POINTARRAY (depending on its dimensionality) More...
 
uint8_tgetPoint_internal (const POINTARRAY *pa, uint32_t n)
 
void ptarray_affine (POINTARRAY *pa, const AFFINE *a)
 Affine transform a pointarray. More...
 
void ptarray_scale (POINTARRAY *pa, const POINT4D *fact)
 WARNING, make sure you send in only 16-member double arrays or obviously things will go pear-shaped fast. More...
 
int ptarray_startpoint (const POINTARRAY *pa, POINT4D *pt)
 
void ptarray_grid_in_place (POINTARRAY *pa, const gridspec *grid)
 
int ptarray_npoints_in_rect (const POINTARRAY *pa, const GBOX *gbox)