]> granicus.if.org Git - postgis/commitdiff
#3031, allow MULTIPOINT EMPTY into Geometry(Point) columns
authorPaul Ramsey <pramsey@cleverelephant.ca>
Fri, 20 Mar 2015 15:34:11 +0000 (15:34 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Fri, 20 Mar 2015 15:34:11 +0000 (15:34 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@13372 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/liblwgeom.h.in
postgis/geography.h
postgis/geography_inout.c
postgis/gserialized_typmod.c
postgis/lwgeom_inout.c
regress/typmod_expected

index 44fe32b4764a93079e526d8fd3d4ba5b178cac75..0b82836a68de724c12dd6ad227d515a64deab4d9 100644 (file)
@@ -723,6 +723,11 @@ extern int gserialized_has_z(const GSERIALIZED *gser);
 */
 extern int gserialized_has_m(const GSERIALIZED *gser);
 
+/**
+* Check if a #GSERIALIZED is a geography.
+*/
+extern int gserialized_is_geodetic(const GSERIALIZED *gser);
+
 /**
 * Return a number indicating presence of Z and M coordinates.
 * 0 = None, 1 = M, 2 = Z, 3 = ZM
index 5b777702aa4ad5ed60c372bc821e9249c63e86d7..e4410ecaef25668a0561889e0c1ddc52b768f27f 100644 (file)
@@ -16,7 +16,7 @@
 */
 
 /* Check that the typmod matches the flags on the lwgeom */
-void postgis_valid_typmod(const GSERIALIZED *gser, int32_t typmod);
+GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod);
 /* Check that the type is legal in geography (no curves please!) */
 void geography_valid_type(uint8_t type);
 
index b5700fbcb0e5c923afda893357a7262ce9476100..a7d8515449e0ad39684c397b7a5cd6ff7f0b1f7b 100644 (file)
@@ -104,7 +104,7 @@ GSERIALIZED* gserialized_geography_from_lwgeom(LWGEOM *lwgeom, int32 geog_typmod
        /* Check for typmod agreement */
        if ( geog_typmod >= 0 )
        {
-               postgis_valid_typmod(g_ser, geog_typmod);
+               g_ser = postgis_valid_typmod(g_ser, geog_typmod);
                POSTGIS_DEBUG(3, "typmod and geometry were consistent");
        }
        else
index aef0e707404420c39f8e60cb32b0b9a2c180125b..a9903d9f06f1e5da72acee13fcbe6293a25e480d 100644 (file)
@@ -102,7 +102,7 @@ Datum postgis_typmod_out(PG_FUNCTION_ARGS)
 * Check the consistency of the metadata we want to enforce in the typmod:
 * srid, type and dimensionality. If things are inconsistent, shut down the query.
 */
-void postgis_valid_typmod(const GSERIALIZED *gser, int32_t typmod)
+GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod)
 {
        int32 geom_srid = gserialized_get_srid(gser);
        int32 geom_type = gserialized_get_type(gser);
@@ -116,11 +116,32 @@ void postgis_valid_typmod(const GSERIALIZED *gser, int32_t typmod)
        POSTGIS_DEBUG(2, "Entered function");
 
        /* No typmod (-1) => no preferences */
-       if (typmod < 0) return;
+       if (typmod < 0) return gser;
 
        POSTGIS_DEBUGF(3, "Got geom(type = %d, srid = %d, hasz = %d, hasm = %d)", geom_type, geom_srid, geom_z, geom_m);
        POSTGIS_DEBUGF(3, "Got typmod(type = %d, srid = %d, hasz = %d, hasm = %d)", typmod_type, typmod_srid, typmod_z, typmod_m);
 
+       /*
+       * #3031: If a user is handing us a MULTIPOINT EMPTY but trying to fit it into
+       * a POINT geometry column, there's a strong chance the reason she has
+       * a MULTIPOINT EMPTY because we gave it to her during data dump, 
+       * converting the internal POINT EMPTY into a EWKB MULTIPOINT EMPTY 
+       * (because EWKB doesn't have a clean way to represent POINT EMPTY).
+       * In such a case, it makes sense to turn the MULTIPOINT EMPTY back into a 
+       * point EMPTY, rather than throwing an error.
+       */
+       if ( typmod_type == POINTTYPE && geom_type == MULTIPOINTTYPE && 
+            gserialized_is_empty(gser) )
+       {
+               pfree(gser);
+               LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m);
+               geom_type = POINTTYPE;
+               if ( gserialized_is_geodetic(gser) )
+                       gser = geography_serialize(lwpoint_as_lwgeom(empty_point));
+               else
+                       gser = geometry_serialize(lwpoint_as_lwgeom(empty_point));
+       }
+
        /* Typmod has a preference for SRID? Geometry SRID had better match. */
        if ( typmod_srid > 0 && typmod_srid != geom_srid )
        {
@@ -175,6 +196,9 @@ void postgis_valid_typmod(const GSERIALIZED *gser, int32_t typmod)
                            errcode(ERRCODE_INVALID_PARAMETER_VALUE),
                            errmsg("Geometry has M dimension but column does not" )));
        }
