From 80242e7cd6f92831048e64ff5f21e4c89462f8b5 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Fri, 10 Sep 2004 07:36:25 +0000 Subject: [PATCH] asbinary(), geomfromwkb git-svn-id: http://svn.osgeo.org/postgis/trunk@794 b70326c6-7e19-0410-871a-916f4a2858ee --- lwgeom/lwgeom_inout.c | 18 ++++++++---------- lwgeom/lwpostgis.sql.in | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lwgeom/lwgeom_inout.c b/lwgeom/lwgeom_inout.c index f974189bc..0b7728fae 100644 --- a/lwgeom/lwgeom_inout.c +++ b/lwgeom/lwgeom_inout.c @@ -188,17 +188,16 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS) // SRID=#; char *hexized_wkb_srid = unparse_WKB(lwgeom_input, palloc_fn, free_fn); - char *hexized_wkb; // hexized_wkb_srid w/o srid char *result; //wkb - int len_hexized_wkb; - int size_result; - char *semicolonLoc; + int size_result; + char *semicolonLoc; int t; -//elog(NOTICE, "in WKBFromLWGEOM with WKB = '%s'", hexized_wkb_srid); - elog(NOTICE,"lwgeom => wkb CONVERSION"); +#ifdef DEBUG +elog(NOTICE, "in WKBFromLWGEOM with WKB = '%s'", hexized_wkb_srid); +#endif hexized_wkb = hexized_wkb_srid; semicolonLoc = strchr(hexized_wkb_srid,';'); @@ -209,7 +208,9 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS) hexized_wkb = (semicolonLoc+1); } -//elog(NOTICE, "in WKBFromLWGEOM with WKB (with no 'SRID=#;' = '%s'", hexized_wkb); +#ifdef DEBUG +elog(NOTICE, "in WKBFromLWGEOM with WKB (with no 'SRID=#;' = '%s'", hexized_wkb); +#endif len_hexized_wkb = strlen(hexized_wkb); size_result = len_hexized_wkb/2 + 4; @@ -217,10 +218,7 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS) memcpy(result, &size_result,4); // size header - - // have a hexized string, want to make it binary - for (t=0; t< (len_hexized_wkb/2); t++) { ((unsigned char *) result +4)[t] = parse_hex( hexized_wkb + (t*2) ); diff --git a/lwgeom/lwpostgis.sql.in b/lwgeom/lwpostgis.sql.in index beb27142b..cb6aa1cdc 100644 --- a/lwgeom/lwpostgis.sql.in +++ b/lwgeom/lwpostgis.sql.in @@ -1051,6 +1051,11 @@ CREATEFUNCTION SetSRID(geometry,int4) AS '@MODULE_FILENAME@','LWGEOM_setSRID' LANGUAGE 'C' WITH (isstrict,iscachable); +CREATEFUNCTION AsBinary(geometry) + RETURNS bytea + AS '@MODULE_FILENAME@','WKBFromLWGEOM' + LANGUAGE 'C' WITH (isstrict,iscachable); + CREATEFUNCTION AsText(geometry) RETURNS TEXT AS '@MODULE_FILENAME@','LWGEOM_asText' @@ -1211,6 +1216,16 @@ AS 'SELECT CASE WHEN geometrytype($1) = ''GEOMETRYCOLLECTION'' THEN $1 ELSE NULL END ' LANGUAGE 'SQL' WITH (isstrict,iscachable); +CREATEFUNCTION GeomFromWKB(bytea) + RETURNS geometry + AS '@MODULE_FILENAME@','LWGEOMFromWKB' + LANGUAGE 'C' WITH (isstrict,iscachable); + +CREATEFUNCTION GeomFromWKB(bytea, int) + RETURNS geometry + AS 'SELECT setSRID(GeomFromWKB($1), $2)' + LANGUAGE 'SQL' WITH (isstrict,iscachable); + ------------------------------------------------------------------------ -- Misures ------------------------------------------------------------------------ -- 2.40.0