From: Paul Ramsey Date: Fri, 20 Mar 2015 15:34:11 +0000 (+0000) Subject: #3031, allow MULTIPOINT EMPTY into Geometry(Point) columns X-Git-Tag: 2.2.0rc1~579 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b3f52be48fa2e267175eb81f7d8143aca3457322;p=postgis #3031, allow MULTIPOINT EMPTY into Geometry(Point) columns git-svn-id: http://svn.osgeo.org/postgis/trunk@13372 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/liblwgeom.h.in b/liblwgeom/liblwgeom.h.in index 44fe32b47..0b82836a6 100644 --- a/liblwgeom/liblwgeom.h.in +++ b/liblwgeom/liblwgeom.h.in @@ -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 diff --git a/postgis/geography.h b/postgis/geography.h index 5b777702a..e4410ecae 100644 --- a/postgis/geography.h +++ b/postgis/geography.h @@ -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); diff --git a/postgis/geography_inout.c b/postgis/geography_inout.c index b5700fbcb..a7d851544 100644 --- a/postgis/geography_inout.c +++ b/postgis/geography_inout.c @@ -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 diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index aef0e7074..a9903d9f0 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -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); } diff --git a/postgis/lwgeom_inout.c b/postgis/lwgeom_inout.c index 799e6e9a9..bf0daa40d 100644 --- a/postgis/lwgeom_inout.c +++ b/postgis/lwgeom_inout.c @@ -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 diff --git a/regress/typmod_expected b/regress/typmod_expected index 7fa49a0f6..ab724b97b 100644 --- a/regress/typmod_expected +++ b/regress/typmod_expected @@ -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