GBOX *box = NULL;
int type;
- /*
- ** This funx is a no-op only if a bbox cache is already present
- ** in input.
- */
- if ( lwgeom_is_collection(lwgeom) )
- {
- return lwgeom_clone(lwgeom);
- }
-
type = lwgeom->type;
if ( ! MULTITYPE[type] ) return lwgeom_clone(lwgeom);
** in input. If bbox cache is not there we'll need to handle
** automatic bbox addition FOR_COMPLEX_GEOMS.
*/
- if ( lwtype_is_collection(gserialized_get_type(geom)) &&
- gserialized_has_bbox(geom) )
- {
- PG_RETURN_POINTER(geom);
+ if ( gserialized_has_bbox(geom) ) {
+ switch (gserialized_get_type(geom))
+ {
+ case MULTIPOINTTYPE:
+ case MULTILINETYPE:
+ case MULTIPOLYGONTYPE:
+ case COLLECTIONTYPE:
+ case MULTICURVETYPE:
+ case MULTISURFACETYPE:
+ case TINTYPE:
+ PG_RETURN_POINTER(geom);
+ default:
+ break;
+ }
}
/* deserialize into lwgeoms[0] */
-- #2307 --
SELECT '#2307', ST_AsText(ST_SnapToGrid(ST_MakeValid('0106000020E6100000010000000103000000010000000A0000004B7DA956B99844C0DB0790FE8B4D1DC010BA74A9AF9444C049AFFC5B8C4D1DC03FC6CC690D9844C0DD67E5628C4D1DC07117B56B0D9844C0C80ABA67C45E1DC0839166ABAF9444C0387D4568C45E1DC010BA74A9AF9444C049AFFC5B8C4D1DC040C3CD74169444C0362EC0608C4D1DC07C1A3B77169444C0DC3ADB40B2641DC03AAE5F68B99844C0242948DEB1641DC04B7DA956B99844C0DB0790FE8B4D1DC0'::geometry),0.0001));
+SELECT '#2415.1', ST_AsText(ST_Multi(
+ 'COMPOUNDCURVE((0 0, 10 0),CIRCULARSTRING(10 0, 15 1, 20 10))'
+));
+SELECT '#2415.2', ST_AsText(ST_Multi(
+ 'CURVEPOLYGON(CIRCULARSTRING(10 0,15 1,20 0,18 5,20 10,10 10,10 0))'
+));
+
-- Clean up
DELETE FROM spatial_ref_sys;
#2110.3|t
#2145|6792004
#2307|MULTIPOLYGON(((-41.1932 -7.3257,-41.1616 -7.3257,-41.1569 -7.3257,-41.1569 -7.3483,-41.1932 -7.3483,-41.1932 -7.3257),(-41.1616 -7.3257,-41.1879 -7.3257,-41.1879 -7.3425,-41.1616 -7.3425,-41.1616 -7.3257)))
+#2415.1|MULTICURVE(COMPOUNDCURVE((0 0,10 0),CIRCULARSTRING(10 0,15 1,20 10)))
+#2415.2|MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(10 0,15 1,20 0,18 5,20 10,10 10,10 0)))