+       
+       return gser;
+       
 }
 
 
@@ -296,7 +320,7 @@ Datum geography_enforce_typmod(PG_FUNCTION_ARGS)
        /* bool isExplicit = PG_GETARG_BOOL(2); */
 
        /* Check if geometry typmod is consistent with the supplied one. */
-       postgis_valid_typmod(arg, typmod);
+       arg = postgis_valid_typmod(arg, typmod);
 
        PG_RETURN_POINTER(arg);
 }
@@ -315,7 +339,7 @@ Datum geometry_enforce_typmod(PG_FUNCTION_ARGS)
        /* bool isExplicit = PG_GETARG_BOOL(2); */
 
        /* Check if geometry typmod is consistent with the supplied one. */
-       postgis_valid_typmod(arg, typmod);
+       arg = postgis_valid_typmod(arg, typmod);
 
        PG_RETURN_POINTER(arg);
 }
index 799e6e9a9d1fcfd78a26a3b1d7b81350366e6120..bf0daa40de7f4162491d9d1b089538e5f715e92e 100644 (file)
@@ -121,7 +121,7 @@ Datum LWGEOM_in(PG_FUNCTION_ARGS)
 
        if ( geom_typmod >= 0 )
        {
-               postgis_valid_typmod(ret, geom_typmod);
+               ret = postgis_valid_typmod(ret, geom_typmod);
                POSTGIS_DEBUG(3, "typmod and geometry were consistent");
        }
        else
@@ -590,7 +590,7 @@ Datum LWGEOM_recv(PG_FUNCTION_ARGS)
 
        if ( geom_typmod >= 0 )
        {
-               postgis_valid_typmod(geom, geom_typmod);
+               geom = postgis_valid_typmod(geom, geom_typmod);
                POSTGIS_DEBUG(3, "typmod and geometry were consistent");
        }
        else
index 7fa49a0f67cf6148018f5c85e9894286bb3c2caf..ab724b97b7b2908790ecb7579a6c968595ed4d31 100644 (file)
@@ -18444,11 +18444,11 @@ multisurfacezm4326|4326|PolyhedralSurface|3|KO-BKO
 multisurfacezm4326|4326|Triangle|3|KO-BKO
 multisurfacezm4326|4326|Tin|3|KO-BKO
 multisurfacezm4326||COUNT|2|
-point|0|Point|0|KO-BKO-GKO-BGKO
+point|0|Point|0|OK-BOK-GOK-BGOK
 point|0|PointNE|0|OK-BOK-GOK-BGOK
 point|0|LineString|0|KO-BKO-GKO-BGKO
 point|0|Polygon|0|KO-BKO-GKO-BGKO
-point|0|MultiPoint|0|KO-BKO-GKO-BGKO
+point|0|MultiPoint|0|OK-BOK-GOK-BGOK
 point|0|MultiPointNE|0|KO-BKO-GKO-BGKO
 point|0|MultiLineString|0|KO-BKO-GKO-BGKO
 point|0|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18512,11 +18512,11 @@ point|0|MultiSurface|3|KO-BKO-GKO-BGKO
 point|0|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point|0|Triangle|3|KO-BKO-GKO-BGKO
 point|0|Tin|3|KO-BKO-GKO-BGKO
