MobilityDB 1.3
Loading...
Searching...
No Matches
meos_geo.h
Go to the documentation of this file.
1/*****************************************************************************
2 *
3 * This MobilityDB code is provided under The PostgreSQL License.
4 * Copyright (c) 2016-2025, Université libre de Bruxelles and MobilityDB
5 * contributors
6 *
7 * MobilityDB includes portions of PostGIS version 3 source code released
8 * under the GNU General Public License (GPLv2 or later).
9 * Copyright (c) 2001-2025, PostGIS contributors
10 *
11 * Permission to use, copy, modify, and distribute this software and its
12 * documentation for any purpose, without fee, and without a written
13 * agreement is hereby granted, provided that the above copyright notice and
14 * this paragraph and the following two paragraphs appear in all copies.
15 *
16 * IN NO EVENT SHALL UNIVERSITE LIBRE DE BRUXELLES BE LIABLE TO ANY PARTY FOR
17 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
18 * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
19 * EVEN IF UNIVERSITE LIBRE DE BRUXELLES HAS BEEN ADVISED OF THE POSSIBILITY
20 * OF SUCH DAMAGE.
21 *
22 * UNIVERSITE LIBRE DE BRUXELLES SPECIFICALLY DISCLAIMS ANY WARRANTIES,
23 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
24 * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON
25 * AN "AS IS" BASIS, AND UNIVERSITE LIBRE DE BRUXELLES HAS NO OBLIGATIONS TO
26 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
27 *
28 *****************************************************************************/
29
34#ifndef __MEOS_GEO_H__
35#define __MEOS_GEO_H__
36
37/* C */
38#include <stdbool.h>
39#include <stdint.h>
40
41/* PostGIS */
42#include <liblwgeom.h>
43/* MEOS */
44#include <meos.h>
45
46/*****************************************************************************
47 * Type definitions
48 *****************************************************************************/
49
54typedef enum
55{
59 COVERS = 3,
61
62/*****************************************************************************
63 * Validity macros
64 *****************************************************************************/
65
69#if MEOS
70 #define VALIDATE_GEOMSET(set, ret) \
71 do { \
72 if (! ensure_not_null((void *) (set)) || \
73 ! ensure_set_isof_type(set, T_GEOMSET) ) \
74 return (ret); \
75 } while (0)
76#else
77 #define VALIDATE_GEOMSET(set, ret) \
78 do { \
79 assert(temp); \
80 assert((set)->settype == T_GEOMSET); \
81 } while (0)
82#endif /* MEOS */
83
87#if MEOS
88 #define VALIDATE_GEOGSET(set, ret) ( \
89 do { \
90 if (! ensure_not_null((void *) (set)) || \
91 ! ensure_set_isof_type(set, T_GEOGSET) ) \
92 return (ret); \
93 } while (0)
94#else
95 #define VALIDATE_GEOGSET(set, ret) \
96 do { \
97 assert(temp); \
98 assert((set)->settype == T_GEOGSET); \
99 } while (0)
100#endif /* MEOS */
101
105#if MEOS
106 #define VALIDATE_GEOSET(set, ret) \
107 do { \
108 if (! ensure_not_null((void *) (set)) || \
109 ! ensure_geoset_type((set)->settype) ) \
110 return (ret); \
111 } while (0)
112#else
113 #define VALIDATE_GEOSET(set, ret) \
114 do { \
115 assert(temp); \
116 assert(geoset_type((set)->settype); \
117 } while (0)
118#endif /* MEOS */
119
123#if MEOS
124 #define VALIDATE_SPATIALSET(set, ret) \
125 do { \
126 if (! ensure_not_null((void *) (set)) || \
127 ! ensure_spatialset_type((set)->settype) ) \
128 return (ret); \
129 } while (0)
130#else
131 #define VALIDATE_SPATIALSET(set, ret) \
132 do { \
133 assert(set); \
134 assert(spatialset_type((set)->settype)); \
135 } while (0)
136#endif /* MEOS */
137
138/*****************************************************************************/
139
145#if MEOS
146 #define VALIDATE_TGEOMETRY(temp, ret) \
147 do { \
148 if (! ensure_not_null((void *) (temp)) || \
149 ! ensure_temporal_isof_type((Temporal *) (temp), T_TGEOMETRY) ) \
150 return (ret); \
151 } while (0)
152#else
153 #define VALIDATE_TGEOMETRY(temp, ret) \
154 do { \
155 assert(temp); \
156 assert((temp)->temptype == T_TGEOMETRY); \
157 } while (0)
158#endif /* MEOS */
159
165#if MEOS
166 #define VALIDATE_TGEOGRAPHY(temp, ret) \
167 do { \
168 if (! ensure_not_null((void *) (temp)) || \
169 ! ensure_temporal_isof_type((Temporal *) (temp), T_TGEOGRAPHY) ) \
170 return (ret); \
171 } while (0)
172#else
173 #define VALIDATE_TGEOGRAPHY(temp, ret) \
174 do { \
175 assert(temp); \
176 assert((temp)->temptype == T_TGEOGRAPHY); \
177 } while (0)
178#endif /* MEOS */
179
185#if MEOS
186 #define VALIDATE_TGEOMPOINT(temp, ret) \
187 do { \
188 if (! ensure_not_null((void *) (temp)) || \
189 ! ensure_temporal_isof_type((Temporal *) (temp), T_TGEOMPOINT) ) \
190 return (ret); \
191 } while (0)
192#else
193 #define VALIDATE_TGEOMPOINT(temp, ret) \
194 do { \
195 assert(temp); \
196 assert((temp)->temptype == T_TGEOMPOINT); \
197 } while (0)
198#endif /* MEOS */
199
205#if MEOS
206 #define VALIDATE_TGEOGPOINT(temp, ret) \
207 do { \
208 if (! ensure_not_null((void *) (temp)) || \
209 ! ensure_temporal_isof_type((Temporal *) (temp), T_TGEOGPOINT) ) \
210 return (ret); \
211 } while (0)
212#else
213 #define VALIDATE_TGEOGPOINT(temp, ret) \
214 do { \
215 assert(temp); \
216 assert((temp)->temptype == T_TGEOGPOINT); \
217 } while (0)
218#endif /* MEOS */
219
226#if MEOS
227 #define VALIDATE_TGEO(temp, ret) \
228 do { \
229 if (! ensure_not_null((void *) (temp)) || \
230 ! ensure_tgeo_type_all(((Temporal *) (temp))->temptype) ) \
231 return (ret); \
232 } while (0)
233#else
234 #define VALIDATE_TGEO(temp, ret) \
235 do { \
236 assert(temp); \
237 assert(tgeo_type_all(((Temporal *) (temp))->temptype)); \
238 } while (0)
239#endif /* MEOS */
240
246#if MEOS
247 #define VALIDATE_TGEOM(temp, ret) \
248 do { \
249 if (! ensure_not_null((void *) (temp)) || \
250 ! ensure_tgeometry_type(((Temporal *) (temp))->temptype) ) \
251 return (ret); \
252 } while (0)
253#else
254 #define VALIDATE_TGEOM(temp, ret) \
255 do { \
256 assert(temp); \
257 assert(tgeometry_type(((Temporal *) (temp))->temptype)); \
258 } while (0)
259#endif /* MEOS */
260
266#if MEOS
267 #define VALIDATE_TGEOG(temp, ret) \
268 do { \
269 if (! ensure_not_null((void *) (temp)) || \
270 ! ensure_tgeodetic_type(((Temporal *) (temp))->temptype) ) \
271 return (ret); \
272 } while (0)
273#else
274 #define VALIDATE_TGEOG(temp, ret) \
275 do { \
276 assert(temp); \
277 assert(tgeodetic_type(((Temporal *) (temp))->temptype)); \
278 } while (0)
279#endif /* MEOS */
280
287#if MEOS
288 #define VALIDATE_TPOINT(temp, ret) \
289 do { \
290 if (! ensure_not_null((void *) (temp)) || \
291 ! ensure_tpoint_type(((Temporal *) (temp))->temptype) ) \
292 return (ret); \
293 } while (0)
294#else
295 #define VALIDATE_TPOINT(temp, ret) \
296 do { \
297 assert(temp); \
298 assert(tpoint_type(((Temporal *) (temp))->temptype)); \
299 } while (0)
300#endif /* MEOS */
301
307#if MEOS
308 #define VALIDATE_TSPATIAL(temp, ret) \
309 do { \
310 if (! ensure_not_null((void *) (temp)) || \
311 ! ensure_tspatial_type(((Temporal *) (temp))->temptype) ) \
312 return (ret); \
313 } while (0)
314#else
315 #define VALIDATE_TSPATIAL(temp, ret) \
316 do { \
317 assert(temp); \
318 assert(tspatial_type(((Temporal *) (temp))->temptype)); \
319 } while (0)
320#endif /* MEOS */
321
322/*===========================================================================*
323 * Functions for static geometries
324 *===========================================================================*/
325
326/* Input and output functions */
327
328extern uint8_t *geo_as_ewkb(const GSERIALIZED *gs, const char *endian, size_t *size);
329extern char *geo_as_ewkt(const GSERIALIZED *gs, int precision);
330extern char *geo_as_geojson(const GSERIALIZED *gs, int option, int precision, const char *srs);
331extern char *geo_as_hexewkb(const GSERIALIZED *gs, const char *endian);
332extern char *geo_as_text(const GSERIALIZED *gs, int precision);
333extern GSERIALIZED *geo_from_ewkb(const uint8_t *wkb, size_t wkb_size, int32 srid);
334extern GSERIALIZED *geo_from_geojson(const char *geojson);
335extern GSERIALIZED *geo_from_text(const char *wkt, int32_t srid);
336extern char *geo_out(const GSERIALIZED *gs);
337extern GSERIALIZED *geog_from_binary(const char *wkb_bytea);
338extern GSERIALIZED *geog_from_hexewkb(const char *wkt);
339extern GSERIALIZED *geog_in(const char *str, int32 typmod);
340extern GSERIALIZED *geom_from_hexewkb(const char *wkt);
341extern GSERIALIZED *geom_in(const char *str, int32 typmod);
342
343/* Constructor functions */
344
345extern GSERIALIZED *geo_copy(const GSERIALIZED *g);
346extern GSERIALIZED *geogpoint_make2d(int32_t srid, double x, double y);
347extern GSERIALIZED *geogpoint_make3dz(int32_t srid, double x, double y, double z);
348extern GSERIALIZED *geompoint_make2d(int32_t srid, double x, double y);
349extern GSERIALIZED *geompoint_make3dz(int32_t srid, double x, double y, double z);
350
351/* Conversion functions */
352
353extern GSERIALIZED *geom_to_geog(const GSERIALIZED *geom);
354extern GSERIALIZED *geog_to_geom(const GSERIALIZED *geog);
355
356/* Accessor functions */
357
358extern bool geo_is_empty(const GSERIALIZED *g);
359#if CBUFFER
360extern bool geo_is_unitary(const GSERIALIZED *gs);
361#endif
362extern const char *geo_typename(int type);
363extern double geog_area(const GSERIALIZED *g, bool use_spheroid);
364extern GSERIALIZED *geog_centroid(const GSERIALIZED *g, bool use_spheroid);
365extern double geog_length(const GSERIALIZED *g, bool use_spheroid);
366extern double geog_perimeter(const GSERIALIZED *g, bool use_spheroid);
367extern bool geom_azimuth(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double *result);
368extern double geom_length(const GSERIALIZED *gs);
369extern double geom_perimeter(const GSERIALIZED *gs);
370extern int line_numpoints(const GSERIALIZED *gs);
371extern GSERIALIZED *line_point_n(const GSERIALIZED *geom, int n);
372
373/* Transformation functions */
374
375extern GSERIALIZED *geo_reverse(const GSERIALIZED *gs);
376extern GSERIALIZED *geo_round(const GSERIALIZED *gs, int maxdd);
377
378/* Spatial reference system functions */
379
380extern GSERIALIZED *geo_set_srid(const GSERIALIZED *gs, int32_t srid);
381extern int32_t geo_srid(const GSERIALIZED *gs);
382extern GSERIALIZED *geo_transform(GSERIALIZED *geom, int32_t srid_to);
383extern GSERIALIZED *geo_transform_pipeline(const GSERIALIZED *gs, char *pipeline, int32_t srid_to, bool is_forward);
384
385/* Spatial processing functions */
386
387extern GSERIALIZED *geo_collect_garray(GSERIALIZED **gsarr, int count);
388extern GSERIALIZED *geo_makeline_garray(GSERIALIZED **gsarr, int count);
389extern int geo_npoints(const GSERIALIZED *gs);
390extern int geo_ngeos(const GSERIALIZED *gs);
391extern GSERIALIZED *geo_geoN(const GSERIALIZED *geom, int n);
392#if CBUFFER
393extern GSERIALIZED **geo_pointarr(const GSERIALIZED *gs, int *count);
394extern GSERIALIZED *geo_points(const GSERIALIZED *gs);
395#endif
396extern GSERIALIZED *geom_array_union(GSERIALIZED **gsarr, int count);
398extern GSERIALIZED *geom_buffer(const GSERIALIZED *gs, double size, char *params);
401extern GSERIALIZED *geom_difference2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
402extern GSERIALIZED *geom_intersection2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
403#if CBUFFER
404extern GSERIALIZED *geom_intersection2d_coll(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
405extern GSERIALIZED *geom_min_bounding_radius(const GSERIALIZED *geom, double *radius);
406#endif
407extern GSERIALIZED *geom_shortestline2d(const GSERIALIZED *gs1, const GSERIALIZED *s2);
408extern GSERIALIZED *geom_shortestline3d(const GSERIALIZED *gs1, const GSERIALIZED *s2);
409extern GSERIALIZED *geom_unary_union(GSERIALIZED *gs, double prec);
410extern GSERIALIZED *line_interpolate_point(GSERIALIZED *gs, double distance_fraction, bool repeat);
411extern double line_locate_point(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
412extern GSERIALIZED *line_substring(const GSERIALIZED *gs, double from, double to);
413
414/* Spatial relationship functions */
415
416extern bool geog_dwithin(const GSERIALIZED *g1, const GSERIALIZED *g2, double tolerance, bool use_spheroid);
417extern bool geog_intersects(const GSERIALIZED *gs1, const GSERIALIZED *gs2, bool use_spheroid);
418extern bool geom_contains(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
419extern bool geom_covers(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
420extern bool geom_disjoint2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
421extern bool geom_dwithin2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double tolerance);
422extern bool geom_dwithin3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double tolerance);
423extern bool geom_intersects2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
424extern bool geom_intersects3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
425extern bool geom_relate_pattern(const GSERIALIZED *gs1, const GSERIALIZED *gs2, char *patt);
426extern bool geom_touches(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
427
428/* Bounding box functions */
429
430extern STBox *geo_stboxes(const GSERIALIZED *gs, int *count);
431extern STBox *geo_split_each_n_stboxes(const GSERIALIZED *gs, int elem_count, int *count);
432extern STBox *geo_split_n_stboxes(const GSERIALIZED *gs, int box_count, int *count);
433
434/* Distance functions */
435
436extern double geog_distance(const GSERIALIZED *g1, const GSERIALIZED *g2);
437extern double geom_distance2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
438extern double geom_distance3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
439
440/* Comparison functions */
441
442extern int geo_equals(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
443extern bool geo_same(const GSERIALIZED *gs1, const GSERIALIZED *gs2);
444
445/*****************************************************************************
446 * Functions for spatial sets
447 *****************************************************************************/
448
449/* Input and output functions */
450
451extern Set *geogset_in(const char *str);
452extern Set *geomset_in(const char *str);
453extern char *spatialset_as_text(const Set *set, int maxdd);
454extern char *spatialset_as_ewkt(const Set *set, int maxdd);
455
456/* Constructor functions */
457
458extern Set *geoset_make(const GSERIALIZED **values, int count);
459
460/* Conversion functions */
461
462extern Set *geo_to_set(const GSERIALIZED *gs);
463
464/* Accessor functions */
465
466extern GSERIALIZED *geoset_end_value(const Set *s);
467extern GSERIALIZED *geoset_start_value(const Set *s);
468extern bool geoset_value_n(const Set *s, int n, GSERIALIZED **result);
469extern GSERIALIZED **geoset_values(const Set *s);
470
471/* Set operations */
472
473extern bool contained_geo_set(const GSERIALIZED *gs, const Set *s);
474extern bool contains_set_geo(const Set *s, GSERIALIZED *gs);
475extern Set *geo_union_transfn(Set *state, const GSERIALIZED *gs);
476extern Set *intersection_geo_set(const GSERIALIZED *gs, const Set *s);
477extern Set *intersection_set_geo(const Set *s, const GSERIALIZED *gs);
478extern Set *minus_geo_set(const GSERIALIZED *gs, const Set *s);
479extern Set *minus_set_geo(const Set *s, const GSERIALIZED *gs);
480extern Set *union_geo_set(const GSERIALIZED *gs, const Set *s);
481extern Set *union_set_geo(const Set *s, const GSERIALIZED *gs);
482
483/* SRID functions */
484
485extern Set *spatialset_set_srid(const Set *s, int32_t srid);
486extern int32_t spatialset_srid(const Set *s);
487extern Set *spatialset_transform(const Set *s, int32_t srid);
488extern Set *spatialset_transform_pipeline(const Set *s, const char *pipelinestr, int32_t srid, bool is_forward);
489
490/*****************************************************************************
491 * Functions for spatiotemporal boxes
492 *****************************************************************************/
493
494/* Input/output functions */
495
496extern char *stbox_as_hexwkb(const STBox *box, uint8_t variant, size_t *size);
497extern uint8_t *stbox_as_wkb(const STBox *box, uint8_t variant, size_t *size_out);
498extern STBox *stbox_from_hexwkb(const char *hexwkb);
499extern STBox *stbox_from_wkb(const uint8_t *wkb, size_t size);
500extern STBox *stbox_in(const char *str);
501extern char *stbox_out(const STBox *box, int maxdd);
502
503/* Constructor functions */
504
506extern STBox *geo_tstzspan_to_stbox(const GSERIALIZED *gs, const Span *s);
507extern STBox *stbox_copy(const STBox *box);
508extern STBox *stbox_make(bool hasx, bool hasz, bool geodetic, int32 srid, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, const Span *s);
509
510/* Conversion functions */
511
512extern STBox *geo_to_stbox(const GSERIALIZED *gs);
513extern STBox *spatialset_to_stbox(const Set *s);
514extern BOX3D *stbox_to_box3d(const STBox *box);
515extern GBOX *stbox_to_gbox(const STBox *box);
516extern GSERIALIZED *stbox_to_geo(const STBox *box);
517extern Span *stbox_to_tstzspan(const STBox *box);
519extern STBox *tstzset_to_stbox(const Set *s);
520extern STBox *tstzspan_to_stbox(const Span *s);
521extern STBox *tstzspanset_to_stbox(const SpanSet *ss);
522
523/* Accessor functions */
524
525extern double stbox_area(const STBox *box, bool spheroid);
526extern bool stbox_hast(const STBox *box);
527extern bool stbox_hasx(const STBox *box);
528extern bool stbox_hasz(const STBox *box);
529extern bool stbox_isgeodetic(const STBox *box);
530extern double stbox_perimeter(const STBox *box, bool spheroid);
531extern bool stbox_tmax(const STBox *box, TimestampTz *result);
532extern bool stbox_tmax_inc(const STBox *box, bool *result);
533extern bool stbox_tmin(const STBox *box, TimestampTz *result);
534extern bool stbox_tmin_inc(const STBox *box, bool *result);
535extern double stbox_volume(const STBox *box);
536extern bool stbox_xmax(const STBox *box, double *result);
537extern bool stbox_xmin(const STBox *box, double *result);
538extern bool stbox_ymax(const STBox *box, double *result);
539extern bool stbox_ymin(const STBox *box, double *result);
540extern bool stbox_zmax(const STBox *box, double *result);
541extern bool stbox_zmin(const STBox *box, double *result);
542
543/* Transformation functions */
544
545extern STBox *stbox_expand_space(const STBox *box, double d);
546extern STBox *stbox_expand_time(const STBox *box, const Interval *interv);
547extern STBox *stbox_get_space(const STBox *box);
548extern STBox *stbox_quad_split(const STBox *box, int *count);
549extern STBox *stbox_round(const STBox *box, int maxdd);
550extern STBox *stbox_shift_scale_time(const STBox *box, const Interval *shift, const Interval *duration);
551extern STBox *stboxarr_round(const STBox *boxarr, int count, int maxdd);
552
553/* SRID functions */
554
555extern STBox *stbox_set_srid(const STBox *box, int32_t srid);
556extern int32_t stbox_srid(const STBox *box);
557extern STBox *stbox_transform(const STBox *box, int32_t srid);
558extern STBox *stbox_transform_pipeline(const STBox *box, const char *pipelinestr, int32_t srid, bool is_forward);
559
560/* Topological functions */
561
562extern bool adjacent_stbox_stbox(const STBox *box1, const STBox *box2);
563extern bool contained_stbox_stbox(const STBox *box1, const STBox *box2);
564extern bool contains_stbox_stbox(const STBox *box1, const STBox *box2);
565extern bool overlaps_stbox_stbox(const STBox *box1, const STBox *box2);
566extern bool same_stbox_stbox(const STBox *box1, const STBox *box2);
567
568/* Position functions */
569
570extern bool above_stbox_stbox(const STBox *box1, const STBox *box2);
571extern bool after_stbox_stbox(const STBox *box1, const STBox *box2);
572extern bool back_stbox_stbox(const STBox *box1, const STBox *box2);
573extern bool before_stbox_stbox(const STBox *box1, const STBox *box2);
574extern bool below_stbox_stbox(const STBox *box1, const STBox *box2);
575extern bool front_stbox_stbox(const STBox *box1, const STBox *box2);
576extern bool left_stbox_stbox(const STBox *box1, const STBox *box2);
577extern bool overabove_stbox_stbox(const STBox *box1, const STBox *box2);
578extern bool overafter_stbox_stbox(const STBox *box1, const STBox *box2);
579extern bool overback_stbox_stbox(const STBox *box1, const STBox *box2);
580extern bool overbefore_stbox_stbox(const STBox *box1, const STBox *box2);
581extern bool overbelow_stbox_stbox(const STBox *box1, const STBox *box2);
582extern bool overfront_stbox_stbox(const STBox *box1, const STBox *box2);
583extern bool overleft_stbox_stbox(const STBox *box1, const STBox *box2);
584extern bool overright_stbox_stbox(const STBox *box1, const STBox *box2);
585extern bool right_stbox_stbox(const STBox *box1, const STBox *box2);
586
587/* Set functions */
588
589extern STBox *union_stbox_stbox(const STBox *box1, const STBox *box2, bool strict);
590extern STBox *intersection_stbox_stbox(const STBox *box1, const STBox *box2);
591
592/* Comparisons */
593
594extern int stbox_cmp(const STBox *box1, const STBox *box2);
595extern bool stbox_eq(const STBox *box1, const STBox *box2);
596extern bool stbox_ge(const STBox *box1, const STBox *box2);
597extern bool stbox_gt(const STBox *box1, const STBox *box2);
598extern bool stbox_le(const STBox *box1, const STBox *box2);
599extern bool stbox_lt(const STBox *box1, const STBox *box2);
600extern bool stbox_ne(const STBox *box1, const STBox *box2);
601
602/* RTree functions */
603
604// extern RTree *rtree_create_stbox();
605// extern void rtree_free(RTree *rtree);
606// extern void rtree_insert(RTree *rtree, STBox *box, int64 id);
607// extern int *rtree_search(const RTree *rtree,const STBox *query, int *count);
608
609/*****************************************************************************
610 * Functions for temporal geometries/geographies
611 *****************************************************************************/
612
613/* Input and output functions */
614
615extern char *tgeo_out(const Temporal *temp, int maxdd);
616extern Temporal *tgeogpoint_from_mfjson(const char *str);
617extern Temporal *tgeogpoint_in(const char *str);
618extern Temporal *tgeography_from_mfjson(const char *mfjson);
619extern Temporal *tgeography_in(const char *str);
620extern Temporal *tgeometry_from_mfjson(const char *str);
621extern Temporal *tgeometry_in(const char *str);
622extern Temporal *tgeompoint_from_mfjson(const char *str);
623extern Temporal *tgeompoint_in(const char *str);
624extern char *tspatial_as_ewkt(const Temporal *temp, int maxdd);
625extern char *tspatial_as_text(const Temporal *temp, int maxdd);
626
627/* Constructor functions */
628
629extern Temporal *tgeo_from_base_temp(const GSERIALIZED *gs, const Temporal *temp);
631extern TSequence *tgeoseq_from_base_tstzset(const GSERIALIZED *gs, const Set *s);
632extern TSequence *tgeoseq_from_base_tstzspan(const GSERIALIZED *gs, const Span *s, interpType interp);
634extern Temporal *tpoint_from_base_temp(const GSERIALIZED *gs, const Temporal *temp);
636extern TSequence *tpointseq_from_base_tstzset(const GSERIALIZED *gs, const Set *s);
637extern TSequence *tpointseq_from_base_tstzspan(const GSERIALIZED *gs, const Span *s, interpType interp);
638extern TSequence *tpointseq_make_coords(const double *xcoords, const double *ycoords, const double *zcoords, const TimestampTz *times, int count, int32 srid, bool geodetic, bool lower_inc, bool upper_inc, interpType interp, bool normalize);
640
641/* Conversion functions */
642
643extern STBox *box3d_to_stbox(const BOX3D *box);
644extern STBox *gbox_to_stbox(const GBOX *box);
646extern Temporal *tgeogpoint_to_tgeography(const Temporal *temp);
647extern Temporal *tgeography_to_tgeogpoint(const Temporal *temp);
648extern Temporal *tgeography_to_tgeometry(const Temporal *temp);
649extern Temporal *tgeometry_to_tgeography(const Temporal *temp);
650extern Temporal *tgeometry_to_tgeompoint(const Temporal *temp);
651extern Temporal *tgeompoint_to_tgeometry(const Temporal *temp);
652extern bool tpoint_as_mvtgeom(const Temporal *temp, const STBox *bounds, int32_t extent, int32_t buffer, bool clip_geom, GSERIALIZED **gsarr, int64 **timesarr, int *count);
653extern bool tpoint_tfloat_to_geomeas(const Temporal *tpoint, const Temporal *measure, bool segmentize, GSERIALIZED **result);
654extern STBox *tspatial_to_stbox(const Temporal *temp);
655
656/* Accessor functions */
657
658extern bool bearing_point_point(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double *result);
659extern Temporal *bearing_tpoint_point(const Temporal *temp, const GSERIALIZED *gs, bool invert);
660extern Temporal *bearing_tpoint_tpoint(const Temporal *temp1, const Temporal *temp2);
661extern Temporal *tgeo_centroid(const Temporal *temp);
662extern GSERIALIZED *tgeo_convex_hull(const Temporal *temp);
663extern GSERIALIZED *tgeo_end_value(const Temporal *temp);
664extern GSERIALIZED *tgeo_start_value(const Temporal *temp);
665extern GSERIALIZED *tgeo_traversed_area(const Temporal *temp, bool unary_union);
666extern bool tgeo_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, GSERIALIZED **value);
667extern bool tgeo_value_n(const Temporal *temp, int n, GSERIALIZED **result);
668extern GSERIALIZED **tgeo_values(const Temporal *temp, int *count);
669extern Temporal *tpoint_angular_difference(const Temporal *temp);
670extern Temporal *tpoint_azimuth(const Temporal *temp);
671extern Temporal *tpoint_cumulative_length(const Temporal *temp);
672extern bool tpoint_direction(const Temporal *temp, double *result);
673extern Temporal *tpoint_get_x(const Temporal *temp);
674extern Temporal *tpoint_get_y(const Temporal *temp);
675extern Temporal *tpoint_get_z(const Temporal *temp);
676extern bool tpoint_is_simple(const Temporal *temp);
677extern double tpoint_length(const Temporal *temp);
678extern Temporal *tpoint_speed(const Temporal *temp);
679extern GSERIALIZED *tpoint_trajectory(const Temporal *temp, bool unary_union);
680extern GSERIALIZED *tpoint_twcentroid(const Temporal *temp);
681
682/* Transformation functions */
683
684extern Temporal *tgeo_affine(const Temporal *temp, const AFFINE *a);
685extern Temporal *tgeo_scale(const Temporal *temp, const GSERIALIZED *scale, const GSERIALIZED *sorigin);
686extern Temporal **tpoint_make_simple(const Temporal *temp, int *count);
687
688/* SRID functions */
689
690int32_t tspatial_srid(const Temporal *temp);
691extern Temporal *tspatial_set_srid(const Temporal *temp, int32_t srid);
692extern Temporal *tspatial_transform(const Temporal *temp, int32_t srid);
693extern Temporal *tspatial_transform_pipeline(const Temporal *temp, const char *pipelinestr, int32_t srid, bool is_forward);
694
695/* Restriction functions */
696
697extern Temporal *tgeo_at_geom(const Temporal *temp, const GSERIALIZED *gs);
698extern Temporal *tgeo_at_stbox(const Temporal *temp, const STBox *box, bool border_inc);
699extern Temporal *tgeo_at_value(const Temporal *temp, GSERIALIZED *gs);
700extern Temporal *tgeo_minus_geom(const Temporal *temp, const GSERIALIZED *gs);
701extern Temporal *tgeo_minus_stbox(const Temporal *temp, const STBox *box, bool border_inc);
702extern Temporal *tgeo_minus_value(const Temporal *temp, GSERIALIZED *gs);
703extern Temporal *tpoint_at_geom(const Temporal *temp, const GSERIALIZED *gs, const Span *zspan);
704extern Temporal *tpoint_at_value(const Temporal *temp, GSERIALIZED *gs);
705extern Temporal *tpoint_minus_geom(const Temporal *temp, const GSERIALIZED *gs, const Span *zspan);
706extern Temporal *tpoint_minus_value(const Temporal *temp, GSERIALIZED *gs);
707
708/* Ever and always comparisons */
709
710extern int always_eq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
711extern int always_eq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
712extern int always_eq_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
713extern int always_ne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
714extern int always_ne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
715extern int always_ne_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
716extern int ever_eq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
717extern int ever_eq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
718extern int ever_eq_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
719extern int ever_ne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
720extern int ever_ne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
721extern int ever_ne_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
722
723/* Temporal comparisons */
724
725extern Temporal *teq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
726extern Temporal *teq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
727extern Temporal *tne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
728extern Temporal *tne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
729
730/* Bounding box functions */
731
732extern STBox *tgeo_stboxes(const Temporal *temp, int *count);
733extern STBox *tgeo_space_boxes(const Temporal *temp, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool bitmatrix, bool border_inc, int *count);
734extern STBox *tgeo_space_time_boxes(const Temporal *temp, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool bitmatrix, bool border_inc, int *count);
735extern STBox *tgeo_split_each_n_stboxes(const Temporal *temp, int elem_count, int *count);
736extern STBox *tgeo_split_n_stboxes(const Temporal *temp, int box_count, int *count);
737
738/* Topological functions */
739
740extern bool adjacent_stbox_tspatial(const STBox *box, const Temporal *temp);
741extern bool adjacent_tspatial_stbox(const Temporal *temp, const STBox *box);
742extern bool adjacent_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
743extern bool contained_stbox_tspatial(const STBox *box, const Temporal *temp);
744extern bool contained_tspatial_stbox(const Temporal *temp, const STBox *box);
745extern bool contained_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
746extern bool contains_stbox_tspatial(const STBox *box, const Temporal *temp);
747extern bool contains_tspatial_stbox(const Temporal *temp, const STBox *box);
748extern bool contains_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
749extern bool overlaps_stbox_tspatial(const STBox *box, const Temporal *temp);
750extern bool overlaps_tspatial_stbox(const Temporal *temp, const STBox *box);
751extern bool overlaps_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
752extern bool same_stbox_tspatial(const STBox *box, const Temporal *temp);
753extern bool same_tspatial_stbox(const Temporal *temp, const STBox *box);
754extern bool same_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
755
756/* Position functions */
757
758extern bool above_stbox_tspatial(const STBox *box, const Temporal *temp);
759extern bool above_tspatial_stbox(const Temporal *temp, const STBox *box);
760extern bool above_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
761extern bool after_stbox_tspatial(const STBox *box, const Temporal *temp);
762extern bool after_tspatial_stbox(const Temporal *temp, const STBox *box);
763extern bool after_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
764extern bool back_stbox_tspatial(const STBox *box, const Temporal *temp);
765extern bool back_tspatial_stbox(const Temporal *temp, const STBox *box);
766extern bool back_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
767extern bool before_stbox_tspatial(const STBox *box, const Temporal *temp);
768extern bool before_tspatial_stbox(const Temporal *temp, const STBox *box);
769extern bool before_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
770extern bool below_stbox_tspatial(const STBox *box, const Temporal *temp);
771extern bool below_tspatial_stbox(const Temporal *temp, const STBox *box);
772extern bool below_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
773extern bool front_stbox_tspatial(const STBox *box, const Temporal *temp);
774extern bool front_tspatial_stbox(const Temporal *temp, const STBox *box);
775extern bool front_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
776extern bool left_stbox_tspatial(const STBox *box, const Temporal *temp);
777extern bool left_tspatial_stbox(const Temporal *temp, const STBox *box);
778extern bool left_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
779extern bool overabove_stbox_tspatial(const STBox *box, const Temporal *temp);
780extern bool overabove_tspatial_stbox(const Temporal *temp, const STBox *box);
781extern bool overabove_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
782extern bool overafter_stbox_tspatial(const STBox *box, const Temporal *temp);
783extern bool overafter_tspatial_stbox(const Temporal *temp, const STBox *box);
784extern bool overafter_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
785extern bool overback_stbox_tspatial(const STBox *box, const Temporal *temp);
786extern bool overback_tspatial_stbox(const Temporal *temp, const STBox *box);
787extern bool overback_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
788extern bool overbefore_stbox_tspatial(const STBox *box, const Temporal *temp);
789extern bool overbefore_tspatial_stbox(const Temporal *temp, const STBox *box);
790extern bool overbefore_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
791extern bool overbelow_stbox_tspatial(const STBox *box, const Temporal *temp);
792extern bool overbelow_tspatial_stbox(const Temporal *temp, const STBox *box);
793extern bool overbelow_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
794extern bool overfront_stbox_tspatial(const STBox *box, const Temporal *temp);
795extern bool overfront_tspatial_stbox(const Temporal *temp, const STBox *box);
796extern bool overfront_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
797extern bool overleft_stbox_tspatial(const STBox *box, const Temporal *temp);
798extern bool overleft_tspatial_stbox(const Temporal *temp, const STBox *box);
799extern bool overleft_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
800extern bool overright_stbox_tspatial(const STBox *box, const Temporal *temp);
801extern bool overright_tspatial_stbox(const Temporal *temp, const STBox *box);
802extern bool overright_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
803extern bool right_stbox_tspatial(const STBox *box, const Temporal *temp);
804extern bool right_tspatial_stbox(const Temporal *temp, const STBox *box);
805extern bool right_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2);
806
807/* Ever and always spatial relationships */
808
809extern int acontains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
810extern int acontains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
811extern int acontains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
812extern int adisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
813extern int adisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
814extern int adwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
815extern int adwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist);
816extern int aintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
817extern int aintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
818extern int atouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
819extern int atouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
820extern int atouches_tpoint_geo(const Temporal *temp, const GSERIALIZED *gs);
821extern int econtains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
822extern int econtains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
823extern int econtains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
824extern int ecovers_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp);
825extern int ecovers_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
826extern int ecovers_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
827extern int edisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
828extern int edisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
829extern int edwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist);
830extern int edwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist);
831extern int eintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
832extern int eintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
833extern int etouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
834extern int etouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
835extern int etouches_tpoint_geo(const Temporal *temp, const GSERIALIZED *gs);
836
837/* Spatiotemporal relationships */
838
839extern Temporal *tcontains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
840extern Temporal *tcontains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
841extern Temporal *tcontains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
842extern Temporal *tcovers_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
843extern Temporal *tcovers_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
844extern Temporal *tcovers_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
845extern Temporal *tdisjoint_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
846extern Temporal *tdisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
847extern Temporal *tdisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
848extern Temporal *tdwithin_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, double dist, bool restr, bool atvalue);
849extern Temporal *tdwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist, bool restr, bool atvalue);
850extern Temporal *tdwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist, bool restr, bool atvalue);
851extern Temporal *tintersects_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
852extern Temporal *tintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
853extern Temporal *tintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
854extern Temporal *ttouches_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue);
855extern Temporal *ttouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue);
856extern Temporal *ttouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue);
857
858/* Distance */
859
860extern Temporal *tdistance_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
861extern Temporal *tdistance_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
862extern double nad_stbox_geo(const STBox *box, const GSERIALIZED *gs);
863extern double nad_stbox_stbox(const STBox *box1, const STBox *box2);
864extern double nad_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
865extern double nad_tgeo_stbox(const Temporal *temp, const STBox *box);
866extern double nad_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
867extern TInstant *nai_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
868extern TInstant *nai_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
869extern GSERIALIZED *shortestline_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs);
870extern GSERIALIZED *shortestline_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2);
871
872/* Aggregates */
873
876extern STBox *tspatial_extent_transfn(STBox *box, const Temporal *temp);
877
878/* Tile functions */
879
880extern STBox *stbox_get_space_tile(const GSERIALIZED *point, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin);
881extern STBox *stbox_get_space_time_tile(const GSERIALIZED *point, TimestampTz t, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin);
882extern STBox *stbox_get_time_tile(TimestampTz t, const Interval *duration, TimestampTz torigin);
883extern STBox *stbox_space_tiles(const STBox *bounds, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool border_inc, int *count);
884extern STBox *stbox_space_time_tiles(const STBox *bounds, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool border_inc, int *count);
885extern STBox *stbox_time_tiles(const STBox *bounds, const Interval *duration, TimestampTz torigin, bool border_inc, int *count);
886extern Temporal **tgeo_space_split(const Temporal *temp, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool bitmatrix, bool border_inc, GSERIALIZED ***space_bins, int *count);
887extern Temporal **tgeo_space_time_split(const Temporal *temp, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool bitmatrix, bool border_inc, GSERIALIZED ***space_bins, TimestampTz **time_bins, int *count);
888
889/* Clustering functions */
890
891extern int *geo_cluster_kmeans(const GSERIALIZED **geoms, uint32_t ngeoms, uint32_t k);
892extern uint32_t *geo_cluster_dbscan(const GSERIALIZED **geoms, uint32_t ngeoms, double tolerance, int minpoints);
893extern GSERIALIZED **geo_cluster_intersecting(const GSERIALIZED **geoms, uint32_t ngeoms, int *count);
894extern GSERIALIZED **geo_cluster_within(const GSERIALIZED **geoms, uint32_t ngeoms, double tolerance, int *count);
895
896/*****************************************************************************/
897
898#endif
Temporal * tpoint_angular_difference(const Temporal *temp)
Return the temporal angular difference of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2886
double tpoint_length(const Temporal *temp)
Return the length traversed by a temporal point sequence (set)
Definition: tpoint_spatialfuncs.c:2383
bool tgeo_value_at_timestamptz(const Temporal *temp, TimestampTz t, bool strict, GSERIALIZED **value)
Return the value of a temporal geo at a timestamptz.
Definition: tgeo_restrict.c:133
GSERIALIZED * tgeo_convex_hull(const Temporal *temp)
Return the convex hull of a temporal geo.
Definition: tgeo_spatialfuncs.c:1582
GSERIALIZED * tpoint_twcentroid(const Temporal *temp)
Return the time-weighed centroid of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2609
Temporal * tpoint_speed(const Temporal *temp)
Return the speed of a temporal point sequence (set)
Definition: tpoint_spatialfuncs.c:2405
GSERIALIZED * tgeo_end_value(const Temporal *temp)
Return a copy of the end value of a temporal geo.
Definition: tgeo_meos.c:728
bool bearing_point_point(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double *result)
Return the temporal bearing between two geometry/geography points.
Definition: tpoint_spatialfuncs.c:3133
GSERIALIZED ** tgeo_values(const Temporal *temp, int *count)
Return the array of copies of base values of a temporal geo.
Definition: tgeo_meos.c:763
GSERIALIZED * tgeo_traversed_area(const Temporal *temp, bool unary_union)
Return the traversed area of a temporal geo or the trajectory for a temporal point with discrete or s...
Definition: tgeo_spatialfuncs.c:1608
bool tgeo_value_n(const Temporal *temp, int n, GSERIALIZED **result)
Return a copy of the n-th value of a temporal geo.
Definition: tgeo_meos.c:744
Temporal * tpoint_get_y(const Temporal *temp)
Return the Y coordinates of a temporal point as a temporal float.
Definition: tpoint_spatialfuncs.c:206
Temporal * tgeo_centroid(const Temporal *temp)
Return the centroid of a temporal geo as a temporal point.
Definition: tgeo_spatialfuncs.c:1640
Temporal * tpoint_cumulative_length(const Temporal *temp)
Return the cumulative length traversed by a temporal point.
Definition: tpoint_spatialfuncs.c:2488
Temporal * tpoint_get_z(const Temporal *temp)
Return the Z coordinates of a temporal point as a temporal float.
Definition: tpoint_spatialfuncs.c:219
bool tpoint_is_simple(const Temporal *temp)
Return true if a temporal point does not self-intersect.
Definition: tpoint_spatialfuncs.c:3926
Temporal * bearing_tpoint_tpoint(const Temporal *temp1, const Temporal *temp2)
Return the temporal bearing between two temporal points.
Definition: tpoint_spatialfuncs.c:3186
GSERIALIZED * tgeo_start_value(const Temporal *temp)
Return a copy of the start value of a temporal geo.
Definition: tgeo_meos.c:713
Temporal * tpoint_get_x(const Temporal *temp)
Return the X coordinates of a temporal point as a temporal float.
Definition: tpoint_spatialfuncs.c:193
Temporal * bearing_tpoint_point(const Temporal *temp, const GSERIALIZED *gs, bool invert)
Return the temporal bearing between a temporal point and a point.
Definition: tpoint_spatialfuncs.c:3158
bool tpoint_direction(const Temporal *temp, double *result)
Return the direction of a temporal point.
Definition: tpoint_spatialfuncs.c:2731
GSERIALIZED * tpoint_trajectory(const Temporal *temp, bool unary_union)
Return the trajectory of a temporal point.
Definition: tpoint_spatialfuncs.c:974
Temporal * tpoint_azimuth(const Temporal *temp)
Return the temporal azimuth of a temporal geometry point.
Definition: tpoint_spatialfuncs.c:2865
Temporal * tpoint_tcentroid_finalfn(SkipList *state)
Final function for temporal centroid aggregation of temporal points.
Definition: tgeo_aggfuncs.c:378
SkipList * tpoint_tcentroid_transfn(SkipList *state, Temporal *temp)
Transition function for temporal centroid aggregation of temporal points.
Definition: tgeo_aggfuncs.c:211
STBox * tspatial_extent_transfn(STBox *box, const Temporal *temp)
Transition function for temporal extent aggregation of spatiotemporal values.
Definition: tgeo_aggfuncs.c:255
double geom_length(const GSERIALIZED *gs)
Return the length of a geometry.
Definition: postgis_funcs.c:584
bool geom_azimuth(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double *result)
Return in the last argument the azimuth of a segment defined by two points.
Definition: postgis_funcs.c:829
double geom_perimeter(const GSERIALIZED *gs)
Return the perimeter of a geometry.
Definition: postgis_funcs.c:607
bool geo_is_empty(const GSERIALIZED *g)
Get the SRID of a geometry/geography.
Definition: postgis_funcs.c:303
double geog_area(const GSERIALIZED *g, bool use_spheroid)
Return the area of a geography in square meters.
Definition: postgis_funcs.c:2582
int line_numpoints(const GSERIALIZED *gs)
Return the number of points of a line.
Definition: postgis_funcs.c:4074
double geog_perimeter(const GSERIALIZED *g, bool use_spheroid)
Return the perimeter of a geography in meters.
Definition: postgis_funcs.c:2653
GSERIALIZED * line_point_n(const GSERIALIZED *geom, int n)
Return the n-th point of a line.
Definition: postgis_funcs.c:4027
double geog_length(const GSERIALIZED *g, bool use_spheroid)
Return double length in meters.
Definition: postgis_funcs.c:2708
GSERIALIZED * geog_centroid(const GSERIALIZED *g, bool use_spheroid)
Return the centroid of a geometry.
Definition: postgis_funcs.c:2467
const char * geo_typename(int type)
Return a string representation of a geometry's type.
Definition: postgis_funcs.c:4010
STBox * geo_stboxes(const GSERIALIZED *gs, int *count)
Return an array of spatial boxes from the segments of a (mult)linestring.
Definition: tgeo_boxops.c:1132
STBox * geo_split_each_n_stboxes(const GSERIALIZED *gs, int elem_count, int *count)
Return an array of spatial boxes from the segments of a (multi)linestring @csqlfn Geo_split_each_n_st...
Definition: tgeo_boxops.c:1559
STBox * geo_split_n_stboxes(const GSERIALIZED *gs, int box_count, int *count)
Return an array of N spatial boxes from the segments of a (multi)linestring @sqlfn splitNStboxes()
Definition: tgeo_boxops.c:1376
bool geo_same(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the geometries/geographies are the same.
Definition: postgis_funcs.c:3448
int geo_equals(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the geometries/geographies are equal, false otherwise.
Definition: postgis_funcs.c:2044
GSERIALIZED * geompoint_make3dz(int32_t srid, double x, double y, double z)
Return a 3DZ geometry point constructed from the arguments.
Definition: postgis_funcs.c:244
GSERIALIZED * geompoint_make2d(int32_t srid, double x, double y)
Return a 2D geometry point constructed from the arguments.
Definition: postgis_funcs.c:217
GSERIALIZED * geo_copy(const GSERIALIZED *g)
Return a copy of a geometry.
Definition: postgis_funcs.c:203
GSERIALIZED * geogpoint_make2d(int32_t srid, double x, double y)
Return a 2D geography point constructed from the arguments.
Definition: postgis_funcs.c:230
GSERIALIZED * geogpoint_make3dz(int32_t srid, double x, double y, double z)
Return a 3DZ geography point constructed from the arguments.
Definition: postgis_funcs.c:256
GSERIALIZED * geog_to_geom(const GSERIALIZED *geog)
Return a geometry from a geography.
Definition: postgis_funcs.c:3657
GSERIALIZED * geom_to_geog(const GSERIALIZED *geom)
Return a geography from a geometry.
Definition: postgis_funcs.c:3620
double geom_distance3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return the 3D distance between two geometries.
Definition: postgis_funcs.c:715
double geog_distance(const GSERIALIZED *g1, const GSERIALIZED *g2)
Return the distance between two geographies.
Definition: postgis_funcs.c:2817
double geom_distance2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return the distance between two geometries.
Definition: postgis_funcs.c:691
char * geo_as_hexewkb(const GSERIALIZED *gs, const char *endian)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a geometry/geography.
Definition: postgis_funcs.c:3251
char * geo_out(const GSERIALIZED *gs)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a geometry/geography.
Definition: postgis_funcs.c:3102
GSERIALIZED * geom_in(const char *str, int32 typmod)
Return a geometry from its Well-Known Text (WKT), Well-Known Binary (WKB) or GeoJSON representation.
Definition: postgis_funcs.c:2988
GSERIALIZED * geo_from_ewkb(const uint8_t *wkb, size_t wkb_size, int32 srid)
Return a geometry/geography from its EWKB representation.
Definition: postgis_funcs.c:3284
GSERIALIZED * geog_in(const char *str, int32 typmod)
Return a geography from its Well-Known Text or Binary (WKT or Binary) representation.
Definition: postgis_funcs.c:3530
GSERIALIZED * geo_from_text(const char *wkt, int32_t srid)
Return a geometry/geography from its WKT representation (and optionally a SRID)
Definition: postgis_funcs.c:3122
GSERIALIZED * geog_from_hexewkb(const char *wkt)
Return a geography from its ASCII hex-encoded Well-Known Binary (HexEWKB) representation.
Definition: postgis_funcs.c:3237
char * geo_as_ewkt(const GSERIALIZED *gs, int precision)
Return the Extended Well-Known Text (EWKT) representation of a geometry/geography.
Definition: postgis_funcs.c:3205
GSERIALIZED * geom_from_hexewkb(const char *wkt)
Return a geometry from its ASCII hex-encoded Well-Known Binary (HexEWKB) representation.
Definition: postgis_funcs.c:3222
uint8_t * geo_as_ewkb(const GSERIALIZED *gs, const char *endian, size_t *size)
Return the Extended Well-Known Binary (EWKB) representation of a geometry/geography.
Definition: postgis_funcs.c:3318
GSERIALIZED * geog_from_binary(const char *wkb_bytea)
Return a geography from its binary representation.
Definition: postgis_funcs.c:3588
char * geo_as_geojson(const GSERIALIZED *gs, int option, int precision, const char *srs)
Return the GeoJSON representation of a geometry/geography.
Definition: postgis_funcs.c:3393
GSERIALIZED * geo_from_geojson(const char *geojson)
Return a geometry/geography from its GeoJSON representation.
Definition: postgis_funcs.c:3353
char * geo_as_text(const GSERIALIZED *gs, int precision)
Return the Well-Known Text (WKT) representation of a geometry/geography.
Definition: postgis_funcs.c:3188
bool geom_relate_pattern(const GSERIALIZED *gs1, const GSERIALIZED *gs2, char *patt)
Return true if two geometries satisfy a spatial relationship given by a pattern.
Definition: postgis_funcs.c:1441
bool geom_touches(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the two geometries intersect on a border.
Definition: postgis_funcs.c:1400
bool geom_covers(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the first geometry covers the second one.
Definition: postgis_funcs.c:1413
bool geog_intersects(const GSERIALIZED *gs1, const GSERIALIZED *gs2, bool use_spheroid)
Return true if the geographies intersect.
Definition: postgis_funcs.c:2798
bool geom_dwithin2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double tolerance)
Return true if two geometries are within a distance.
Definition: postgis_funcs.c:760
bool geom_intersects3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the 3D geometries intersect.
Definition: postgis_funcs.c:739
bool geom_intersects2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if two geometries intersects.
Definition: postgis_funcs.c:1374
bool geom_dwithin3d(const GSERIALIZED *gs1, const GSERIALIZED *gs2, double tolerance)
Return true if two geometries are within a distance.
Definition: postgis_funcs.c:786
bool geom_contains(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if the first geometry contains the second one.
Definition: postgis_funcs.c:1387
bool geog_dwithin(const GSERIALIZED *g1, const GSERIALIZED *g2, double tolerance, bool use_spheroid)
Return true if two geographies are within a distance.
Definition: postgis_funcs.c:2754
bool geom_disjoint2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return true if two geometries are disjoint in 2D.
Definition: postgis_funcs.c:1425
GSERIALIZED * geom_difference2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return the difference of two geometries.
Definition: postgis_funcs.c:1515
GSERIALIZED * line_interpolate_point(GSERIALIZED *gs, double distance_fraction, bool repeat)
Interpolate one or several points from a line.
Definition: postgis_funcs.c:3710
GSERIALIZED * geom_unary_union(GSERIALIZED *gs, double prec)
Return the unary union of a geometry.
Definition: postgis_funcs.c:1663
GSERIALIZED * geom_convex_hull(const GSERIALIZED *gs)
Return the convex hull of the geometry.
Definition: postgis_funcs.c:1681
GSERIALIZED * geom_shortestline3d(const GSERIALIZED *gs1, const GSERIALIZED *s2)
Return the shortest line between two 3D geometries.
Definition: postgis_funcs.c:668
GSERIALIZED * geom_shortestline2d(const GSERIALIZED *gs1, const GSERIALIZED *s2)
Return the shortest 2D line between two geometries.
Definition: postgis_funcs.c:646
int * geo_cluster_kmeans(const GSERIALIZED **geoms, uint32_t ngeoms, uint32_t k)
Return an array of integers specifying the cluster number assigned to the input geometries using the ...
Definition: tgeo_spatialfuncs.c:1670
GSERIALIZED * geom_centroid(const GSERIALIZED *gs)
Return the centroid of a geometry.
Definition: postgis_funcs.c:1169
GSERIALIZED * geo_collect_garray(GSERIALIZED **gsarr, int count)
Collect the array of geometries/geographies into a geo collection.
Definition: postgis_funcs.c:895
GSERIALIZED * geo_makeline_garray(GSERIALIZED **gsarr, int count)
Return a line from an array of geometries/geographies.
Definition: postgis_funcs.c:972
GSERIALIZED * geom_array_union(GSERIALIZED **gsarr, int count)
Return the union of an array of geometries.
Definition: postgis_funcs.c:1539
GSERIALIZED * geom_buffer(const GSERIALIZED *gs, double size, char *params)
Return a POLYGON or a MULTIPOLYGON that represents all points whose distance from a geometry/geograph...
Definition: postgis_funcs.c:1757
int geo_ngeos(const GSERIALIZED *gs)
Return the number of composing geometries of a geometry.
Definition: postgis_funcs.c:1087
GSERIALIZED * geom_intersection2d(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Return the intersection of two geometries.
Definition: postgis_funcs.c:1496
GSERIALIZED * geo_geoN(const GSERIALIZED *geom, int n)
Return a copy of the n-th composing geometry of a geometry.
Definition: postgis_funcs.c:1116
uint32_t * geo_cluster_dbscan(const GSERIALIZED **geoms, uint32_t ngeoms, double tolerance, int minpoints)
Return an array of integers specifying the cluster number assigned to the input geometries using the ...
Definition: tgeo_spatialfuncs.c:1712
int geo_npoints(const GSERIALIZED *gs)
Return the number of points of a geometry.
Definition: postgis_funcs.c:1072
GSERIALIZED ** geo_cluster_within(const GSERIALIZED **geoms, uint32_t ngeoms, double tolerance, int *count)
Return an array of GeometryCollections partitioning the input geometries into clusters in which each ...
Definition: tgeo_spatialfuncs.c:1853
GSERIALIZED ** geo_cluster_intersecting(const GSERIALIZED **geoms, uint32_t ngeoms, int *count)
Return an array of GeometryCollections partitioning the input geometries into connected clusters that...
Definition: tgeo_spatialfuncs.c:1772
GSERIALIZED * geom_boundary(const GSERIALIZED *gs)
Return the boundary of a geometry.
Definition: postgis_funcs.c:622
double line_locate_point(const GSERIALIZED *gs1, const GSERIALIZED *gs2)
Locate a point into a line.
Definition: postgis_funcs.c:3944
GSERIALIZED * line_substring(const GSERIALIZED *gs, double from, double to)
Return a subline from a line.
Definition: postgis_funcs.c:3751
GSERIALIZED * geo_transform(GSERIALIZED *geom, int32_t srid_to)
Return the geometry/geography transformed to an SRID.
Definition: postgis_funcs.c:2171
GSERIALIZED * geo_transform_pipeline(const GSERIALIZED *gs, char *pipeline, int32_t srid_to, bool is_forward)
Return a geometry/geography transformed to another SRID using a pipeline.
Definition: postgis_funcs.c:2227
GSERIALIZED * geo_set_srid(const GSERIALIZED *gs, int32_t srid)
Set the SRID of a geometry/geography.
Definition: postgis_funcs.c:289
int32_t geo_srid(const GSERIALIZED *gs)
Get the SRID of a geometry/geography.
Definition: postgis_funcs.c:276
GSERIALIZED * geo_reverse(const GSERIALIZED *gs)
Reverse vertex order of a geometry.
Definition: postgis_funcs.c:810
GSERIALIZED * geo_round(const GSERIALIZED *gs, int maxdd)
Return a geometry with the precision of the coordinates set to a number of decimal places.
Definition: geo_round.c:529
bool left_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is to the left of the second one.
Definition: tspatial_posops_meos.c:512
bool overleft_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend to the right of a spatiotemporal value.
Definition: tspatial_posops_meos.c:78
bool above_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is above a spatiotemporal value.
Definition: tspatial_posops_meos.c:146
bool after_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is after a spatiotemporal value.
Definition: tspatial_posops_meos.c:257
bool overbefore_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is not after a spatiotemporal box.
Definition: tspatial_posops_meos.c:469
bool below_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is below a spatiotemporal value.
Definition: tspatial_posops_meos.c:119
bool right_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is to the right of a temporal point.
Definition: tspatial_posops_meos.c:92
bool back_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is at the back of a spatiotemporal box.
Definition: tspatial_posops_meos.c:427
bool overfront_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend to the back of the second one.
Definition: tspatial_posops_meos.c:630
bool overbelow_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend above a spatiotemporal box.
Definition: tspatial_posops_meos.c:358
bool overbelow_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend above the second one.
Definition: tspatial_posops_meos.c:577
bool overfront_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend to the back of a spatiotemporal value.
Definition: tspatial_posops_meos.c:188
bool overafter_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is not before the second one.
Definition: tspatial_posops_meos.c:708
bool after_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is after a spatiotemporal box.
Definition: tspatial_posops_meos.c:482
bool below_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is below the second one.
Definition: tspatial_posops_meos.c:564
bool right_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is to the right of the second one.
Definition: tspatial_posops_meos.c:538
bool overabove_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend below the second one.
Definition: tspatial_posops_meos.c:604
bool after_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is after the second one.
Definition: tspatial_posops_meos.c:695
bool before_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is before a spatiotemporal box.
Definition: tspatial_posops_meos.c:455
bool overfront_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend to the back of a spatiotemporal box.
Definition: tspatial_posops_meos.c:413
bool back_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is at the back of a temporal point.
Definition: tspatial_posops_meos.c:202
bool front_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is in front of a spatiotemporal value.
Definition: tspatial_posops_meos.c:174
bool above_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is above a spatiotemporal box.
Definition: tspatial_posops_meos.c:371
bool overbefore_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is not after the second one.
Definition: tspatial_posops_meos.c:682
bool before_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is before a spatiotemporal value.
Definition: tspatial_posops_meos.c:230
bool overafter_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is not before a spatiotemporal box.
Definition: tspatial_posops_meos.c:496
bool overback_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend to the front of a spatiotemporal box.
Definition: tspatial_posops_meos.c:441
bool front_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is in front of a spatiotemporal box.
Definition: tspatial_posops_meos.c:399
bool above_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is above the second one.
Definition: tspatial_posops_meos.c:590
bool front_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is in front of the second one.
Definition: tspatial_posops_meos.c:617
bool overabove_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend below a spatiotemporal box.
Definition: tspatial_posops_meos.c:385
bool overbefore_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is not after a spatiotemporal value.
Definition: tspatial_posops_meos.c:244
bool overback_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend to the front of the second one.
Definition: tspatial_posops_meos.c:656
bool overabove_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend below a temporal point.
Definition: tspatial_posops_meos.c:160
bool overright_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend to the left of the second one.
Definition: tspatial_posops_meos.c:551
bool below_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is below a spatiotemporal box.
Definition: tspatial_posops_meos.c:344
bool overback_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend to the front of a spatiotemporal value.
Definition: tspatial_posops_meos.c:216
bool overright_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend to the left of a spatiotemporal box.
Definition: tspatial_posops_meos.c:331
bool overleft_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value does not extend to the right of a spatiotemporal box.
Definition: tspatial_posops_meos.c:303
bool back_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is at the back of the second one.
Definition: tspatial_posops_meos.c:643
bool overbelow_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend above a temporal point.
Definition: tspatial_posops_meos.c:133
bool overafter_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is not before a spatiotemporal value.
Definition: tspatial_posops_meos.c:271
bool before_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value is before the second one.
Definition: tspatial_posops_meos.c:669
bool overright_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box does not extend to the left of a spatiotemporal value.
Definition: tspatial_posops_meos.c:106
bool right_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is to the right of a spatiotemporal box.
Definition: tspatial_posops_meos.c:317
bool left_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is to the left of a temporal point.
Definition: tspatial_posops_meos.c:64
bool left_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if a spatiotemporal value is to the left of a spatiotemporal box.
Definition: tspatial_posops_meos.c:289
bool overleft_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the first spatiotemporal value does not extend to the right of the second one.
Definition: tspatial_posops_meos.c:525
STBox * tgeo_split_each_n_stboxes(const Temporal *temp, int elem_count, int *count)
Return an array of spatiotemporal boxes obtained by merging consecutive instants or segments of a tem...
Definition: tgeo_boxops.c:913
STBox * tgeo_split_n_stboxes(const Temporal *temp, int box_count, int *count)
Return an array of N spatiotemporal boxes obtained by merging consecutive instants or segments of a t...
Definition: tgeo_boxops.c:740
STBox * tgeo_stboxes(const Temporal *temp, int *count)
Return an array of spatiotemporal boxes from the instants or segments of a temporal geo,...
Definition: tgeo_boxops.c:501
bool same_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box and the spatiotemporal box of a spatiotemporal value are equal in...
Definition: tspatial_topops_meos.c:200
bool adjacent_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the spatiotemporal boxes of two spatiotemporal values are adjacent.
Definition: tspatial_topops_meos.c:272
bool contained_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the spatiotemporal box of the first spatiotemporal value is contained in the one of th...
Definition: tspatial_topops_meos.c:182
bool overlaps_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if the spatiotemporal box of a spatiotemporal value and a spatiotemporal box overlap.
Definition: tspatial_topops_meos.c:79
bool overlaps_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the spatiotemporal boxes of two spatiotemporal values overlap.
Definition: tspatial_topops_meos.c:92
bool contains_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if the spatiotemporal box of a spatiotemporal value contains a spatiotemporal box.
Definition: tspatial_topops_meos.c:124
bool adjacent_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if the spatiotemporal box of a spatiotemporal value and a spatiotemporal box are adjacent...
Definition: tspatial_topops_meos.c:259
bool adjacent_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box and the spatiotemporal box of a spatiotemporal value are adjacent...
Definition: tspatial_topops_meos.c:245
bool contains_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box contains the one of a temporal point.
Definition: tspatial_topops_meos.c:110
bool contained_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box is contained in the spatiotemporal box of a spatiotemporal value.
Definition: tspatial_topops_meos.c:155
bool same_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the spatiotemporal boxes of two spatiotemporal values are equal in the common dimensio...
Definition: tspatial_topops_meos.c:227
bool contained_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if the spatiotemporal box of a spatiotemporal value is contained in the spatiotemporal bo...
Definition: tspatial_topops_meos.c:169
bool same_tspatial_stbox(const Temporal *temp, const STBox *box)
Return true if the spatiotemporal box of a spatiotemporal value and a spatiotemporal box are equal in...
Definition: tspatial_topops_meos.c:214
bool overlaps_stbox_tspatial(const STBox *box, const Temporal *temp)
Return true if a spatiotemporal box and the spatiotemporal box of a spatiotemporal value overlap.
Definition: tspatial_topops_meos.c:65
bool contains_tspatial_tspatial(const Temporal *temp1, const Temporal *temp2)
Return true if the spatiotemporal box of the first spatiotemporal value contains the one of the secon...
Definition: tspatial_topops_meos.c:137
double stbox_area(const STBox *box, bool spheroid)
Return the area of a spatiotemporal box.
Definition: stbox.c:1319
bool stbox_xmax(const STBox *box, double *result)
Return in the last argument the maximum X value of a spatiotemporal box.
Definition: stbox.c:1139
bool stbox_hasz(const STBox *box)
Return true if a spatiotemporal box has Z dimension.
Definition: stbox.c:1073
bool stbox_zmax(const STBox *box, double *result)
Return in the last argument the maximum Z value of a spatiotemporal box.
Definition: stbox.c:1219
bool stbox_tmax_inc(const STBox *box, bool *result)
Return in the last argument whether the maximum T value of a spatiotemporal box is inclusive.
Definition: stbox.c:1299
bool stbox_xmin(const STBox *box, double *result)
Return in the last argument the minimum X value of a spatiotemporal box.
Definition: stbox.c:1118
bool stbox_tmin_inc(const STBox *box, bool *result)
Return in the last argument whether the maximum T value of a spatiotemporal box is inclusive.
Definition: stbox.c:1259
bool stbox_hast(const STBox *box)
Return true if a spatiotemporal box has time dimension.
Definition: stbox.c:1087
double stbox_volume(const STBox *box)
Return the volume of a 3D spatiotemporal box.
Definition: stbox.c:1343
double stbox_perimeter(const STBox *box, bool spheroid)
Return the permieter of the spatiotemporal box.
Definition: stbox.c:1364
bool stbox_ymin(const STBox *box, double *result)
Return in the last argument the minimum Y value of a spatiotemporal box.
Definition: stbox.c:1159
bool stbox_ymax(const STBox *box, double *result)
Return in the last argument the maximum Y value of a spatiotemporal box.
Definition: stbox.c:1179
bool stbox_isgeodetic(const STBox *box)
Return true if a spatiotemporal box is geodetic.
Definition: stbox.c:1101
bool stbox_tmax(const STBox *box, TimestampTz *result)
Return in the last argument the maximum T value of a spatiotemporal box.
Definition: stbox.c:1279
bool stbox_zmin(const STBox *box, double *result)
Return in the last argument the minimum Z value of a spatiotemporal box.
Definition: stbox.c:1199
bool stbox_tmin(const STBox *box, TimestampTz *result)
Return in the last argument the minimum T value of a spatiotemporal box.
Definition: stbox.c:1239
bool stbox_hasx(const STBox *box)
Return true if a spatiotemporal box has value dimension.
Definition: stbox.c:1059
bool stbox_eq(const STBox *box1, const STBox *box2)
Return true if the spatiotemporal boxes are equal.
Definition: stbox.c:2414
int stbox_cmp(const STBox *box1, const STBox *box2)
Return -1, 0, or 1 depending on whether the first spatiotemporal box is less than,...
Definition: stbox.c:2448
bool stbox_ne(const STBox *box1, const STBox *box2)
Return true if the spatiotemporal boxes are different.
Definition: stbox.c:2435
bool stbox_lt(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is less than the second one.
Definition: stbox.c:2520
bool stbox_ge(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is greater than or equal to the second one.
Definition: stbox.c:2546
bool stbox_le(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is less than or equal to the second one.
Definition: stbox.c:2533
bool stbox_gt(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is greater than the second one.
Definition: stbox.c:2559
STBox * stbox_make(bool hasx, bool hasz, bool geodetic, int32 srid, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax, const Span *s)
Return a spatiotemporal box from the arguments.
Definition: stbox.c:328
STBox * geo_timestamptz_to_stbox(const GSERIALIZED *gs, TimestampTz t)
Return a spatiotemporal box from a geometry/geography and a timestamptz.
Definition: stbox.c:423
STBox * geo_tstzspan_to_stbox(const GSERIALIZED *gs, const Span *s)
Return a spatiotemporal box from a geometry/geography and a timestamptz span.
Definition: stbox.c:447
STBox * stbox_copy(const STBox *box)
Return a copy of a spatiotemporal box.
Definition: stbox.c:403
Span * stbox_to_tstzspan(const STBox *box)
Convert a spatiotemporal box into a timestamptz span.
Definition: stbox.c:644
STBox * gbox_to_stbox(const GBOX *box)
Convert a GBOX into a spatiotemporal box.
Definition: stbox.c:695
STBox * tstzset_to_stbox(const Set *s)
Convert a timestamptz set into a spatiotemporal box.
Definition: stbox.c:928
GSERIALIZED * stbox_to_geo(const STBox *box)
Return a spatiotemporal box converted as a geometry/geography.
Definition: stbox.c:628
STBox * timestamptz_to_stbox(TimestampTz t)
Convert a timestamptz into a spatiotemporal box.
Definition: stbox.c:895
STBox * tstzspan_to_stbox(const Span *s)
Convert a timestamptz span into a spatiotemporal box.
Definition: stbox.c:963
GBOX * stbox_to_gbox(const STBox *box)
Convert a spatiotemporal box into a GBOX
Definition: stbox.c:530
STBox * box3d_to_stbox(const BOX3D *box)
Convert a BOX3D into a spatiotemporal box.
Definition: stbox.c:711
STBox * tstzspanset_to_stbox(const SpanSet *ss)
Convert a timestamptz span set into a spatiotemporal box.
Definition: stbox.c:998
BOX3D * stbox_to_box3d(const STBox *box)
Convert a spatiotemporal box into a BOX3D
Definition: stbox.c:548
STBox * spatialset_to_stbox(const Set *s)
Convert a spatiotemporal set into a spatiotemporal box.
Definition: tspatial.c:406
STBox * geo_to_stbox(const GSERIALIZED *gs)
Convert a geometry/geography into a spatiotemporal box.
Definition: stbox.c:838
STBox * stbox_from_wkb(const uint8_t *wkb, size_t size)
Return a spatiotemporal box from its Well-Known Binary (WKB) representation.
Definition: stbox.c:249
STBox * stbox_in(const char *str)
Return a spatiotemporal box from its Well-Known Text (WKT) representation.
Definition: stbox.c:141
uint8_t * stbox_as_wkb(const STBox *box, uint8_t variant, size_t *size_out)
Return the Well-Known Binary (WKB) representation of a spatiotemporal box.
Definition: stbox.c:284
char * stbox_as_hexwkb(const STBox *box, uint8_t variant, size_t *size)
Return the ASCII hex-encoded Well-Known Binary (HexWKB) representation of a spatiotemporal box.
Definition: stbox.c:302
STBox * stbox_from_hexwkb(const char *hexwkb)
Return a spatiotemporal box from its ASCII hex-encoded Well-Known Binary (WKB) representation.
Definition: stbox.c:264
char * stbox_out(const STBox *box, int maxdd)
Return the Well-Known Text (WKT) representation of a spatiotemporal box.
Definition: stbox.c:157
bool overback_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend to the front of the second one.
Definition: stbox.c:2126
bool overbelow_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend above the second one.
Definition: stbox.c:2019
bool left_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is to the left of the second one.
Definition: stbox.c:1930
bool right_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is to the right of the second one.
Definition: stbox.c:1966
bool overabove_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend below the second one.
Definition: stbox.c:2054
bool overright_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend to the left of the second one.
Definition: stbox.c:1984
bool overafter_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is not before the second one.
Definition: stbox.c:2196
bool back_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is at the back of the second one.
Definition: stbox.c:2108
bool after_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is after the second one.
Definition: stbox.c:2178
bool front_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is in front of the the second one.
Definition: stbox.c:2072
bool overfront_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend to the back of the second one.
Definition: stbox.c:2090
bool above_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is above the second one.
Definition: stbox.c:2036
bool overbefore_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is not after the second one.
Definition: stbox.c:2161
bool before_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is before the second one.
Definition: stbox.c:2143
bool below_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is below the second one.
Definition: stbox.c:2001
bool overleft_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box does not extend to the right of the second one.
Definition: stbox.c:1948
STBox * union_stbox_stbox(const STBox *box1, const STBox *box2, bool strict)
Return the union of the spatiotemporal boxes.
Definition: stbox.c:2218
STBox * intersection_stbox_stbox(const STBox *box1, const STBox *box2)
Return the intersection of the spatiotemporal boxes.
Definition: stbox.c:2302
STBox * stbox_set_srid(const STBox *box, int32_t srid)
Return a spatiotemporal box with the coordinates set to an SRID.
Definition: stbox.c:1597
int32_t stbox_srid(const STBox *box)
Return the SRID of a spatiotemporal box.
Definition: stbox.c:1580
STBox * stbox_transform_pipeline(const STBox *box, const char *pipelinestr, int32_t srid, bool is_forward)
Return a spatiotemporal box transformed to another SRID using a pipeline.
Definition: stbox.c:1701
STBox * stbox_transform(const STBox *box, int32_t srid)
Return a spatiotemporal box transformed to another SRID.
Definition: stbox.c:1671
bool adjacent_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the spatiotemporal boxes are adjacent.
Definition: stbox.c:1867
bool overlaps_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the spatiotemporal boxes overlap @csqlfn Overlaps_stbox_stbox()
Definition: stbox.c:1815
bool contained_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box is contained in the second one.
Definition: stbox.c:1804
bool contains_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the first spatiotemporal box contains the second one.
Definition: stbox.c:1777
bool same_stbox_stbox(const STBox *box1, const STBox *box2)
Return true if the spatiotemporal boxes are equal in the common dimensions.
Definition: stbox.c:1842
STBox * stbox_quad_split(const STBox *box, int *count)
Return a spatiotemporal box split with respect to its space bounds in four quadrants (2D) or eight oc...
Definition: stbox.c:2343
STBox * stbox_round(const STBox *box, int maxdd)
Return a spatiotemporal box with the precision of the coordinates set to a number of decimal places.
Definition: stbox.c:1417
STBox * stbox_get_space(const STBox *box)
Return a spatiotemporal box with only the space dimension @csqlfn Stbox_get_space()
Definition: stbox.c:1493
STBox * stbox_expand_time(const STBox *box, const Interval *interv)
Return a spatiotemporal box with the time span expanded/decreased by an interval.
Definition: stbox.c:1554
STBox * stbox_shift_scale_time(const STBox *box, const Interval *shift, const Interval *duration)
Return a spatiotemporal box with the time span expanded and/or scaled by two intervals.
Definition: stbox.c:1465
STBox * stboxarr_round(const STBox *boxarr, int count, int maxdd)
Return an array of spatiotemporal boxes with the precision of the coordinates set to a number of deci...
Definition: stbox.c:1439
STBox * stbox_expand_space(const STBox *box, double d)
Return a spatiotemporal box with the space bounds expanded/decreased by a double.
Definition: stbox.c:1516
int always_ne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return true if a geo is always different from a temporal geo.
Definition: tgeo_compops.c:177
int ever_eq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return true if a geo is ever equal to a temporal geo.
Definition: tgeo_compops.c:99
int ever_eq_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal geos are ever equal.
Definition: tgeo_compops.c:204
int ever_ne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return true if a geo is ever different from a temporal geo.
Definition: tgeo_compops.c:125
int always_eq_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal geos are always equal.
Definition: tgeo_compops.c:228
int ever_eq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return true if a temporal geo is ever equal to a geo.
Definition: tgeo_compops.c:112
int ever_ne_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal geos are ever different.
Definition: tgeo_compops.c:216
int always_eq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return true if a geo is always equal to a temporal geo.
Definition: tgeo_compops.c:151
int always_eq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return true if a temporal geo is always equal to a geo.
Definition: tgeo_compops.c:164
int always_ne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return true if a temporal geo is always different from a geo.
Definition: tgeo_compops.c:190
int always_ne_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return true if two temporal geos are always different.
Definition: tgeo_compops.c:240
int ever_ne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return true if a temporal geo is ever different from a geo.
Definition: tgeo_compops.c:138
Temporal * tne_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the temporal inequality of a temporal geo and a geo.
Definition: tgeo_compops.c:336
Temporal * teq_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the temporal equality of a temporal geo and a geo.
Definition: tgeo_compops.c:323
Temporal * teq_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return the temporal equality of a geo and a temporal geo.
Definition: tgeo_compops.c:295
Temporal * tne_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return the temporal inequality of a geo and a temporal geo.
Definition: tgeo_compops.c:308
TSequence * tgeoseq_from_base_tstzset(const GSERIALIZED *gs, const Set *s)
Return a temporal geo discrete sequence from a geometry/geography and a timestamptz set.
Definition: tgeo_meos.c:546
TInstant * tgeoinst_make(const GSERIALIZED *gs, TimestampTz t)
Return a temporal instant geo from a geometry and a timestamptz.
Definition: tgeo.c:76
TSequence * tgeoseq_from_base_tstzspan(const GSERIALIZED *gs, const Span *s, interpType interp)
Return a temporal geo sequence from a geometry/geography and a timestamptz span.
Definition: tgeo_meos.c:589
TSequence * tpointseq_from_base_tstzspan(const GSERIALIZED *gs, const Span *s, interpType interp)
Return a temporal point sequence from a point and a timestamptz span.
Definition: tgeo_meos.c:567
TSequence * tpointseq_make_coords(const double *xcoords, const double *ycoords, const double *zcoords, const TimestampTz *times, int count, int32 srid, bool geodetic, bool lower_inc, bool upper_inc, interpType interp, bool normalize)
Return a temporal sequence from arrays of coordinates, one per dimension, and timestamps.
Definition: tsequence.c:1130
Temporal * tgeo_from_base_temp(const GSERIALIZED *gs, const Temporal *temp)
Return a temporal geo from a geometry/geography and the time frame of another temporal value.
Definition: tgeo_meos.c:696
Temporal * tpoint_from_base_temp(const GSERIALIZED *gs, const Temporal *temp)
Return a temporal point from a point and the time frame of another temporal value.
Definition: tgeo_meos.c:683
TSequenceSet * tpointseqset_from_base_tstzspanset(const GSERIALIZED *gs, const SpanSet *ss, interpType interp)
Return a temporal point sequence set from a point and a timestamptz span set.
Definition: tgeo_meos.c:613
TInstant * tpointinst_make(const GSERIALIZED *gs, TimestampTz t)
Return a temporal point instant from a point and a timestamptz.
Definition: tgeo.c:56
TSequenceSet * tgeoseqset_from_base_tstzspanset(const GSERIALIZED *gs, const SpanSet *ss, interpType interp)
Return a temporal geo sequence set from a point and a timestamptz span set.
Definition: tgeo_meos.c:635
TSequence * tpointseq_from_base_tstzset(const GSERIALIZED *gs, const Set *s)
Return a temporal geometry point discrete sequence from a point and a timestamptz set.
Definition: tgeo_meos.c:527
Temporal * geomeas_to_tpoint(const GSERIALIZED *gs)
Return a geometry/geography with M measure encoding timestamps transformed to a temporal point.
Definition: tpoint_spatialfuncs.c:1710
bool tpoint_tfloat_to_geomeas(const Temporal *tpoint, const Temporal *measure, bool segmentize, GSERIALIZED **result)
Return a geometry/geography with M measure from a temporal point and optionally a temporal float.
Definition: tpoint_spatialfuncs.c:1424
Temporal * tgeometry_to_tgeompoint(const Temporal *temp)
Return a temporal geometry point from a temporal geometry.
Definition: tgeo_spatialfuncs.c:1264
bool tpoint_as_mvtgeom(const Temporal *temp, const STBox *bounds, int32_t extent, int32_t buffer, bool clip_geom, GSERIALIZED **gsarr, int64 **timesarr, int *count)
Return a temporal point transformed to Mapbox Vector Tile format.
Definition: tpoint_spatialfuncs.c:2227
Temporal * tgeompoint_to_tgeometry(const Temporal *temp)
Return a temporal geometry from a temporal geometry point.
Definition: tgeo_spatialfuncs.c:1291
STBox * tspatial_to_stbox(const Temporal *temp)
Convert a spatiotemporal value into a spatiotemporal box.
Definition: tspatial.c:471
Temporal * tgeogpoint_to_tgeography(const Temporal *temp)
Return a temporal geography from a temporal geography point.
Definition: tgeo_spatialfuncs.c:1304
Temporal * tgeography_to_tgeogpoint(const Temporal *temp)
Return a temporal geography point from a temporal geography.
Definition: tgeo_spatialfuncs.c:1277
Temporal * tgeography_to_tgeometry(const Temporal *temp)
Return a temporal geometry from to a temporal geography.
Definition: tgeo_spatialfuncs.c:1075
Temporal * tgeometry_to_tgeography(const Temporal *temp)
Return a temporal geography from a temporal geometry.
Definition: tgeo_spatialfuncs.c:1062
GSERIALIZED * shortestline_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return the line connecting the nearest approach point between two temporal geos.
Definition: tgeo_distance.c:969
double nad_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the nearest approach distance between a temporal geo and a geometry/geography.
Definition: tgeo_distance.c:732
double nad_stbox_geo(const STBox *box, const GSERIALIZED *gs)
Return the nearest approach distance between a spatiotemporal box and a geometry/geography.
Definition: tgeo_distance.c:762
double nad_tgeo_stbox(const Temporal *temp, const STBox *box)
Return the nearest approach distance between a temporal geo and a spatiotemporal box.
Definition: tgeo_distance.c:824
Temporal * tdistance_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the temporal distance between a temporal geo and a geometry/geography.
Definition: tgeo_distance.c:381
GSERIALIZED * shortestline_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the line connecting the nearest approach point between a temporal geo and a geometry/geography...
Definition: tgeo_distance.c:933
Temporal * tdistance_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return the temporal distance between two temporal geos.
Definition: tgeo_distance.c:413
TInstant * nai_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach instant between two temporal geos.
Definition: tgeo_distance.c:695
double nad_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return the nearest approach distance between two temporal geos.
Definition: tgeo_distance.c:870
double nad_stbox_stbox(const STBox *box1, const STBox *box2)
Return the nearest approach distance between two spatiotemporal boxes.
Definition: tgeo_distance.c:786
TInstant * nai_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return the nearest approach instant between a temporal geo and a geometry/geography.
Definition: tgeo_distance.c:656
Temporal * tgeogpoint_from_mfjson(const char *str)
Return a temporal geography point from its MF-JSON representation.
Definition: tgeo_meos.c:465
Temporal * tgeogpoint_in(const char *str)
Return a temporal geography point from its Well-Known Text (WKT) representation.
Definition: tspatial_parser.c:662
Temporal * tgeompoint_in(const char *str)
Return a temporal geometry point from its Well-Known Text (WKT) representation.
Definition: tspatial_parser.c:648
char * tspatial_as_ewkt(const Temporal *temp, int maxdd)
Return the Extended Well-Known Text (EWKT) representation of a spatiotemporal value.
Definition: tspatial.c:285
Temporal * tgeometry_from_mfjson(const char *str)
Return a temporal geometry from its MF-JSON representation.
Definition: tgeo_meos.c:477
Temporal * tgeompoint_from_mfjson(const char *str)
Return a temporal geometry point from its MF-JSON representation.
Definition: tgeo_meos.c:452
char * tgeo_out(const Temporal *temp, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal geo.
Definition: tgeo_meos.c:506
char * tspatial_as_text(const Temporal *temp, int maxdd)
Return the Well-Known Text (WKT) representation of a temporal spatial value.
Definition: tspatial.c:255
Temporal * tgeography_in(const char *str)
Return a temporal geography from its Well-Known Text (WKT) representation.
Definition: tspatial_parser.c:689
Temporal * tgeometry_in(const char *str)
Return a temporal geometry from its Well-Known Text (WKT) representation.
Definition: tspatial_parser.c:676
Temporal * tgeography_from_mfjson(const char *mfjson)
Return a temporal geography from its MF-JSON representation.
Definition: tgeo_meos.c:490
int ecovers_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return 1 if a geometry ever covers a temporal geo, 0 if not, and -1 on error or if the geometry is em...
Definition: tgeo_spatialrels.c:806
int adisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry and a geometry are always disjoint, 0 if not, and -1 on error or if t...
Definition: tgeo_spatialrels.c:1007
int edwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist)
Return 1 if two temporal geos are ever within a distance, 0 if not, -1 on error or if they do not int...
Definition: tgeo_spatialrels.c:1715
int eintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal geos ever intersect, 0 if not, and -1 on error or if the temporal geos do no...
Definition: tgeo_spatialrels.c:1173
int atouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal geometry always touches another one, 0 if not, and -1 on error.
Definition: tgeo_spatialrels.c:1426
int edisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal geos are ever disjoint, 0 if not, and -1 on error or if the temporal geos do...
Definition: tgeo_spatialrels.c:1044
int acontains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return 1 if a geometry always contains a temporal geo, 0 if not, and -1 on error or if the geometry i...
Definition: tgeo_spatialrels.c:644
int atouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry always touches a geometry, 0 if not, and -1 on error or if the geomet...
Definition: tgeo_spatialrels.c:1360
int adwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist)
Return 1 if a geometry and a temporal geo are always within a distance, 0 if not, -1 on error or if t...
Definition: tgeo_spatialrels.c:1499
int acontains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a geometry always contains a temporal geo, 0 if not, and -1 on error or if the geometry i...
Definition: tgeo_spatialrels.c:672
int aintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal geos always intersect, 0 if not, and -1 on error or if the temporal geos do ...
Definition: tgeo_spatialrels.c:1186
int adisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if the temporal geos are always disjoint, 0 if not, and -1 on error or if the temporal geos ...
Definition: tgeo_spatialrels.c:1057
int ecovers_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry ever covers a geo, 0 if not, and -1 on error or if the geometry is em...
Definition: tgeo_spatialrels.c:834
int acontains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal geometry ever contains another one, 0 if not, and -1 on error.
Definition: tgeo_spatialrels.c:726
int edisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry and a geometry are ever disjoint, 0 if not, and -1 on error or if the...
Definition: tgeo_spatialrels.c:993
int eintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry ever intersects a temporal geometry, 0 if not, and -1 on error or if ...
Definition: tgeo_spatialrels.c:1121
int econtains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp)
Return 1 if a geometry ever contains a temporal geo, 0 if not, and -1 on error or if the geometry is ...
Definition: tgeo_spatialrels.c:630
int econtains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry ever contains a geo, 0 if not, and -1 on error or if the geometry is ...
Definition: tgeo_spatialrels.c:658
int aintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry always intersects a temporal geometry, 0 if not, and -1 on error or i...
Definition: tgeo_spatialrels.c:1135
int etouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal geometry ever touches a geometry, 0 if not, and -1 on error or if the geometry...
Definition: tgeo_spatialrels.c:1346
int edwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist)
Return 1 if a geometry and a temporal geo are ever within the given distance, 0 if not,...
Definition: tgeo_spatialrels.c:1484
int econtains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal geometry ever contains another one, 0 if not, and -1 on error.
Definition: tgeo_spatialrels.c:713
int ecovers_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal geometry ever covers another one, 0 if not, and -1 on error.
Definition: tgeo_spatialrels.c:889
int adwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist)
Return 1 if two temporal geos are always within a distance, 0 if not, -1 on error or if they do not i...
Definition: tgeo_spatialrels.c:1729
int etouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2)
Return 1 if a temporal geometry ever touches another one, 0 if not, and -1 on error.
Definition: tgeo_spatialrels.c:1413
Temporal * tcovers_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a spatiotemporal value covers another one.
Definition: tspatial_tempspatialrels.c:848
Temporal * tcontains_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a geometry contains a temporal geometry.
Definition: tspatial_tempspatialrels.c:692
Temporal * tintersects_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo and a geometry intersect.
Definition: tspatial_tempspatialrels.c:924
Temporal * tcovers_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a geometry covers a temporal geometry.
Definition: tspatial_tempspatialrels.c:806
Temporal * tcontains_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geometry contains a geometry.
Definition: tspatial_tempspatialrels.c:753
Temporal * ttouches_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a geometry touches a temporal geo.
Definition: tspatial_tempspatialrels.c:1046
Temporal * ttouches_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geometry touches another one.
Definition: tspatial_tempspatialrels.c:1067
Temporal * tintersects_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal geos intersect.
Definition: tspatial_tempspatialrels.c:957
Temporal * tcovers_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geometry covers a geometry.
Definition: tspatial_tempspatialrels.c:828
Temporal * tdwithin_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo and a geometry are within a distance.
Definition: tspatial_tempspatialrels.c:1565
Temporal * tdisjoint_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo and a geometry are disjoint.
Definition: tspatial_tempspatialrels.c:870
Temporal * tdwithin_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, double dist, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal geos are within a distance.
Definition: tspatial_tempspatialrels.c:1681
Temporal * ttouches_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo touches a geometry.
Definition: tspatial_tempspatialrels.c:986
Temporal * tintersects_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo and a geometry intersect.
Definition: tspatial_tempspatialrels.c:941
Temporal * tcontains_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geometry contains another one.
Definition: tspatial_tempspatialrels.c:773
Temporal * tdisjoint_tgeo_geo(const Temporal *temp, const GSERIALIZED *gs, bool restr, bool atvalue)
Return a temporal Boolean that states whether a temporal geo and a geometry are disjoint.
Definition: tspatial_tempspatialrels.c:887
Temporal * tdisjoint_tgeo_tgeo(const Temporal *temp1, const Temporal *temp2, bool restr, bool atvalue)
Return a temporal Boolean that states whether two temporal geos are disjoint.
Definition: tspatial_tempspatialrels.c:903
Temporal * tpoint_at_geom(const Temporal *temp, const GSERIALIZED *gs, const Span *zspan)
Return a temporal point restricted to a geometry.
Definition: tgeo_restrict.c:2121
Temporal * tpoint_minus_value(const Temporal *temp, GSERIALIZED *gs)
Return a temporal point restricted to the complement of a point.
Definition: tgeo_restrict.c:100
Temporal * tgeo_at_geom(const Temporal *temp, const GSERIALIZED *gs)
Return a temporal geo restricted to a geometry.
Definition: tgeo_restrict.c:2134
Temporal * tpoint_at_value(const Temporal *temp, GSERIALIZED *gs)
Return a temporal point restricted to a point.
Definition: tgeo_restrict.c:70
Temporal * tgeo_at_stbox(const Temporal *temp, const STBox *box, bool border_inc)
Return a temporal geo restricted to a spatiotemporal box.
Definition: tgeo_restrict.c:1179
Temporal * tgeo_minus_geom(const Temporal *temp, const GSERIALIZED *gs)
Return a temporal geo restricted to the complement of a geometry.
Definition: tgeo_restrict.c:2164
Temporal * tgeo_at_value(const Temporal *temp, GSERIALIZED *gs)
Return a temporal geo restricted to a geometry/geography.
Definition: tgeo_restrict.c:85
Temporal * tgeo_minus_stbox(const Temporal *temp, const STBox *box, bool border_inc)
Return a temporal geo restricted to the complement of a spatiotemporal box.
Definition: tgeo_restrict.c:1194
Temporal * tgeo_minus_value(const Temporal *temp, GSERIALIZED *gs)
Return a temporal geo restricted to the complement of a geo.
Definition: tgeo_restrict.c:115
Temporal * tpoint_minus_geom(const Temporal *temp, const GSERIALIZED *gs, const Span *zspan)
Return a temporal point restricted to the complement of a geometry.
Definition: tgeo_restrict.c:2150
GSERIALIZED ** geoset_values(const Set *s)
Return an array of copies of the values of a geo set.
Definition: geoset_meos.c:204
GSERIALIZED * geoset_start_value(const Set *s)
Return a copy of the start value of a geo set.
Definition: geoset_meos.c:153
GSERIALIZED * geoset_end_value(const Set *s)
Return a copy of the end value of a geo set.
Definition: geoset_meos.c:168
bool geoset_value_n(const Set *s, int n, GSERIALIZED **result)
Return in the last argument a copy of the n-th value of a geo set.
Definition: geoset_meos.c:186
Set * geoset_make(const GSERIALIZED **values, int count)
Return a geo set from an array of values.
Definition: geoset_meos.c:90
Set * geo_to_set(const GSERIALIZED *gs)
Convert a geometry/geography into a geo set.
Definition: geoset_meos.c:134
Set * geogset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: geoset_meos.c:71
char * spatialset_as_ewkt(const Set *set, int maxdd)
Return the Extended Well-Known Text (EWKT) representation of a geo set.
Definition: tspatial.c:197
char * spatialset_as_text(const Set *set, int maxdd)
Return the Well-Known Text (WKT) representation of a spatial set @csqlfn Spatialset_as_text()
Definition: tspatial.c:184
Set * geomset_in(const char *str)
Return a set from its Well-Known Text (WKT) representation.
Definition: geoset_meos.c:57
Set * intersection_geo_set(const GSERIALIZED *gs, const Set *s)
Return the intersection of a geometry/geography and a set.
Definition: geoset_meos.c:319
Set * union_geo_set(const GSERIALIZED *gs, const Set *s)
Return the union of a geometry/geography and a set.
Definition: geoset_meos.c:290
Set * intersection_set_geo(const Set *s, const GSERIALIZED *gs)
Return the intersection of a set and a geometry/geography.
Definition: geoset_meos.c:303
Set * union_set_geo(const Set *s, const GSERIALIZED *gs)
Return the union of a set and a geometry/geography.
Definition: geoset_meos.c:274
Set * minus_geo_set(const GSERIALIZED *gs, const Set *s)
Return the difference of a geometry/geography and a set.
Definition: geoset_meos.c:332
bool contains_set_geo(const Set *s, GSERIALIZED *gs)
Return true if a set contains a geometry/geography.
Definition: geoset_meos.c:242
Set * geo_union_transfn(Set *state, const GSERIALIZED *gs)
Transition function for set union aggregate of geometries/geographies.
Definition: geoset_meos.c:367
bool contained_geo_set(const GSERIALIZED *gs, const Set *s)
Return true if a geometry/geography is contained in a set.
Definition: geoset_meos.c:258
Set * minus_set_geo(const Set *s, const GSERIALIZED *gs)
Return the difference of a set and a geometry/geography.
Definition: geoset_meos.c:348
int32_t spatialset_srid(const Set *s)
Return the SRID of a spatial set.
Definition: tspatial_srid.c:150
Set * spatialset_transform(const Set *s, int32_t srid)
Return a spatial set transformed to another SRID.
Definition: tspatial_srid.c:512
Set * spatialset_transform_pipeline(const Set *s, const char *pipelinestr, int32_t srid, bool is_forward)
Return a spatial set transformed to another SRID using a pipeline.
Definition: tspatial_srid.c:544
Set * spatialset_set_srid(const Set *s, int32_t srid)
Return a spatial set with the coordinates set to an SRID.
Definition: tspatial_srid.c:166
Temporal * tspatial_set_srid(const Temporal *temp, int32_t srid)
Return a spatiotemporal value with the coordinates set to an SRID.
Definition: tspatial_srid.c:304
int32_t tspatial_srid(const Temporal *temp)
Return the SRID of a spatiotemporal value.
Definition: tspatial_srid.c:215
Temporal * tspatial_transform_pipeline(const Temporal *temp, const char *pipelinestr, int32_t srid, bool is_forward)
Return a spatiotemporal value transformed to another SRID using a pipeline.
Definition: tspatial_srid.c:706
Temporal * tspatial_transform(const Temporal *temp, int32_t srid)
Return a spatiotemporal value transformed to another SRID.
Definition: tspatial_srid.c:671
STBox * stbox_get_space_tile(const GSERIALIZED *point, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin)
Return a tile in the spatial grid of a spatiotemporal box.
Definition: tgeo_tile.c:905
STBox * stbox_time_tiles(const STBox *bounds, const Interval *duration, TimestampTz torigin, bool border_inc, int *count)
Return the spatiotemporal grid of a spatiotemporal box.
Definition: tgeo_tile.c:787
STBox * stbox_space_tiles(const STBox *bounds, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool border_inc, int *count)
Return the spatial grid of a spatiotemporal box.
Definition: tgeo_tile.c:768
STBox * stbox_get_time_tile(TimestampTz t, const Interval *duration, TimestampTz torigin)
Return a tile in the temporal grid of a spatiotemporal box.
Definition: tgeo_tile.c:921
STBox * stbox_get_space_time_tile(const GSERIALIZED *point, TimestampTz t, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin)
Return a tile in the spatiotemporal grid of a spatiotemporal box.
Definition: tgeo_tile.c:888
STBox * stbox_space_time_tiles(const STBox *bounds, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool border_inc, int *count)
Return the spatiotemporal grid of a spatiotemporal box.
Definition: tgeo_tile.c:662
STBox * tgeo_space_boxes(const Temporal *temp, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool bitmatrix, bool border_inc, int *count)
Return the spatiotemporal boxes of a temporal geo split with respect to a space grid.
Definition: tgeo_tile.c:1032
Temporal ** tgeo_space_time_split(const Temporal *temp, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool bitmatrix, bool border_inc, GSERIALIZED ***space_bins, TimestampTz **time_bins, int *count)
Return the fragments a temporal geo split according to a space and possibly a time grid.
Definition: tgeo_tile.c:1361
Temporal ** tgeo_space_split(const Temporal *temp, double xsize, double ysize, double zsize, const GSERIALIZED *sorigin, bool bitmatrix, bool border_inc, GSERIALIZED ***space_bins, int *count)
Return the fragments a temporal geo split according to a space and possibly a time grid.
Definition: tgeo_tile.c:1454
Temporal * tgeo_scale(const Temporal *temp, const GSERIALIZED *scale, const GSERIALIZED *sorigin)
Scale a temporal geo by given factors.
Definition: tgeo_spatialfuncs.c:1488
Temporal * tgeo_affine(const Temporal *temp, const AFFINE *a)
Return the 3D affine transform of a temporal geo to do things like translate, rotate,...
Definition: tgeo_spatialfuncs.c:1394
Temporal ** tpoint_make_simple(const Temporal *temp, int *count)
Return a temporal point split into an array of non self-intersecting fragments.
Definition: tpoint_spatialfuncs.c:4133
set(CBUFFER_SRCS cbuffer.c tcbuffer.c tcbuffer_boxops.c tcbuffer_compops.c tcbuffer_distance.c tcbuffer_spatialfuncs.c tcbuffer_spatialrels.c tcbuffer_tempspatialrels.c) if(1) list(APPEND CBUFFER_SRCS cbufferset_meos.c) endif() add_library(cbuffer OBJECT $
Definition: CMakeLists.txt:1
interpType
Enumeration that defines the interpolation types used in MEOS.
Definition: meos.h:161
External API of the Mobility Engine Open Source (MEOS) library.
spatialRel
API of the Mobility Engine Open Source (MEOS) library.
Definition: meos_geo.h:55
@ INTERSECTS
Definition: meos_geo.h:56
@ COVERS
Definition: meos_geo.h:59
@ TOUCHES
Definition: meos_geo.h:58
@ CONTAINS
Definition: meos_geo.h:57
STBox * tgeo_space_time_boxes(const Temporal *temp, double xsize, double ysize, double zsize, const Interval *duration, const GSERIALIZED *sorigin, TimestampTz torigin, bool bitmatrix, bool border_inc, int *count)
Return the spatiotemporal boxes of a temporal point split with respect to a space and possibly a time...
Definition: tgeo_tile.c:948
int etouches_tpoint_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal point ever touches a geometry, 0 if not, and -1 on error or if the geometry is...
Definition: tgeo_spatialrels.c:1279
Temporal * tdwithin_geo_tgeo(const GSERIALIZED *gs, const Temporal *temp, double dist, bool restr, bool atvalue)
Definition: tspatial_tempspatialrels.c:1588
int atouches_tpoint_geo(const Temporal *temp, const GSERIALIZED *gs)
Return 1 if a temporal point always touches a geometry, 0 if not, and -1 on error or if the geometry ...
Definition: tgeo_spatialrels.c:1293
Datum buffer(PG_FUNCTION_ARGS)
int64 TimestampTz
Definition: postgres_ext_defs.in.h:22
signed int int32
Definition: postgres_ext_defs.in.h:11
long int int64
Definition: postgres_ext_defs.in.h:12
Definition: postgis_ext_defs.in.h:58
Definition: postgis_ext_defs.in.h:65
Definition: postgis_ext_defs.in.h:79
Definition: postgis_ext_defs.in.h:170
Definition: postgres_ext_defs.in.h:27
Structure to represent spatiotemporal boxes.
Definition: meos.h:134
Structure to represent sets of values.
Definition: meos.h:80
Structure to represent skiplists that keep the current state of an aggregation.
Definition: meos_internal.h:696
Structure to represent span sets.
Definition: meos.h:108
Structure to represent spans (a.k.a.
Definition: meos.h:94
Structure to represent temporal values of instant subtype.
Definition: meos.h:185
Structure to represent temporal values of sequence set subtype.
Definition: meos.h:224
Structure to represent temporal values of sequence subtype.
Definition: meos.h:202
Structure to represent the common structure of temporal values of any temporal subtype.
Definition: meos.h:173
Definition: pgtz.h:42
int const GSERIALIZED * gs
Definition: trgeo_spatialrels.h:52