File: pointcloud_postgis.sql.in

package info (click to toggle)
pgpointcloud 1.2.5-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,892 kB
  • sloc: sql: 40,767; ansic: 11,045; xml: 935; makefile: 297; cpp: 282; perl: 248; python: 178; sh: 92
file content (81 lines) | stat: -rw-r--r-- 2,428 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
-----------------------------------------------------------------------------
-- Function to overlap polygon on patch
--
CREATE OR REPLACE FUNCTION PC_Intersection(pcpatch, geometry)
	RETURNS pcpatch AS
	$$
		WITH
			 pts AS (SELECT @extschema@.PC_Explode($1) AS pt),
		   pgpts AS (SELECT @extschema@.ST_GeomFromEWKB(@extschema@.PC_AsBinary(pt)) AS pgpt, pt FROM pts),
			ipts AS (SELECT pt FROM pgpts WHERE @extschema@.ST_Intersects(pgpt, $2)),
			ipch AS (SELECT @extschema@.PC_Patch(pt) AS pch FROM ipts)
		SELECT pch FROM ipch;
	$$
	LANGUAGE 'sql';

-----------------------------------------------------------------------------
-- Cast from pcpatch to polygon
--
CREATE OR REPLACE FUNCTION PC_EnvelopeGeometry(pcpatch)
	RETURNS geometry AS
	$$
		SELECT @extschema@.ST_GeomFromEWKB(@extschema@.PC_EnvelopeAsBinary($1))
	$$
	LANGUAGE 'sql';

CREATE OR REPLACE FUNCTION geometry(pcpatch)
	RETURNS geometry AS
	$$
		SELECT @extschema@.PC_EnvelopeGeometry($1)
	$$
	LANGUAGE 'sql';

CREATE CAST (pcpatch AS geometry) WITH FUNCTION PC_EnvelopeGeometry(pcpatch);


-----------------------------------------------------------------------------
-- Cast from pcpoint to point
--
CREATE OR REPLACE FUNCTION geometry(pcpoint)
	RETURNS geometry AS
	$$
		SELECT @extschema@.ST_GeomFromEWKB(@extschema@.PC_AsBinary($1))
	$$
	LANGUAGE 'sql';

CREATE CAST (pcpoint AS geometry) WITH FUNCTION geometry(pcpoint);


-----------------------------------------------------------------------------
-- Function to overlap polygon on patch
--
CREATE OR REPLACE FUNCTION PC_Intersects(pcpatch, geometry)
	RETURNS boolean AS
	$$
		SELECT @extschema@.ST_Intersects($2, @extschema@.PC_EnvelopeGeometry($1))
	$$
	LANGUAGE 'sql';

CREATE OR REPLACE FUNCTION PC_Intersects(geometry, pcpatch)
	RETURNS boolean AS
	$$
		SELECT @extschema@.PC_Intersects($2, $1)
	$$
	LANGUAGE 'sql';

-----------------------------------------------------------------------------
-- Function from pcpatch to LineString
--
CREATE OR REPLACE FUNCTION PC_BoundingDiagonalGeometry(pcpatch)
	RETURNS geometry AS
	$$
		SELECT @extschema@.ST_GeomFromEWKB(@extschema@.PC_BoundingDiagonalAsBinary($1))
	$$
	LANGUAGE 'sql';

-----------------------------------------------------------------------------
-- Function returning the version number
--
CREATE OR REPLACE FUNCTION PC_PostGIS_Version()
	RETURNS text AS $$ SELECT '@POINTCLOUD_VERSION@'::text $$
	LANGUAGE 'sql' IMMUTABLE STRICT;