]> granicus.if.org Git - postgis/commitdiff
asbinary(), geomfromwkb
authorSandro Santilli <strk@keybit.net>
Fri, 10 Sep 2004 07:36:25 +0000 (07:36 +0000)
committerSandro Santilli <strk@keybit.net>
Fri, 10 Sep 2004 07:36:25 +0000 (07:36 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@794 b70326c6-7e19-0410-871a-916f4a2858ee

lwgeom/lwgeom_inout.c
lwgeom/lwpostgis.sql.in

index f974189bc831fdca267a9f65b5b11062a44d3d8b..0b7728fae83788f0e64a6915a391123b973cba85 100644 (file)
@@ -188,17 +188,16 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS)
 
        // SRID=#;<hexized wkb>
        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) );
index beb27142b453e947f48b4ae13b39dec8293841f6..cb6aa1cdcfcdec2c63aa6fa0b45627d18d4328f9 100644 (file)
@@ -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
 ------------------------------------------------------------------------