-point|4326|Point|0|KO-BKO-GKO-BGKO
+point|4326|Point|0|OK-BOK-GOK-BGOK
 point|4326|PointNE|0|OK-BOK-GOK-BGOK
 point|4326|LineString|0|KO-BKO-GKO-BGKO
 point|4326|Polygon|0|KO-BKO-GKO-BGKO
-point|4326|MultiPoint|0|KO-BKO-GKO-BGKO
+point|4326|MultiPoint|0|OK-BOK-GOK-BGOK
 point|4326|MultiPointNE|0|KO-BKO-GKO-BGKO
 point|4326|MultiLineString|0|KO-BKO-GKO-BGKO
 point|4326|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18580,13 +18580,13 @@ point|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 point|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point|4326|Triangle|3|KO-BKO-GKO-BGKO
 point|4326|Tin|3|KO-BKO-GKO-BGKO
-point||COUNT|4|
-point||GCOUNT|4|
-point0|0|Point|0|KO-BKO-GKO-BGKO
+point||COUNT|12|
+point||GCOUNT|12|
+point0|0|Point|0|OK-BOK-GOK-BGOK
 point0|0|PointNE|0|OK-BOK-GOK-BGOK
 point0|0|LineString|0|KO-BKO-GKO-BGKO
 point0|0|Polygon|0|KO-BKO-GKO-BGKO
-point0|0|MultiPoint|0|KO-BKO-GKO-BGKO
+point0|0|MultiPoint|0|OK-BOK-GOK-BGOK
 point0|0|MultiPointNE|0|KO-BKO-GKO-BGKO
 point0|0|MultiLineString|0|KO-BKO-GKO-BGKO
 point0|0|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18650,11 +18650,11 @@ point0|0|MultiSurface|3|KO-BKO-GKO-BGKO
 point0|0|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point0|0|Triangle|3|KO-BKO-GKO-BGKO
 point0|0|Tin|3|KO-BKO-GKO-BGKO
-point0|4326|Point|0|KO-BKO-GKO-BGKO
+point0|4326|Point|0|OK-BOK-GOK-BGOK
 point0|4326|PointNE|0|OK-BOK-GOK-BGOK
 point0|4326|LineString|0|KO-BKO-GKO-BGKO
 point0|4326|Polygon|0|KO-BKO-GKO-BGKO
-point0|4326|MultiPoint|0|KO-BKO-GKO-BGKO
+point0|4326|MultiPoint|0|OK-BOK-GOK-BGOK
 point0|4326|MultiPointNE|0|KO-BKO-GKO-BGKO
 point0|4326|MultiLineString|0|KO-BKO-GKO-BGKO
 point0|4326|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18718,13 +18718,13 @@ point0|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 point0|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point0|4326|Triangle|3|KO-BKO-GKO-BGKO
 point0|4326|Tin|3|KO-BKO-GKO-BGKO
-point0||COUNT|4|
-point0||GCOUNT|4|
-point4326|0|Point|0|KO-BKO-GKO-BGKO
+point0||COUNT|12|
+point0||GCOUNT|12|
+point4326|0|Point|0|KO-BKO-GOK-BGOK
 point4326|0|PointNE|0|KO-BKO-GOK-BGOK
 point4326|0|LineString|0|KO-BKO-GKO-BGKO
 point4326|0|Polygon|0|KO-BKO-GKO-BGKO
-point4326|0|MultiPoint|0|KO-BKO-GKO-BGKO
+point4326|0|MultiPoint|0|KO-BKO-GOK-BGOK
 point4326|0|MultiPointNE|0|KO-BKO-GKO-BGKO
 point4326|0|MultiLineString|0|KO-BKO-GKO-BGKO
 point4326|0|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18788,11 +18788,11 @@ point4326|0|MultiSurface|3|KO-BKO-GKO-BGKO
 point4326|0|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point4326|0|Triangle|3|KO-BKO-GKO-BGKO
 point4326|0|Tin|3|KO-BKO-GKO-BGKO
-point4326|4326|Point|0|KO-BKO-GKO-BGKO
+point4326|4326|Point|0|OK-BOK-GOK-BGOK
 point4326|4326|PointNE|0|OK-BOK-GOK-BGOK
 point4326|4326|LineString|0|KO-BKO-GKO-BGKO
 point4326|4326|Polygon|0|KO-BKO-GKO-BGKO
-point4326|4326|MultiPoint|0|KO-BKO-GKO-BGKO
+point4326|4326|MultiPoint|0|OK-BOK-GOK-BGOK
 point4326|4326|MultiPointNE|0|KO-BKO-GKO-BGKO
 point4326|4326|MultiLineString|0|KO-BKO-GKO-BGKO
 point4326|4326|MultiPolygon|0|KO-BKO-GKO-BGKO
@@ -18856,8 +18856,8 @@ point4326|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 point4326|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 point4326|4326|Triangle|3|KO-BKO-GKO-BGKO
 point4326|4326|Tin|3|KO-BKO-GKO-BGKO
-point4326||COUNT|2|
-point4326||GCOUNT|4|
+point4326||COUNT|6|
+point4326||GCOUNT|12|
 pointm|0|Point|0|KO-BKO-GKO-BGKO
 pointm|0|PointNE|0|KO-BKO-GKO-BGKO
 pointm|0|LineString|0|KO-BKO-GKO-BGKO
@@ -18892,11 +18892,11 @@ pointm|0|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm|0|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm|0|Triangle|2|KO-BKO-GKO-BGKO
 pointm|0|Tin|2|KO-BKO-GKO-BGKO
-pointm|0|Point|1|KO-BKO-GKO-BGKO
+pointm|0|Point|1|OK-BOK-GOK-BGOK
 pointm|0|PointNE|1|OK-BOK-GOK-BGOK
 pointm|0|LineString|1|KO-BKO-GKO-BGKO
 pointm|0|Polygon|1|KO-BKO-GKO-BGKO
-pointm|0|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm|0|MultiPoint|1|OK-BOK-GOK-BGOK
 pointm|0|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm|0|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm|0|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -18960,11 +18960,11 @@ pointm|4326|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm|4326|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm|4326|Triangle|2|KO-BKO-GKO-BGKO
 pointm|4326|Tin|2|KO-BKO-GKO-BGKO
-pointm|4326|Point|1|KO-BKO-GKO-BGKO
+pointm|4326|Point|1|OK-BOK-GOK-BGOK
 pointm|4326|PointNE|1|OK-BOK-GOK-BGOK
 pointm|4326|LineString|1|KO-BKO-GKO-BGKO
 pointm|4326|Polygon|1|KO-BKO-GKO-BGKO
-pointm|4326|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm|4326|MultiPoint|1|OK-BOK-GOK-BGOK
 pointm|4326|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm|4326|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm|4326|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -18994,8 +18994,8 @@ pointm|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointm|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointm|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointm|4326|Tin|3|KO-BKO-GKO-BGKO
-pointm||COUNT|4|
-pointm||GCOUNT|4|
+pointm||COUNT|12|
+pointm||GCOUNT|12|
 pointm0|0|Point|0|KO-BKO-GKO-BGKO
 pointm0|0|PointNE|0|KO-BKO-GKO-BGKO
 pointm0|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19030,11 +19030,11 @@ pointm0|0|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm0|0|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm0|0|Triangle|2|KO-BKO-GKO-BGKO
 pointm0|0|Tin|2|KO-BKO-GKO-BGKO
-pointm0|0|Point|1|KO-BKO-GKO-BGKO
+pointm0|0|Point|1|OK-BOK-GOK-BGOK
 pointm0|0|PointNE|1|OK-BOK-GOK-BGOK
 pointm0|0|LineString|1|KO-BKO-GKO-BGKO
 pointm0|0|Polygon|1|KO-BKO-GKO-BGKO
-pointm0|0|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm0|0|MultiPoint|1|OK-BOK-GOK-BGOK
 pointm0|0|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm0|0|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm0|0|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -19098,11 +19098,11 @@ pointm0|4326|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm0|4326|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm0|4326|Triangle|2|KO-BKO-GKO-BGKO
 pointm0|4326|Tin|2|KO-BKO-GKO-BGKO
