]> granicus.if.org Git - postgis/commitdiff
Fix #441. And introduce a change in behaviour: if geometryCollection and bbox, not...
authorOlivier Courtin <olivier.courtin@camptocamp.com>
Mon, 22 Feb 2010 22:04:18 +0000 (22:04 +0000)
committerOlivier Courtin <olivier.courtin@camptocamp.com>
Mon, 22 Feb 2010 22:04:18 +0000 (22:04 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5311 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/cunit/cu_out_geojson.c
liblwgeom/lwout_geojson.c

index 590d345891286121447db401d6c4f10cd063ce53..a1e8aa00e68fb0ec69d284e90acb12444097883e 100644 (file)
@@ -196,7 +196,6 @@ void out_geojson_test_srid(void)
            "EPSG:4326", 0, 0);
 }
 
-
 void out_geojson_test_bbox(void)
 {
        /* Linestring */
@@ -229,11 +228,10 @@ void out_geojson_test_bbox(void)
            "{\"type\":\"MultiPolygon\",\"bbox\":[0,1,10,11],\"coordinates\":[[[[0,1],[2,3],[4,5],[0,1]]],[[[6,7],[8,9],[10,11],[6,7]]]]}",
            NULL, 0, 1);
 
-#if 0
        /* GeometryCollection */
        do_geojson_test(
-           "GEOMETRYCOLLECTION(POINT(0 1),LINESTRING(2 3,4 5))",
-           "{\"type\":\"GeometryCollection\",\"geometries\":[{\"type\":\"Point\",\"coordinates\":[0,1]},{\"type\":\"LineString\",\"coordinates\":[[2,3],[4,5]]}]}",
+           "GEOMETRYCOLLECTION(LINESTRING(0 1,-1 3),LINESTRING(2 3,4 5))",
+           "{\"type\":\"GeometryCollection\",\"bbox\":[-1,1,4,5],\"geometries\":[{\"type\":\"LineString\",\"coordinates\":[[0,1],[-1,3]]},{\"type\":\"LineString\",\"coordinates\":[[2,3],[4,5]]}]}",
            NULL, 0, 1);
 
        /* Empty GeometryCollection */
@@ -242,10 +240,11 @@ void out_geojson_test_bbox(void)
            "{\"type\":\"GeometryCollection\",\"geometries\":[]}",
            NULL, 0, 1);
 
+#if 0
        /* Nested GeometryCollection */
        do_geojson_test(
            "GEOMETRYCOLLECTION(POINT(0 1),GEOMETRYCOLLECTION(LINESTRING(2 3,4 5)))",
-           "{\"type\":\"GeometryCollection\",\"geometries\":[{\"type\":\"Point\",\"coordinates\":[0,1]},]}",
+           "",
            NULL, 0, 1);
 #endif
 }
index d0801fc2b5dcdabcec7ca17c53b3887a4f3748a8..7944f2cef475ad8307c387a00d975722bbdf9c20 100644 (file)
@@ -1,5 +1,5 @@
 /**********************************************************************
- * $Id:$
+ * $Id$
  *
  * PostGIS - Spatial Types for PostgreSQL
  * http://postgis.refractions.net
@@ -569,7 +569,7 @@ asgeojson_collection_size(LWGEOM_INSPECTED *insp, char *srs, BOX3D *bbox, int pr
        {
                subgeom = lwgeom_getsubgeometry_inspected(insp, i);
                subinsp = lwgeom_inspect(subgeom);
-               size += asgeojson_inspected_size(subinsp, bbox, precision);
+               size += asgeojson_inspected_size(subinsp, NULL, precision);
                lwinspected_release(subinsp);
        }
        size += sizeof(",") * i;
@@ -596,7 +596,7 @@ asgeojson_collection_buf(LWGEOM_INSPECTED *insp, char *srs, char *output, BOX3D
                if (i) ptr += sprintf(ptr, ",");
                subgeom = lwgeom_getsubgeometry_inspected(insp, i);
                subinsp = lwgeom_inspect(subgeom);
-               ptr += asgeojson_inspected_buf(subinsp, ptr, bbox, precision);
+               ptr += asgeojson_inspected_buf(subinsp, ptr, NULL, precision);
                lwinspected_release(subinsp);
        }
 
@@ -678,15 +678,6 @@ asgeojson_inspected_buf(LWGEOM_INSPECTED *insp, char *output, BOX3D *bbox, int p
        int type = lwgeom_getType(insp->serialized_form[0]);
        char *ptr=output;
 
-       /* Compute 3D BBOX on the sub geometry */
-       if ( bbox )
-       {
-               lwfree(bbox);
-               bbox = NULL;
-               bbox = compute_serialized_box3d(
-                          lwgeom_getsubgeometry(insp->serialized_form, 0));
-       }
-
        switch (type)
        {
        case POINTTYPE: