]> granicus.if.org Git - postgis/commitdiff
Added IsEmpty()
authorSandro Santilli <strk@keybit.net>
Mon, 6 Sep 2004 12:24:17 +0000 (12:24 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 6 Sep 2004 12:24:17 +0000 (12:24 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@770 b70326c6-7e19-0410-871a-916f4a2858ee

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

index 0c6bd4556b2a534bb7c7318d31e1a932d078e99b..586eb232c3fa0e490cb6597aa5ea88f08633398b 100644 (file)
@@ -3,19 +3,16 @@
 FNCAST: KEEPING FNCAST geometry(text) (see CAST)
 FUNC: KEEPING FUNCTION: [line_interpolate_point(geometry, double precision)]
 FUNC: KEEPING FUNCTION: [simplify(geometry, double precision)]
+FUNC: KEEPING FUNCTION: [segmentize(geometry, double precision)]
 FUNC: KEEPING FUNCTION: [asbinary(geometry)]
 FUNC: KEEPING FUNCTION: [asbinary(geometry, text)]
-FUNC: KEEPING FUNCTION: [boundary(geometry)]
-FUNC: KEEPING FUNCTION: [equals(geometry, geometry)]
-FUNC: KEEPING FUNCTION: [isempty(geometry)]
-FUNC: KEEPING FUNCTION: [segmentize(geometry, double precision)]
-FUNC: KEEPING FUNCTION: [unite_garray(geometry[])]
 
 --- OBSOLETED ?
 FUNC: KEEPING FUNCTION: [geometry_size(geometry, internal)]
 FUNC: KEEPING FUNCTION: [optimistic_overlap(geometry, geometry, double precision)]
 
 --- GEOS
+FUNC: KEEPING FUNCTION: [unite_garray(geometry[])]
 FUNC: KEEPING FUNCTION: [centroid(geometry)]  (Also !GEOS implementation)
 AGGREGATE: KEEPING AGGREGATE [memgeomunion(geometry)]
 AGGREGATE: KEEPING AGGREGATE [geomunion(geometry)]
@@ -40,6 +37,8 @@ FUNC: KEEPING FUNCTION: [geomunion(geometry, geometry)]
 FUNC: KEEPING FUNCTION: [geosnoop(geometry)]
 FUNC: KEEPING FUNCTION: [intersection(geometry, geometry)]
 FUNC: KEEPING FUNCTION: [intersects(geometry, geometry)]
+FUNC: KEEPING FUNCTION: [equals(geometry, geometry)]
+FUNC: KEEPING FUNCTION: [boundary(geometry)]
 
 --- CHIP
 FUNC: KEEPING FUNCTION: [chip_in(cstring)]
index 32930638f0c6027e6598e0a1ea0e6703146afae9..edfa8531eb55d53ebd43dbc2ef64e9d9751210d0 100644 (file)
@@ -40,6 +40,7 @@ Datum LWGEOM_collect_garray(PG_FUNCTION_ARGS);
 Datum LWGEOM_expand(PG_FUNCTION_ARGS);
 Datum LWGEOM_to_BOX(PG_FUNCTION_ARGS);
 Datum LWGEOM_envelope(PG_FUNCTION_ARGS);
+Datum LWGEOM_isempty(PG_FUNCTION_ARGS);
 
 // internal
 char * lwgeom_summary_recursive(char *serialized, int offset);
@@ -2336,3 +2337,13 @@ Datum LWGEOM_envelope(PG_FUNCTION_ARGS)
        
        PG_RETURN_POINTER(result);
 }
+
+PG_FUNCTION_INFO_V1(LWGEOM_isempty);
+Datum LWGEOM_isempty(PG_FUNCTION_ARGS)
+{
+       LWGEOM *geom = (LWGEOM *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+
+       if ( lwgeom_getnumgeometries(SERIALIZED_FORM(geom)) == 0 )
+               PG_RETURN_BOOL(TRUE);
+       PG_RETURN_BOOL(FALSE);
+}
index ac542cba59a96e58be655a795ea9dc7aa9819477..053fe2fabda50140fedf1b4c1dadbfdf6e1f4dd8 100644 (file)
@@ -189,7 +189,7 @@ Datum WKBFromLWGEOM(PG_FUNCTION_ARGS)
        char *lwgeom_input = (char *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
 
        // SRID=#;<hexized wkb>
-       char *hexized_wkb_srid =unparse_WKB(lwgeom_input,palloc_fn,free_fn);
+       char *hexized_wkb_srid = unparse_WKB(lwgeom_input,palloc_fn,free_fn);
 
        char *hexized_wkb; // hexized_wkb_srid w/o srid
        char *result; //wkb
index c32396c3f0500480ae9440e1a5d56e8da7bc829b..7d80bae14f1fb67755a2d3c19ec5a5b6fbb8f957 100644 (file)
@@ -968,6 +968,11 @@ CREATEFUNCTION IsClosed(geometry)
        AS '@MODULE_FILENAME@', 'LWGEOM_isclosed_linestring'
        LANGUAGE 'C' WITH (isstrict);
 
+CREATEFUNCTION IsEmpty(geometry)
+       RETURNS boolean
+       AS '@MODULE_FILENAME@', 'LWGEOM_isempty'
+       LANGUAGE 'C' WITH (isstrict);
+
 CREATEFUNCTION SRID(geometry) 
        RETURNS int4
        AS '@MODULE_FILENAME@','LWGEOM_getSRID'