-pointm0|4326|Point|1|KO-BKO-GKO-BGKO
+pointm0|4326|Point|1|OK-BOK-GOK-BGOK
 pointm0|4326|PointNE|1|OK-BOK-GOK-BGOK
 pointm0|4326|LineString|1|KO-BKO-GKO-BGKO
 pointm0|4326|Polygon|1|KO-BKO-GKO-BGKO
-pointm0|4326|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm0|4326|MultiPoint|1|OK-BOK-GOK-BGOK
 pointm0|4326|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm0|4326|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm0|4326|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -19132,8 +19132,8 @@ pointm0|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointm0|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointm0|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointm0|4326|Tin|3|KO-BKO-GKO-BGKO
-pointm0||COUNT|4|
-pointm0||GCOUNT|4|
+pointm0||COUNT|12|
+pointm0||GCOUNT|12|
 pointm4326|0|Point|0|KO-BKO-GKO-BGKO
 pointm4326|0|PointNE|0|KO-BKO-GKO-BGKO
 pointm4326|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19168,11 +19168,11 @@ pointm4326|0|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm4326|0|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm4326|0|Triangle|2|KO-BKO-GKO-BGKO
 pointm4326|0|Tin|2|KO-BKO-GKO-BGKO
-pointm4326|0|Point|1|KO-BKO-GKO-BGKO
+pointm4326|0|Point|1|KO-BKO-GOK-BGOK
 pointm4326|0|PointNE|1|KO-BKO-GOK-BGOK
 pointm4326|0|LineString|1|KO-BKO-GKO-BGKO
 pointm4326|0|Polygon|1|KO-BKO-GKO-BGKO
-pointm4326|0|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm4326|0|MultiPoint|1|KO-BKO-GOK-BGOK
 pointm4326|0|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm4326|0|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm4326|0|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -19236,11 +19236,11 @@ pointm4326|4326|MultiSurface|2|KO-BKO-GKO-BGKO
 pointm4326|4326|PolyhedralSurface|2|KO-BKO-GKO-BGKO
 pointm4326|4326|Triangle|2|KO-BKO-GKO-BGKO
 pointm4326|4326|Tin|2|KO-BKO-GKO-BGKO
-pointm4326|4326|Point|1|KO-BKO-GKO-BGKO
+pointm4326|4326|Point|1|OK-BOK-GOK-BGOK
 pointm4326|4326|PointNE|1|OK-BOK-GOK-BGOK
 pointm4326|4326|LineString|1|KO-BKO-GKO-BGKO
 pointm4326|4326|Polygon|1|KO-BKO-GKO-BGKO
-pointm4326|4326|MultiPoint|1|KO-BKO-GKO-BGKO
+pointm4326|4326|MultiPoint|1|OK-BOK-GOK-BGOK
 pointm4326|4326|MultiPointNE|1|KO-BKO-GKO-BGKO
 pointm4326|4326|MultiLineString|1|KO-BKO-GKO-BGKO
 pointm4326|4326|MultiPolygon|1|KO-BKO-GKO-BGKO
@@ -19270,8 +19270,8 @@ pointm4326|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointm4326|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointm4326|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointm4326|4326|Tin|3|KO-BKO-GKO-BGKO
-pointm4326||COUNT|2|
-pointm4326||GCOUNT|4|
+pointm4326||COUNT|6|
+pointm4326||GCOUNT|12|
 pointz|0|Point|0|KO-BKO-GKO-BGKO
 pointz|0|PointNE|0|KO-BKO-GKO-BGKO
 pointz|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19289,11 +19289,11 @@ pointz|0|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz|0|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz|0|Triangle|0|KO-BKO-GKO-BGKO
 pointz|0|Tin|0|KO-BKO-GKO-BGKO
-pointz|0|Point|2|KO-BKO-GKO-BGKO
+pointz|0|Point|2|OK-BOK-GOK-BGOK
 pointz|0|PointNE|2|OK-BOK-GOK-BGOK
 pointz|0|LineString|2|KO-BKO-GKO-BGKO
 pointz|0|Polygon|2|KO-BKO-GKO-BGKO
