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;
|