]> granicus.if.org Git - postgis/commitdiff
Added all ..FromWKB functions, asbinary(geom) and bytea<->geom casts
authorSandro Santilli <strk@keybit.net>
Fri, 10 Sep 2004 08:48:49 +0000 (08:48 +0000)
committerSandro Santilli <strk@keybit.net>
Fri, 10 Sep 2004 08:48:49 +0000 (08:48 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@795 b70326c6-7e19-0410-871a-916f4a2858ee

lwgeom/MISSING_OBJECTS
lwgeom/lwpostgis.sql.in

index 86003bb1539aa85e4c2b5325b7fbdacedbba249c..7e78d32b88c7f3063447111b00f2d5c36ae25eb9 100644 (file)
@@ -1,6 +1,5 @@
 # This is a list of objects still missing lwgeom support
 
-FUNC: KEEPING FUNCTION: [asbinary(geometry)]
 FUNC: KEEPING FUNCTION: [asbinary(geometry, text)]
 
 --- contrib
index cb6aa1cdcfcdec2c63aa6fa0b45627d18d4328f9..92110b8ccf1cc6d8987e09e81766f302bd3a8155 100644 (file)
@@ -1226,6 +1226,204 @@ CREATEFUNCTION GeomFromWKB(bytea, int)
        AS 'SELECT setSRID(GeomFromWKB($1), $2)'
        LANGUAGE 'SQL' WITH (isstrict,iscachable);
 
+CREATEFUNCTION PointFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POINT'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION PointFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POINT'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION LineFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''LINESTRING'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION LineFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''LINESTRING'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION LinestringFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''LINESTRING'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION LinestringFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''LINESTRING'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION PolyFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POLYGON'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION PolyFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POLYGON'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION PolygonFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POLYGON'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION PolygonFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''POLYGON'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MPointFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOINT'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MPointFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOINT'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiPointFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOINT'' THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiPointFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOINT'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiLineFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTILINESTRING''
+       THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiLineFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTILINESTRING'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MLineFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTILINESTRING''
+       THEN setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MLineFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTILINESTRING'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MPolyFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOLYGON'' THEN
+       setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MPolyFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOLYGON'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiPolyFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOLYGON'' THEN
+       setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION MultiPolyFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''MULTIPOLYGON'' THEN $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION GeomCollFromWKB(geometry, int)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''GEOMETRYCOLLECTION'' THEN
+       setSRID($1, $2)
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
+CREATEFUNCTION GeomCollFromWKB(geometry)
+       RETURNS geometry
+       AS '
+       SELECT CASE WHEN geometrytype($1) = ''GEOMETRYCOLLECTION'' THEN
+       $1
+       ELSE NULL END
+       '
+       LANGUAGE 'SQL' WITH (isstrict,iscachable);
+
 ------------------------------------------------------------------------
 -- Misures
 ------------------------------------------------------------------------
@@ -2494,6 +2692,16 @@ CREATEFUNCTION geometry(chip)
        AS '@MODULE_FILENAME@','CHIP_to_LWGEOM'
        LANGUAGE 'C' WITH (isstrict,iscachable);
 
+CREATEFUNCTION geometry(bytea)
+       RETURNS geometry
+       AS '@MODULE_FILENAME@','LWGEOMFromWKB'
+       LANGUAGE 'C' WITH (isstrict,iscachable);
+
+CREATEFUNCTION bytea(geometry)
+       RETURNS bytea
+       AS '@MODULE_FILENAME@','WKBFromLWGEOM'
+       LANGUAGE 'C' WITH (isstrict,iscachable);
+
 -- 7.3+ explicit casting definitions
 #if USE_VERSION >= 73
 CREATE CAST (geometry AS box2d) WITH FUNCTION box2d(geometry) AS IMPLICIT;
@@ -2505,6 +2713,8 @@ CREATE CAST (box3d AS box) WITH FUNCTION box(box3d) AS IMPLICIT;
 CREATE CAST (box3d AS geometry) WITH FUNCTION geometry(box3d) AS IMPLICIT;
 CREATE CAST (text AS geometry) WITH FUNCTION geometry(text) AS IMPLICIT;
 CREATE CAST (chip AS geometry) WITH FUNCTION geometry(chip) AS IMPLICIT;
+CREATE CAST (bytea AS geometry) WITH FUNCTION geometry(bytea) AS IMPLICIT;
+CREATE CAST (geometry AS bytea) WITH FUNCTION bytea(geometry) AS IMPLICIT;
 #endif
 
 ---------------------------------------------------------------