-pointz|0|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz|0|MultiPoint|2|OK-BOK-GOK-BGOK
 pointz|0|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz|0|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz|0|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19357,11 +19357,11 @@ pointz|4326|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz|4326|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz|4326|Triangle|0|KO-BKO-GKO-BGKO
 pointz|4326|Tin|0|KO-BKO-GKO-BGKO
-pointz|4326|Point|2|KO-BKO-GKO-BGKO
+pointz|4326|Point|2|OK-BOK-GOK-BGOK
 pointz|4326|PointNE|2|OK-BOK-GOK-BGOK
 pointz|4326|LineString|2|KO-BKO-GKO-BGKO
 pointz|4326|Polygon|2|KO-BKO-GKO-BGKO
-pointz|4326|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz|4326|MultiPoint|2|OK-BOK-GOK-BGOK
 pointz|4326|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz|4326|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz|4326|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19408,8 +19408,8 @@ pointz|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointz|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointz|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointz|4326|Tin|3|KO-BKO-GKO-BGKO
-pointz||COUNT|4|
-pointz||GCOUNT|4|
+pointz||COUNT|12|
+pointz||GCOUNT|12|
 pointz0|0|Point|0|KO-BKO-GKO-BGKO
 pointz0|0|PointNE|0|KO-BKO-GKO-BGKO
 pointz0|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19427,11 +19427,11 @@ pointz0|0|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz0|0|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz0|0|Triangle|0|KO-BKO-GKO-BGKO
 pointz0|0|Tin|0|KO-BKO-GKO-BGKO
-pointz0|0|Point|2|KO-BKO-GKO-BGKO
+pointz0|0|Point|2|OK-BOK-GOK-BGOK
 pointz0|0|PointNE|2|OK-BOK-GOK-BGOK
 pointz0|0|LineString|2|KO-BKO-GKO-BGKO
 pointz0|0|Polygon|2|KO-BKO-GKO-BGKO
-pointz0|0|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz0|0|MultiPoint|2|OK-BOK-GOK-BGOK
 pointz0|0|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz0|0|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz0|0|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19495,11 +19495,11 @@ pointz0|4326|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz0|4326|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz0|4326|Triangle|0|KO-BKO-GKO-BGKO
 pointz0|4326|Tin|0|KO-BKO-GKO-BGKO
-pointz0|4326|Point|2|KO-BKO-GKO-BGKO
+pointz0|4326|Point|2|OK-BOK-GOK-BGOK
 pointz0|4326|PointNE|2|OK-BOK-GOK-BGOK
 pointz0|4326|LineString|2|KO-BKO-GKO-BGKO
 pointz0|4326|Polygon|2|KO-BKO-GKO-BGKO
-pointz0|4326|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz0|4326|MultiPoint|2|OK-BOK-GOK-BGOK
 pointz0|4326|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz0|4326|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz0|4326|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19546,8 +19546,8 @@ pointz0|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointz0|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointz0|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointz0|4326|Tin|3|KO-BKO-GKO-BGKO
-pointz0||COUNT|4|
-pointz0||GCOUNT|4|
+pointz0||COUNT|12|
+pointz0||GCOUNT|12|
 pointz4326|0|Point|0|KO-BKO-GKO-BGKO
 pointz4326|0|PointNE|0|KO-BKO-GKO-BGKO
 pointz4326|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19565,11 +19565,11 @@ pointz4326|0|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz4326|0|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz4326|0|Triangle|0|KO-BKO-GKO-BGKO
 pointz4326|0|Tin|0|KO-BKO-GKO-BGKO
-pointz4326|0|Point|2|KO-BKO-GKO-BGKO
+pointz4326|0|Point|2|KO-BKO-GOK-BGOK
 pointz4326|0|PointNE|2|KO-BKO-GOK-BGOK
 pointz4326|0|LineString|2|KO-BKO-GKO-BGKO
 pointz4326|0|Polygon|2|KO-BKO-GKO-BGKO
-pointz4326|0|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz4326|0|MultiPoint|2|KO-BKO-GOK-BGOK
 pointz4326|0|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz4326|0|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz4326|0|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19633,11 +19633,11 @@ pointz4326|4326|MultiSurface|0|KO-BKO-GKO-BGKO
 pointz4326|4326|PolyhedralSurface|0|KO-BKO-GKO-BGKO
 pointz4326|4326|Triangle|0|KO-BKO-GKO-BGKO
 pointz4326|4326|Tin|0|KO-BKO-GKO-BGKO
