pgLatLon

view latlon--0.14--0.15.sql @ 72:8fa0ef5e4ee6

Fixed longitude wraparound for values equal to or greater than 360 degrees
author jbe
date Wed Feb 12 13:11:04 2020 +0100 (2020-02-12)
parents 882b77aee653
children b5bc6b35b716
line source
2 ------------------------------------------------------------
3 -- dummy input/output functions for dummy index key types --
4 ------------------------------------------------------------
6 CREATE OR REPLACE FUNCTION ekey_point_in_dummy(cstring)
7 RETURNS ekey_point
8 LANGUAGE C IMMUTABLE STRICT
9 AS '$libdir/latlon-v0010', 'pgl_notimpl';
11 CREATE OR REPLACE FUNCTION ekey_point_out_dummy(ekey_point)
12 RETURNS cstring
13 LANGUAGE C IMMUTABLE STRICT
14 AS '$libdir/latlon-v0010', 'pgl_notimpl';
16 CREATE OR REPLACE FUNCTION ekey_area_in_dummy(cstring)
17 RETURNS ekey_area
18 LANGUAGE C IMMUTABLE STRICT
19 AS '$libdir/latlon-v0010', 'pgl_notimpl';
21 CREATE OR REPLACE FUNCTION ekey_area_out_dummy(ekey_area)
22 RETURNS cstring
23 LANGUAGE C IMMUTABLE STRICT
24 AS '$libdir/latlon-v0010', 'pgl_notimpl';
27 --------------------------
28 -- text input functions --
29 --------------------------
31 CREATE OR REPLACE FUNCTION epoint_in(cstring)
32 RETURNS epoint
33 LANGUAGE C IMMUTABLE STRICT
34 AS '$libdir/latlon-v0010', 'pgl_epoint_in';
36 CREATE OR REPLACE FUNCTION epoint_with_sample_count_in(cstring)
37 RETURNS epoint_with_sample_count
38 LANGUAGE C IMMUTABLE STRICT
39 AS '$libdir/latlon-v0010', 'pgl_epoint_with_sample_count_in';
41 CREATE OR REPLACE FUNCTION ebox_in(cstring)
42 RETURNS ebox
43 LANGUAGE C IMMUTABLE STRICT
44 AS '$libdir/latlon-v0010', 'pgl_ebox_in';
46 CREATE OR REPLACE FUNCTION ecircle_in(cstring)
47 RETURNS ecircle
48 LANGUAGE C IMMUTABLE STRICT
49 AS '$libdir/latlon-v0010', 'pgl_ecircle_in';
51 CREATE OR REPLACE FUNCTION ecluster_in(cstring)
52 RETURNS ecluster
53 LANGUAGE C IMMUTABLE STRICT
54 AS '$libdir/latlon-v0010', 'pgl_ecluster_in';
57 ---------------------------
58 -- text output functions --
59 ---------------------------
61 CREATE OR REPLACE FUNCTION epoint_out(epoint)
62 RETURNS cstring
63 LANGUAGE C IMMUTABLE STRICT
64 AS '$libdir/latlon-v0010', 'pgl_epoint_out';
66 CREATE OR REPLACE FUNCTION epoint_with_sample_count_out(epoint_with_sample_count)
67 RETURNS cstring
68 LANGUAGE C IMMUTABLE STRICT
69 AS '$libdir/latlon-v0010', 'pgl_epoint_with_sample_count_out';
71 CREATE OR REPLACE FUNCTION ebox_out(ebox)
72 RETURNS cstring
73 LANGUAGE C IMMUTABLE STRICT
74 AS '$libdir/latlon-v0010', 'pgl_ebox_out';
76 CREATE OR REPLACE FUNCTION ecircle_out(ecircle)
77 RETURNS cstring
78 LANGUAGE C IMMUTABLE STRICT
79 AS '$libdir/latlon-v0010', 'pgl_ecircle_out';
81 CREATE OR REPLACE FUNCTION ecluster_out(ecluster)
82 RETURNS cstring
83 LANGUAGE C IMMUTABLE STRICT
84 AS '$libdir/latlon-v0010', 'pgl_ecluster_out';
87 --------------------------
88 -- binary I/O functions --
89 --------------------------
91 CREATE OR REPLACE FUNCTION epoint_recv(internal)
92 RETURNS epoint
93 LANGUAGE C IMMUTABLE STRICT
94 AS '$libdir/latlon-v0010', 'pgl_epoint_recv';
96 CREATE OR REPLACE FUNCTION ebox_recv(internal)
97 RETURNS ebox
98 LANGUAGE C IMMUTABLE STRICT
99 AS '$libdir/latlon-v0010', 'pgl_ebox_recv';
101 CREATE OR REPLACE FUNCTION ecircle_recv(internal)
102 RETURNS ecircle
103 LANGUAGE C IMMUTABLE STRICT
104 AS '$libdir/latlon-v0010', 'pgl_ecircle_recv';
106 CREATE OR REPLACE FUNCTION epoint_send(epoint)
107 RETURNS bytea
108 LANGUAGE C IMMUTABLE STRICT
109 AS '$libdir/latlon-v0010', 'pgl_epoint_send';
111 CREATE OR REPLACE FUNCTION ebox_send(ebox)
112 RETURNS bytea
113 LANGUAGE C IMMUTABLE STRICT
114 AS '$libdir/latlon-v0010', 'pgl_ebox_send';
116 CREATE OR REPLACE FUNCTION ecircle_send(ecircle)
117 RETURNS bytea
118 LANGUAGE C IMMUTABLE STRICT
119 AS '$libdir/latlon-v0010', 'pgl_ecircle_send';
122 --------------------
123 -- B-tree support --
124 --------------------
126 -- begin of B-tree support for epoint
128 CREATE OR REPLACE FUNCTION epoint_btree_lt(epoint, epoint)
129 RETURNS boolean
130 LANGUAGE C IMMUTABLE STRICT
131 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_lt';
133 CREATE OR REPLACE FUNCTION epoint_btree_le(epoint, epoint)
134 RETURNS boolean
135 LANGUAGE C IMMUTABLE STRICT
136 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_le';
138 CREATE OR REPLACE FUNCTION epoint_btree_eq(epoint, epoint)
139 RETURNS boolean
140 LANGUAGE C IMMUTABLE STRICT
141 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_eq';
143 CREATE OR REPLACE FUNCTION epoint_btree_ne(epoint, epoint)
144 RETURNS boolean
145 LANGUAGE C IMMUTABLE STRICT
146 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_ne';
148 CREATE OR REPLACE FUNCTION epoint_btree_ge(epoint, epoint)
149 RETURNS boolean
150 LANGUAGE C IMMUTABLE STRICT
151 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_ge';
153 CREATE OR REPLACE FUNCTION epoint_btree_gt(epoint, epoint)
154 RETURNS boolean
155 LANGUAGE C IMMUTABLE STRICT
156 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_gt';
158 CREATE OR REPLACE FUNCTION epoint_btree_cmp(epoint, epoint)
159 RETURNS int4
160 LANGUAGE C IMMUTABLE STRICT
161 AS '$libdir/latlon-v0010', 'pgl_btree_epoint_cmp';
163 -- end of B-tree support for epoint
165 -- begin of B-tree support for ebox
167 CREATE OR REPLACE FUNCTION ebox_btree_lt(ebox, ebox)
168 RETURNS boolean
169 LANGUAGE C IMMUTABLE STRICT
170 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_lt';
172 CREATE OR REPLACE FUNCTION ebox_btree_le(ebox, ebox)
173 RETURNS boolean
174 LANGUAGE C IMMUTABLE STRICT
175 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_le';
177 CREATE OR REPLACE FUNCTION ebox_btree_eq(ebox, ebox)
178 RETURNS boolean
179 LANGUAGE C IMMUTABLE STRICT
180 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_eq';
182 CREATE OR REPLACE FUNCTION ebox_btree_ne(ebox, ebox)
183 RETURNS boolean
184 LANGUAGE C IMMUTABLE STRICT
185 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_ne';
187 CREATE OR REPLACE FUNCTION ebox_btree_ge(ebox, ebox)
188 RETURNS boolean
189 LANGUAGE C IMMUTABLE STRICT
190 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_ge';
192 CREATE OR REPLACE FUNCTION ebox_btree_gt(ebox, ebox)
193 RETURNS boolean
194 LANGUAGE C IMMUTABLE STRICT
195 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_gt';
197 CREATE OR REPLACE FUNCTION ebox_btree_cmp(ebox, ebox)
198 RETURNS int4
199 LANGUAGE C IMMUTABLE STRICT
200 AS '$libdir/latlon-v0010', 'pgl_btree_ebox_cmp';
202 -- end of B-tree support for ebox
204 -- begin of B-tree support for ecircle
206 CREATE OR REPLACE FUNCTION ecircle_btree_lt(ecircle, ecircle)
207 RETURNS boolean
208 LANGUAGE C IMMUTABLE STRICT
209 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_lt';
211 CREATE OR REPLACE FUNCTION ecircle_btree_le(ecircle, ecircle)
212 RETURNS boolean
213 LANGUAGE C IMMUTABLE STRICT
214 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_le';
216 CREATE OR REPLACE FUNCTION ecircle_btree_eq(ecircle, ecircle)
217 RETURNS boolean
218 LANGUAGE C IMMUTABLE STRICT
219 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_eq';
221 CREATE OR REPLACE FUNCTION ecircle_btree_ne(ecircle, ecircle)
222 RETURNS boolean
223 LANGUAGE C IMMUTABLE STRICT
224 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_ne';
226 CREATE OR REPLACE FUNCTION ecircle_btree_ge(ecircle, ecircle)
227 RETURNS boolean
228 LANGUAGE C IMMUTABLE STRICT
229 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_ge';
231 CREATE OR REPLACE FUNCTION ecircle_btree_gt(ecircle, ecircle)
232 RETURNS boolean
233 LANGUAGE C IMMUTABLE STRICT
234 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_gt';
236 CREATE OR REPLACE FUNCTION ecircle_btree_cmp(ecircle, ecircle)
237 RETURNS int4
238 LANGUAGE C IMMUTABLE STRICT
239 AS '$libdir/latlon-v0010', 'pgl_btree_ecircle_cmp';
241 -- end of B-tree support for ecircle
244 ----------------
245 -- type casts --
246 ----------------
248 CREATE OR REPLACE FUNCTION cast_epoint_to_ebox(epoint)
249 RETURNS ebox
250 LANGUAGE C IMMUTABLE STRICT
251 AS '$libdir/latlon-v0010', 'pgl_epoint_to_ebox';
253 CREATE OR REPLACE FUNCTION cast_epoint_to_ecircle(epoint)
254 RETURNS ecircle
255 LANGUAGE C IMMUTABLE STRICT
256 AS '$libdir/latlon-v0010', 'pgl_epoint_to_ecircle';
258 CREATE OR REPLACE FUNCTION cast_epoint_to_ecluster(epoint)
259 RETURNS ecluster
260 LANGUAGE C IMMUTABLE STRICT
261 AS '$libdir/latlon-v0010', 'pgl_epoint_to_ecluster';
263 CREATE OR REPLACE FUNCTION cast_ebox_to_ecluster(ebox)
264 RETURNS ecluster
265 LANGUAGE C IMMUTABLE STRICT
266 AS '$libdir/latlon-v0010', 'pgl_ebox_to_ecluster';
269 ---------------------------
270 -- constructor functions --
271 ---------------------------
273 CREATE OR REPLACE FUNCTION epoint(float8, float8)
274 RETURNS epoint
275 LANGUAGE C IMMUTABLE STRICT
276 AS '$libdir/latlon-v0010', 'pgl_create_epoint';
278 CREATE OR REPLACE FUNCTION epoint_with_sample_count(epoint, int4)
279 RETURNS epoint_with_sample_count
280 LANGUAGE C IMMUTABLE STRICT
281 AS '$libdir/latlon-v0010', 'pgl_create_epoint_with_sample_count';
283 CREATE OR REPLACE FUNCTION empty_ebox()
284 RETURNS ebox
285 LANGUAGE C IMMUTABLE STRICT
286 AS '$libdir/latlon-v0010', 'pgl_create_empty_ebox';
288 CREATE OR REPLACE FUNCTION ebox(float8, float8, float8, float8)
289 RETURNS ebox
290 LANGUAGE C IMMUTABLE STRICT
291 AS '$libdir/latlon-v0010', 'pgl_create_ebox';
293 CREATE OR REPLACE FUNCTION ebox(epoint, epoint)
294 RETURNS ebox
295 LANGUAGE C IMMUTABLE STRICT
296 AS '$libdir/latlon-v0010', 'pgl_create_ebox_from_epoints';
298 CREATE OR REPLACE FUNCTION ecircle(float8, float8, float8)
299 RETURNS ecircle
300 LANGUAGE C IMMUTABLE STRICT
301 AS '$libdir/latlon-v0010', 'pgl_create_ecircle';
303 CREATE OR REPLACE FUNCTION ecircle(epoint, float8)
304 RETURNS ecircle
305 LANGUAGE C IMMUTABLE STRICT
306 AS '$libdir/latlon-v0010', 'pgl_create_ecircle_from_epoint';
309 ----------------------
310 -- getter functions --
311 ----------------------
313 CREATE OR REPLACE FUNCTION latitude(epoint)
314 RETURNS float8
315 LANGUAGE C IMMUTABLE STRICT
316 AS '$libdir/latlon-v0010', 'pgl_epoint_lat';
318 CREATE OR REPLACE FUNCTION longitude(epoint)
319 RETURNS float8
320 LANGUAGE C IMMUTABLE STRICT
321 AS '$libdir/latlon-v0010', 'pgl_epoint_lon';
323 CREATE OR REPLACE FUNCTION min_latitude(ebox)
324 RETURNS float8
325 LANGUAGE C IMMUTABLE STRICT
326 AS '$libdir/latlon-v0010', 'pgl_ebox_lat_min';
328 CREATE OR REPLACE FUNCTION max_latitude(ebox)
329 RETURNS float8
330 LANGUAGE C IMMUTABLE STRICT
331 AS '$libdir/latlon-v0010', 'pgl_ebox_lat_max';
333 CREATE OR REPLACE FUNCTION min_longitude(ebox)
334 RETURNS float8
335 LANGUAGE C IMMUTABLE STRICT
336 AS '$libdir/latlon-v0010', 'pgl_ebox_lon_min';
338 CREATE OR REPLACE FUNCTION max_longitude(ebox)
339 RETURNS float8
340 LANGUAGE C IMMUTABLE STRICT
341 AS '$libdir/latlon-v0010', 'pgl_ebox_lon_max';
343 CREATE OR REPLACE FUNCTION center(ecircle)
344 RETURNS epoint
345 LANGUAGE C IMMUTABLE STRICT
346 AS '$libdir/latlon-v0010', 'pgl_ecircle_center';
348 CREATE OR REPLACE FUNCTION radius(ecircle)
349 RETURNS float8
350 LANGUAGE C IMMUTABLE STRICT
351 AS '$libdir/latlon-v0010', 'pgl_ecircle_radius';
354 ---------------
355 -- operators --
356 ---------------
358 CREATE OR REPLACE FUNCTION epoint_ebox_overlap_proc(epoint, ebox)
359 RETURNS boolean
360 LANGUAGE C IMMUTABLE STRICT
361 AS '$libdir/latlon-v0010', 'pgl_epoint_ebox_overlap';
363 CREATE OR REPLACE FUNCTION epoint_ecircle_overlap_proc(epoint, ecircle)
364 RETURNS boolean
365 LANGUAGE C IMMUTABLE STRICT
366 AS '$libdir/latlon-v0010', 'pgl_epoint_ecircle_overlap';
368 CREATE OR REPLACE FUNCTION epoint_ecluster_overlap_proc(epoint, ecluster)
369 RETURNS boolean
370 LANGUAGE C IMMUTABLE STRICT
371 AS '$libdir/latlon-v0010', 'pgl_epoint_ecluster_overlap';
373 CREATE OR REPLACE FUNCTION epoint_ecluster_may_overlap_proc(epoint, ecluster)
374 RETURNS boolean
375 LANGUAGE C IMMUTABLE STRICT
376 AS '$libdir/latlon-v0010', 'pgl_epoint_ecluster_may_overlap';
378 CREATE OR REPLACE FUNCTION ebox_overlap_proc(ebox, ebox)
379 RETURNS boolean
380 LANGUAGE C IMMUTABLE STRICT
381 AS '$libdir/latlon-v0010', 'pgl_ebox_overlap';
383 CREATE OR REPLACE FUNCTION ebox_ecircle_may_overlap_proc(ebox, ecircle)
384 RETURNS boolean
385 LANGUAGE C IMMUTABLE STRICT
386 AS '$libdir/latlon-v0010', 'pgl_ebox_ecircle_may_overlap';
388 CREATE OR REPLACE FUNCTION ebox_ecluster_may_overlap_proc(ebox, ecluster)
389 RETURNS boolean
390 LANGUAGE C IMMUTABLE STRICT
391 AS '$libdir/latlon-v0010', 'pgl_ebox_ecluster_may_overlap';
393 CREATE OR REPLACE FUNCTION ecircle_overlap_proc(ecircle, ecircle)
394 RETURNS boolean
395 LANGUAGE C IMMUTABLE STRICT
396 AS '$libdir/latlon-v0010', 'pgl_ecircle_overlap';
398 CREATE OR REPLACE FUNCTION ecircle_ecluster_overlap_proc(ecircle, ecluster)
399 RETURNS boolean
400 LANGUAGE C IMMUTABLE STRICT
401 AS '$libdir/latlon-v0010', 'pgl_ecircle_ecluster_overlap';
403 CREATE OR REPLACE FUNCTION ecircle_ecluster_may_overlap_proc(ecircle, ecluster)
404 RETURNS boolean
405 LANGUAGE C IMMUTABLE STRICT
406 AS '$libdir/latlon-v0010', 'pgl_ecircle_ecluster_may_overlap';
408 CREATE OR REPLACE FUNCTION ecluster_overlap_proc(ecluster, ecluster)
409 RETURNS boolean
410 LANGUAGE C IMMUTABLE STRICT
411 AS '$libdir/latlon-v0010', 'pgl_ecluster_overlap';
413 CREATE OR REPLACE FUNCTION ecluster_may_overlap_proc(ecluster, ecluster)
414 RETURNS boolean
415 LANGUAGE C IMMUTABLE STRICT
416 AS '$libdir/latlon-v0010', 'pgl_ecluster_may_overlap';
418 CREATE OR REPLACE FUNCTION ecluster_contains_proc(ecluster, ecluster)
419 RETURNS boolean
420 LANGUAGE C IMMUTABLE STRICT
421 AS '$libdir/latlon-v0010', 'pgl_ecluster_contains';
423 CREATE OR REPLACE FUNCTION epoint_distance_proc(epoint, epoint)
424 RETURNS float8
425 LANGUAGE C IMMUTABLE STRICT
426 AS '$libdir/latlon-v0010', 'pgl_epoint_distance';
428 CREATE OR REPLACE FUNCTION epoint_ecircle_distance_proc(epoint, ecircle)
429 RETURNS float8
430 LANGUAGE C IMMUTABLE STRICT
431 AS '$libdir/latlon-v0010', 'pgl_epoint_ecircle_distance';
433 CREATE OR REPLACE FUNCTION epoint_ecluster_distance_proc(epoint, ecluster)
434 RETURNS float8
435 LANGUAGE C IMMUTABLE STRICT
436 AS '$libdir/latlon-v0010', 'pgl_epoint_ecluster_distance';
438 CREATE OR REPLACE FUNCTION ecircle_distance_proc(ecircle, ecircle)
439 RETURNS float8
440 LANGUAGE C IMMUTABLE STRICT
441 AS '$libdir/latlon-v0010', 'pgl_ecircle_distance';
443 CREATE OR REPLACE FUNCTION ecircle_ecluster_distance_proc(ecircle, ecluster)
444 RETURNS float8
445 LANGUAGE C IMMUTABLE STRICT
446 AS '$libdir/latlon-v0010', 'pgl_ecircle_ecluster_distance';
448 CREATE OR REPLACE FUNCTION ecluster_distance_proc(ecluster, ecluster)
449 RETURNS float8
450 LANGUAGE C IMMUTABLE STRICT
451 AS '$libdir/latlon-v0010', 'pgl_ecluster_distance';
453 CREATE OR REPLACE FUNCTION fair_distance_operator_proc(ecluster, epoint_with_sample_count)
454 RETURNS float8
455 LANGUAGE C IMMUTABLE STRICT
456 AS '$libdir/latlon-v0010', 'pgl_ecluster_epoint_sc_fair_distance';
459 ----------------
460 -- GiST index --
461 ----------------
463 CREATE OR REPLACE FUNCTION pgl_gist_consistent(internal, internal, smallint, oid, internal)
464 RETURNS boolean
465 LANGUAGE C STRICT
466 AS '$libdir/latlon-v0010', 'pgl_gist_consistent';
468 CREATE OR REPLACE FUNCTION pgl_gist_union(internal, internal)
469 RETURNS internal
470 LANGUAGE C STRICT
471 AS '$libdir/latlon-v0010', 'pgl_gist_union';
473 CREATE OR REPLACE FUNCTION pgl_gist_compress_epoint(internal)
474 RETURNS internal
475 LANGUAGE C STRICT
476 AS '$libdir/latlon-v0010', 'pgl_gist_compress_epoint';
478 CREATE OR REPLACE FUNCTION pgl_gist_compress_ecircle(internal)
479 RETURNS internal
480 LANGUAGE C STRICT
481 AS '$libdir/latlon-v0010', 'pgl_gist_compress_ecircle';
483 CREATE OR REPLACE FUNCTION pgl_gist_compress_ecluster(internal)
484 RETURNS internal
485 LANGUAGE C STRICT
486 AS '$libdir/latlon-v0010', 'pgl_gist_compress_ecluster';
488 CREATE OR REPLACE FUNCTION pgl_gist_decompress(internal)
489 RETURNS internal
490 LANGUAGE C STRICT
491 AS '$libdir/latlon-v0010', 'pgl_gist_decompress';
493 CREATE OR REPLACE FUNCTION pgl_gist_penalty(internal, internal, internal)
494 RETURNS internal
495 LANGUAGE C STRICT
496 AS '$libdir/latlon-v0010', 'pgl_gist_penalty';
498 CREATE OR REPLACE FUNCTION pgl_gist_picksplit(internal, internal)
499 RETURNS internal
500 LANGUAGE C STRICT
501 AS '$libdir/latlon-v0010', 'pgl_gist_picksplit';
503 CREATE OR REPLACE FUNCTION pgl_gist_same(internal, internal, internal)
504 RETURNS internal
505 LANGUAGE C STRICT
506 AS '$libdir/latlon-v0010', 'pgl_gist_same';
508 CREATE OR REPLACE FUNCTION pgl_gist_distance(internal, internal, smallint, oid)
509 RETURNS internal
510 LANGUAGE C STRICT
511 AS '$libdir/latlon-v0010', 'pgl_gist_distance';

Impressum / About Us