-pointz4326|4326|Point|2|KO-BKO-GKO-BGKO
+pointz4326|4326|Point|2|OK-BOK-GOK-BGOK
 pointz4326|4326|PointNE|2|OK-BOK-GOK-BGOK
 pointz4326|4326|LineString|2|KO-BKO-GKO-BGKO
 pointz4326|4326|Polygon|2|KO-BKO-GKO-BGKO
-pointz4326|4326|MultiPoint|2|KO-BKO-GKO-BGKO
+pointz4326|4326|MultiPoint|2|OK-BOK-GOK-BGOK
 pointz4326|4326|MultiPointNE|2|KO-BKO-GKO-BGKO
 pointz4326|4326|MultiLineString|2|KO-BKO-GKO-BGKO
 pointz4326|4326|MultiPolygon|2|KO-BKO-GKO-BGKO
@@ -19684,8 +19684,8 @@ pointz4326|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointz4326|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointz4326|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointz4326|4326|Tin|3|KO-BKO-GKO-BGKO
-pointz4326||COUNT|2|
-pointz4326||GCOUNT|4|
+pointz4326||COUNT|6|
+pointz4326||GCOUNT|12|
 pointzm|0|Point|0|KO-BKO-GKO-BGKO
 pointzm|0|PointNE|0|KO-BKO-GKO-BGKO
 pointzm|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19737,11 +19737,11 @@ pointzm|0|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm|0|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm|0|Triangle|1|KO-BKO-GKO-BGKO
 pointzm|0|Tin|1|KO-BKO-GKO-BGKO
-pointzm|0|Point|3|KO-BKO-GKO-BGKO
+pointzm|0|Point|3|OK-BOK-GOK-BGOK
 pointzm|0|PointNE|3|OK-BOK-GOK-BGOK
 pointzm|0|LineString|3|KO-BKO-GKO-BGKO
 pointzm|0|Polygon|3|KO-BKO-GKO-BGKO
-pointzm|0|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm|0|MultiPoint|3|OK-BOK-GOK-BGOK
 pointzm|0|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm|0|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm|0|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -19805,11 +19805,11 @@ pointzm|4326|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm|4326|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm|4326|Triangle|1|KO-BKO-GKO-BGKO
 pointzm|4326|Tin|1|KO-BKO-GKO-BGKO
-pointzm|4326|Point|3|KO-BKO-GKO-BGKO
+pointzm|4326|Point|3|OK-BOK-GOK-BGOK
 pointzm|4326|PointNE|3|OK-BOK-GOK-BGOK
 pointzm|4326|LineString|3|KO-BKO-GKO-BGKO
 pointzm|4326|Polygon|3|KO-BKO-GKO-BGKO
-pointzm|4326|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm|4326|MultiPoint|3|OK-BOK-GOK-BGOK
 pointzm|4326|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm|4326|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm|4326|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -19822,8 +19822,8 @@ pointzm|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointzm|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointzm|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointzm|4326|Tin|3|KO-BKO-GKO-BGKO
-pointzm||COUNT|4|
-pointzm||GCOUNT|4|
+pointzm||COUNT|12|
+pointzm||GCOUNT|12|
 pointzm0|0|Point|0|KO-BKO-GKO-BGKO
 pointzm0|0|PointNE|0|KO-BKO-GKO-BGKO
 pointzm0|0|LineString|0|KO-BKO-GKO-BGKO
@@ -19875,11 +19875,11 @@ pointzm0|0|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm0|0|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm0|0|Triangle|1|KO-BKO-GKO-BGKO
 pointzm0|0|Tin|1|KO-BKO-GKO-BGKO
-pointzm0|0|Point|3|KO-BKO-GKO-BGKO
+pointzm0|0|Point|3|OK-BOK-GOK-BGOK
 pointzm0|0|PointNE|3|OK-BOK-GOK-BGOK
 pointzm0|0|LineString|3|KO-BKO-GKO-BGKO
 pointzm0|0|Polygon|3|KO-BKO-GKO-BGKO
-pointzm0|0|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm0|0|MultiPoint|3|OK-BOK-GOK-BGOK
 pointzm0|0|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm0|0|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm0|0|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -19943,11 +19943,11 @@ pointzm0|4326|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm0|4326|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm0|4326|Triangle|1|KO-BKO-GKO-BGKO
 pointzm0|4326|Tin|1|KO-BKO-GKO-BGKO
-pointzm0|4326|Point|3|KO-BKO-GKO-BGKO
+pointzm0|4326|Point|3|OK-BOK-GOK-BGOK
 pointzm0|4326|PointNE|3|OK-BOK-GOK-BGOK
 pointzm0|4326|LineString|3|KO-BKO-GKO-BGKO
 pointzm0|4326|Polygon|3|KO-BKO-GKO-BGKO
-pointzm0|4326|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm0|4326|MultiPoint|3|OK-BOK-GOK-BGOK
 pointzm0|4326|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm0|4326|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm0|4326|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -19960,8 +19960,8 @@ pointzm0|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointzm0|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointzm0|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointzm0|4326|Tin|3|KO-BKO-GKO-BGKO
-pointzm0||COUNT|4|
-pointzm0||GCOUNT|4|
+pointzm0||COUNT|12|
+pointzm0||GCOUNT|12|
 pointzm4326|0|Point|0|KO-BKO-GKO-BGKO
 pointzm4326|0|PointNE|0|KO-BKO-GKO-BGKO
 pointzm4326|0|LineString|0|KO-BKO-GKO-BGKO
@@ -20013,11 +20013,11 @@ pointzm4326|0|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm4326|0|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm4326|0|Triangle|1|KO-BKO-GKO-BGKO
 pointzm4326|0|Tin|1|KO-BKO-GKO-BGKO
-pointzm4326|0|Point|3|KO-BKO-GKO-BGKO
+pointzm4326|0|Point|3|KO-BKO-GOK-BGOK
 pointzm4326|0|PointNE|3|KO-BKO-GOK-BGOK
 pointzm4326|0|LineString|3|KO-BKO-GKO-BGKO
 pointzm4326|0|Polygon|3|KO-BKO-GKO-BGKO
-pointzm4326|0|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm4326|0|MultiPoint|3|KO-BKO-GOK-BGOK
 pointzm4326|0|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm4326|0|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm4326|0|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -20081,11 +20081,11 @@ pointzm4326|4326|MultiSurface|1|KO-BKO-GKO-BGKO
 pointzm4326|4326|PolyhedralSurface|1|KO-BKO-GKO-BGKO
 pointzm4326|4326|Triangle|1|KO-BKO-GKO-BGKO
 pointzm4326|4326|Tin|1|KO-BKO-GKO-BGKO
-pointzm4326|4326|Point|3|KO-BKO-GKO-BGKO
+pointzm4326|4326|Point|3|OK-BOK-GOK-BGOK
 pointzm4326|4326|PointNE|3|OK-BOK-GOK-BGOK
 pointzm4326|4326|LineString|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|Polygon|3|KO-BKO-GKO-BGKO
-pointzm4326|4326|MultiPoint|3|KO-BKO-GKO-BGKO
+pointzm4326|4326|MultiPoint|3|OK-BOK-GOK-BGOK
 pointzm4326|4326|MultiPointNE|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|MultiLineString|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|MultiPolygon|3|KO-BKO-GKO-BGKO
@@ -20098,8 +20098,8 @@ pointzm4326|4326|MultiSurface|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|PolyhedralSurface|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|Triangle|3|KO-BKO-GKO-BGKO
 pointzm4326|4326|Tin|3|KO-BKO-GKO-BGKO
-pointzm4326||COUNT|2|
-pointzm4326||GCOUNT|4|
+pointzm4326||COUNT|6|
+pointzm4326||GCOUNT|12|
 polygon|0|Point|0|KO-BKO-GKO-BGKO
 polygon|0|PointNE|0|KO-BKO-GKO-BGKO
 polygon|0|LineString|0|KO-BKO-GKO-BGKO