From: Paul Ramsey Date: Tue, 30 Jun 2015 16:38:45 +0000 (+0000) Subject: Stroke curves for input into GEOS, X-Git-Tag: 2.2.0rc1~274 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bfbf9312b632c5a067ce6492625c739180f02aed;p=postgis Stroke curves for input into GEOS, Update SQL-MM curve regression tests git-svn-id: http://svn.osgeo.org/postgis/trunk@13764 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwgeom_geos.c b/liblwgeom/lwgeom_geos.c index a66ba956e..680955917 100644 --- a/liblwgeom/lwgeom_geos.c +++ b/liblwgeom/lwgeom_geos.c @@ -337,10 +337,10 @@ LWGEOM2GEOS(const LWGEOM *lwgeom, int autofix) if (lwgeom_has_arc(lwgeom)) { - LWDEBUG(3, "LWGEOM2GEOS: arced geometry found."); - - lwerror("Exception in LWGEOM2GEOS: curved geometry not supported."); - return NULL; + LWGEOM *lwgeom_stroked = lwgeom_stroke(lwgeom, 32); + GEOSGeometry *g = LWGEOM2GEOS(lwgeom_stroked, autofix); + lwgeom_free(lwgeom_stroked); + return g; } switch (lwgeom->type) diff --git a/postgis/lwgeom_geos.c b/postgis/lwgeom_geos.c index 82622d835..f26394c72 100644 --- a/postgis/lwgeom_geos.c +++ b/postgis/lwgeom_geos.c @@ -3170,23 +3170,25 @@ Datum isring(PG_FUNCTION_ARGS) geom = PG_GETARG_GSERIALIZED_P(0); - if (gserialized_get_type(geom) != LINETYPE) - { - elog(ERROR,"isring() should only be called on a LINE"); - } - /* Empty things can't close */ if ( gserialized_is_empty(geom) ) PG_RETURN_BOOL(FALSE); initGEOS(lwpgnotice, lwgeom_geos_error); - g1 = (GEOSGeometry *)POSTGIS2GEOS(geom ); + g1 = (GEOSGeometry *)POSTGIS2GEOS(geom); if ( 0 == g1 ) /* exception thrown at construction */ { HANDLE_GEOS_ERROR("First argument geometry could not be converted to GEOS"); PG_RETURN_NULL(); } + + if ( GEOSGeomTypeId(g1) != GEOS_LINESTRING ) + { + GEOSGeom_destroy(g1); + elog(ERROR, "ST_IsRing() should only be called on a linear feature"); + } + result = GEOSisRing(g1); GEOSGeom_destroy(g1); @@ -3213,11 +3215,11 @@ GEOS2POSTGIS(GEOSGeom geom, char want3d) lwgeom = GEOS2LWGEOM(geom, want3d); if ( ! lwgeom ) { - lwpgerror("GEOS2POSTGIS: GEOS2LWGEOM returned NULL"); + lwpgerror("%s: GEOS2LWGEOM returned NULL", __func__); return NULL; } - POSTGIS_DEBUGF(4, "GEOS2POSTGIS: GEOS2LWGEOM returned a %s", lwgeom_summary(lwgeom, 0)); + POSTGIS_DEBUGF(4, "%s: GEOS2LWGEOM returned a %s", __func__, lwgeom_summary(lwgeom, 0)); if ( lwgeom_needs_bbox(lwgeom) == LW_TRUE ) { @@ -3493,7 +3495,7 @@ Datum polygonize_garray(PG_FUNCTION_ARGS) GEOSGeom_destroy(geos_result); if ( result == NULL ) { - elog(ERROR, "GEOS2POSTGIS returned an error"); + elog(ERROR, "%s returned an error", __func__); PG_RETURN_NULL(); /*never get here */ } diff --git a/regress/sql-mm-circularstring.sql b/regress/sql-mm-circularstring.sql index 67a88677f..710179b9c 100644 --- a/regress/sql-mm-circularstring.sql +++ b/regress/sql-mm-circularstring.sql @@ -33,25 +33,25 @@ SELECT 'geometrytype04', geometrytype(ST_geomfromewkt('CIRCULARSTRING( 0.26794919243112270647255365849413 1, 0.5857864376269049511981127579 1.4142135623730950488016887242097)')); -SELECT 'isClosed01', ST_isClosed(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isClosed01', ST_IsClosed(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, 2 0, 0 -2)')); -SELECT 'isSimple01', ST_isSimple(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isSimple01', ST_IsSimple(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, 2 0, 0 -2)')); -SELECT 'isRing01', ST_isRing(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isRing01', ST_IsRing(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, 2 0, 0 -2)')); -SELECT 'isClosed02', ST_isClosed(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isClosed02', ST_IsClosed(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, @@ -61,7 +61,7 @@ SELECT 'isClosed02', ST_isClosed(ST_geomfromewkt('CIRCULARSTRING( -2 -2, -2 0, 0 -2)')); -SELECT 'isSimple02', ST_isSimple(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isSimple02', ST_IsSimple(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, @@ -71,7 +71,7 @@ SELECT 'isSimple02', ST_isSimple(ST_geomfromewkt('CIRCULARSTRING( -2 -2, -2 0, 0 -2)')); -SELECT 'isRing02', ST_isRing(ST_geomfromewkt('CIRCULARSTRING( +SELECT 'isRing02', ST_IsRing(ST_geomfromewkt('CIRCULARSTRING( 0 -2, -2 0, 0 2, @@ -163,94 +163,48 @@ SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.circularstring; SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.circularstring; SELECT 'astext04', ST_astext(the_geom_4d) FROM public.circularstring; -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.circularstring; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.circularstring; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.circularstring; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.circularstring; +SELECT 'asewkt01', ST_AsEWKT(the_geom_2d) FROM public.circularstring; +SELECT 'asewkt02', ST_AsEWKT(the_geom_3dm) FROM public.circularstring; +SELECT 'asewkt03', ST_AsEWKT(the_geom_3dz) FROM public.circularstring; +SELECT 'asewkt04', ST_AsEWKT(the_geom_4d) FROM public.circularstring; --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(asbinary(the_geom_2d), 'hex') FROM public.circularstring; ---SELECT 'asbinary02', encode(asbinary(the_geom_3dm), 'hex') FROM public.circularstring; ---SELECT 'asbinary03', encode(asbinary(the_geom_3dz), 'hex') FROM public.circularstring; ---SELECT 'asbinary04', encode(asbinary(the_geom_4d), 'hex') FROM public.circularstring; --- ---SELECT 'asewkb01', encode(asewkb(the_geom_2d), 'hex') FROM public.circularstring; ---SELECT 'asewkb02', encode(asewkb(the_geom_3dm), 'hex') FROM public.circularstring; ---SELECT 'asewkb03', encode(asewkb(the_geom_3dz), 'hex') FROM public.circularstring; ---SELECT 'asewkb04', encode(asewkb(the_geom_4d), 'hex') FROM public.circularstring; +SELECT 'asbinary01', encode(ST_AsBinary(the_geom_2d, 'ndr'), 'hex') FROM public.circularstring; +SELECT 'asbinary02', encode(ST_AsBinary(the_geom_3dm, 'xdr'), 'hex') FROM public.circularstring; +SELECT 'asbinary03', encode(ST_AsBinary(the_geom_3dz, 'ndr'), 'hex') FROM public.circularstring; +SELECT 'asbinary04', encode(ST_AsBinary(the_geom_4d, 'xdr'), 'hex') FROM public.circularstring; -SELECT 'ST_CurveToLine-201', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-202', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-203', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-204', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'asewkb01', encode(ST_AsEWKB(the_geom_2d, 'ndr'), 'hex') FROM public.circularstring; +SELECT 'asewkb02', encode(ST_AsEWKB(the_geom_3dm, 'xdr'), 'hex') FROM public.circularstring; +SELECT 'asewkb03', encode(ST_AsEWKB(the_geom_3dz, 'ndr'), 'hex') FROM public.circularstring; +SELECT 'asewkb04', encode(ST_AsEWKB(the_geom_4d, 'xdr'), 'hex') FROM public.circularstring; -SELECT 'ST_CurveToLine-401', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-402', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-403', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine-404', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-201', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-202', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-203', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-204', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine01', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine02', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine03', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT 'ST_CurveToLine04', ST_asewkt( ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-401', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-402', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-403', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine-404', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; ---Removed due to discrepencies between hardware ---SELECT 'box2d01', box2d(the_geom_2d) FROM public.circularstring; ---SELECT 'box2d02', box2d(the_geom_3dm) FROM public.circularstring; ---SELECT 'box2d03', box2d(the_geom_3dz) FROM public.circularstring; ---SELECT 'box2d04', box2d(the_geom_4d) FROM public.circularstring; +SELECT 'ST_CurveToLine01', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine02', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine03', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; +SELECT 'ST_CurveToLine04', ST_AsEWKT( ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; ---SELECT 'box3d01', box3d(the_geom_2d) FROM public.circularstring; ---SELECT 'box3d02', box3d(the_geom_3dm) FROM public.circularstring; ---SELECT 'box3d03', box3d(the_geom_3dz) FROM public.circularstring; ---SELECT 'box3d04', box3d(the_geom_4d) FROM public.circularstring; -- TODO: ST_SnapToGrid is required to remove platform dependent precision -- issues. Until ST_SnapToGrid is updated to work against curves, these -- tests cannot be run. ---SELECT 'ST_LineToCurve01', ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.circularstring; ---SELECT 'ST_LineToCurve02', ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.circularstring; ---SELECT 'ST_LineToCurve03', ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.circularstring; ---SELECT 'ST_LineToCurve04', ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.circularstring; +--SELECT 'ST_LineToCurve01', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.circularstring; +--SELECT 'ST_LineToCurve02', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.circularstring; +--SELECT 'ST_LineToCurve03', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.circularstring; +--SELECT 'ST_LineToCurve04', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.circularstring; --- Repeat tests with new function names. -SELECT 'astext01', ST_astext(the_geom_2d) FROM public.circularstring; -SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.circularstring; -SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.circularstring; -SELECT 'astext04', ST_astext(the_geom_4d) FROM public.circularstring; - -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.circularstring; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.circularstring; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.circularstring; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.circularstring; - --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(ST_asbinary(the_geom_2d), 'hex') FROM public.circularstring; ---SELECT 'asbinary02', encode(ST_asbinary(the_geom_3dm), 'hex') FROM public.circularstring; ---SELECT 'asbinary03', encode(ST_asbinary(the_geom_3dz), 'hex') FROM public.circularstring; ---SELECT 'asbinary04', encode(ST_asbinary(the_geom_4d), 'hex') FROM public.circularstring; --- ---SELECT 'asewkb01', encode(ST_asewkb(the_geom_2d), 'hex') FROM public.circularstring; ---SELECT 'asewkb02', encode(ST_asewkb(the_geom_3dm), 'hex') FROM public.circularstring; ---SELECT 'asewkb03', encode(ST_asewkb(the_geom_3dz), 'hex') FROM public.circularstring; ---SELECT 'asewkb04', encode(ST_asewkb(the_geom_4d), 'hex') FROM public.circularstring; - ---Removed due to discrepencies between hardware ---SELECT 'box2d01', box2d(the_geom_2d) FROM public.circularstring; ---SELECT 'box2d02', box2d(the_geom_3dm) FROM public.circularstring; ---SELECT 'box2d03', box2d(the_geom_3dz) FROM public.circularstring; ---SELECT 'box2d04', box2d(the_geom_4d) FROM public.circularstring; - ---SELECT 'box3d01', box3d(the_geom_2d) FROM public.circularstring; ---SELECT 'box3d02', box3d(the_geom_3dm) FROM public.circularstring; ---SELECT 'box3d03', box3d(the_geom_3dz) FROM public.circularstring; ---SELECT 'box3d04', box3d(the_geom_4d) FROM public.circularstring; - -SELECT 'isValid01', ST_isValid(the_geom_2d) FROM public.circularstring; -SELECT 'isValid02', ST_isValid(the_geom_3dm) FROM public.circularstring; -SELECT 'isValid03', ST_isValid(the_geom_3dz) FROM public.circularstring; -SELECT 'isValid04', ST_isValid(the_geom_4d) FROM public.circularstring; +SELECT 'isValid01', ST_IsValid(the_geom_2d) FROM public.circularstring; +SELECT 'isValid02', ST_IsValid(the_geom_3dm) FROM public.circularstring; +SELECT 'isValid03', ST_IsValid(the_geom_3dz) FROM public.circularstring; +SELECT 'isValid04', ST_IsValid(the_geom_4d) FROM public.circularstring; SELECT 'dimension01', ST_dimension(the_geom_2d) FROM public.circularstring; SELECT 'dimension02', ST_dimension(the_geom_3dm) FROM public.circularstring; @@ -262,24 +216,21 @@ SELECT 'SRID02', ST_SRID(the_geom_3dm) FROM public.circularstring; SELECT 'SRID03', ST_SRID(the_geom_3dz) FROM public.circularstring; SELECT 'SRID04', ST_SRID(the_geom_4d) FROM public.circularstring; -SELECT 'accessors01', ST_IsEmpty(the_geom_2d), ST_isSimple(the_geom_2d), ST_isClosed(the_geom_2d), ST_isRing(the_geom_2d) FROM public.circularstring; -SELECT 'accessors02', ST_IsEmpty(the_geom_3dm), ST_isSimple(the_geom_3dm), ST_isClosed(the_geom_3dm), ST_isRing(the_geom_3dm) FROM public.circularstring; -SELECT 'accessors03', ST_IsEmpty(the_geom_3dz), ST_isSimple(the_geom_3dz), ST_isClosed(the_geom_3dz), ST_isRing(the_geom_3dz) FROM public.circularstring; -SELECT 'accessors04', ST_IsEmpty(the_geom_4d), ST_isSimple(the_geom_4d), ST_isClosed(the_geom_4d), ST_isRing(the_geom_4d) FROM public.circularstring; +SELECT 'accessors01', ST_IsEmpty(the_geom_2d), ST_IsSimple(the_geom_2d), ST_IsClosed(the_geom_2d), ST_IsRing(the_geom_2d) FROM public.circularstring; +SELECT 'accessors02', ST_IsEmpty(the_geom_3dm), ST_IsSimple(the_geom_3dm), ST_IsClosed(the_geom_3dm), ST_IsRing(the_geom_3dm) FROM public.circularstring; +SELECT 'accessors03', ST_IsEmpty(the_geom_3dz), ST_IsSimple(the_geom_3dz), ST_IsClosed(the_geom_3dz), ST_IsRing(the_geom_3dz) FROM public.circularstring; +SELECT 'accessors04', ST_IsEmpty(the_geom_4d), ST_IsSimple(the_geom_4d), ST_IsClosed(the_geom_4d), ST_IsRing(the_geom_4d) FROM public.circularstring; SELECT 'envelope01', ST_AsText(ST_SnapToGrid(ST_Envelope(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; SELECT 'envelope02', ST_AsText(ST_SnapToGrid(ST_Envelope(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; SELECT 'envelope03', ST_AsText(ST_SnapToGrid(ST_Envelope(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; SELECT 'envelope04', ST_AsText(ST_SnapToGrid(ST_Envelope(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.circularstring; -SELECT DropGeometryColumn('public', 'circularstring', 'the_geom_4d'); -SELECT DropGeometryColumn('public', 'circularstring', 'the_geom_3dz'); -SELECT DropGeometryColumn('public', 'circularstring', 'the_geom_3dm'); -SELECT DropGeometryColumn('public', 'circularstring', 'the_geom_2d'); DROP TABLE public.circularstring; -SELECT ST_AsText(st_snaptogrid(box2d('CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)'::geometry),0.0001)); -SELECT 'npoints_is_five',ST_NumPoints(ST_GeomFromEWKT('CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3)')); + +SELECT ST_AsText(ST_SnapToGrid(box2d('CIRCULARSTRING(220268.439465645 150415.359530563,220227.333322076 150505.561285879,220227.353105332 150406.434743975)'::geometry),0.0001)); +SELECT 'npoints_is_five', ST_NumPoints(ST_GeomFromEWKT('CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3)')); -- See http://trac.osgeo.org/postgis/ticket/2410 -SELECT 'straight_curve',ST_AsText(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(0 0,1 0,2 0,3 0,4 0)'))); +SELECT 'straight_curve', ST_AsText(ST_CurveToLine(ST_GeomFromEWKT('CIRCULARSTRING(0 0,1 0,2 0,3 0,4 0)'))); diff --git a/regress/sql-mm-circularstring_expected b/regress/sql-mm-circularstring_expected index 16907353a..2ff373995 100644 --- a/regress/sql-mm-circularstring_expected +++ b/regress/sql-mm-circularstring_expected @@ -7,11 +7,11 @@ geometrytype03|CIRCULARSTRINGM ndims04|2 geometrytype04|CIRCULARSTRING isClosed01|t -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: isring() should only be called on a LINE +isSimple01|t +isRing01|t isClosed02|t -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: isring() should only be called on a LINE +isSimple02|f +isRing02|f astext01|CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 1.4142135623731) astext01|CIRCULARSTRING(-5 0,0 5,5 0,10 -5,15 0) astext02|CIRCULARSTRING M (0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2) @@ -28,6 +28,22 @@ asewkt03|CIRCULARSTRING(0 0 0,0.267949192431123 1 3,0.585786437626905 1.41421356 asewkt03|CIRCULARSTRING(-5 0 0,0 5 1,5 0 2,10 -5 3,15 0 4) asewkt04|CIRCULARSTRING(0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2) asewkt04|CIRCULARSTRING(-5 0 0 4,0 5 1 3,5 0 2 2,10 -5 3 1,15 0 4 0) +asbinary01|0108000000030000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f67880133c3bee23fcd3b7f669ea0f63f +asbinary01|01080000000500000000000000000014c000000000000000000000000000000000000000000000144000000000000014400000000000000000000000000000244000000000000014c00000000000002e400000000000000000 +asbinary02|00000007d8000000030000000000000000000000000000000000000000000000003fd126145e9ecd563ff0000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd4000000000000000 +asbinary02|00000007d800000005c014000000000000000000000000000040100000000000000000000000000000401400000000000040080000000000004014000000000000000000000000000040000000000000004024000000000000c0140000000000003ff0000000000000402e00000000000000000000000000000000000000000000 +asbinary03|01f00300000300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084067880133c3bee23fcd3b7f669ea0f63f000000000000f03f +asbinary03|01f00300000500000000000000000014c00000000000000000000000000000000000000000000000000000000000001440000000000000f03f000000000000144000000000000000000000000000000040000000000000244000000000000014c000000000000008400000000000002e4000000000000000000000000000001040 +asbinary04|0000000bc00000000300000000000000000000000000000000000000000000000000000000000000003fd126145e9ecd563ff00000000000004008000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd3ff00000000000004000000000000000 +asbinary04|0000000bc000000005c014000000000000000000000000000000000000000000004010000000000000000000000000000040140000000000003ff0000000000000400800000000000040140000000000000000000000000000400000000000000040000000000000004024000000000000c01400000000000040080000000000003ff0000000000000402e000000000000000000000000000040100000000000000000000000000000 +asewkb01|0108000000030000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f67880133c3bee23fcd3b7f669ea0f63f +asewkb01|01080000000500000000000000000014c000000000000000000000000000000000000000000000144000000000000014400000000000000000000000000000244000000000000014c00000000000002e400000000000000000 +asewkb02|0040000008000000030000000000000000000000000000000000000000000000003fd126145e9ecd563ff0000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd4000000000000000 +asewkb02|004000000800000005c014000000000000000000000000000040100000000000000000000000000000401400000000000040080000000000004014000000000000000000000000000040000000000000004024000000000000c0140000000000003ff0000000000000402e00000000000000000000000000000000000000000000 +asewkb03|01080000800300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084067880133c3bee23fcd3b7f669ea0f63f000000000000f03f +asewkb03|01080000800500000000000000000014c00000000000000000000000000000000000000000000000000000000000001440000000000000f03f000000000000144000000000000000000000000000000040000000000000244000000000000014c000000000000008400000000000002e4000000000000000000000000000001040 +asewkb04|00c00000080000000300000000000000000000000000000000000000000000000000000000000000003fd126145e9ecd563ff00000000000004008000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd3ff00000000000004000000000000000 +asewkb04|00c000000800000005c014000000000000000000000000000000000000000000004010000000000000000000000000000040140000000000003ff0000000000000400800000000000040140000000000000000000000000000400000000000000040000000000000004024000000000000c01400000000000040080000000000003ff0000000000000402e000000000000000000000000000040100000000000000000000000000000 ST_CurveToLine-201|LINESTRING(0 0,0.58578644 1.41421356) ST_CurveToLine-201|LINESTRING(-5 0,-3.53553391 3.53553391,0 5,3.53553391 3.53553391,5 0,6.46446609 -3.53553391,10 -5,13.53553391 -3.53553391,15 0) ST_CurveToLine-202|LINESTRINGM(0 0 0,0.58578644 1.41421356 2) @@ -52,26 +68,14 @@ ST_CurveToLine03|LINESTRING(0 0 0,0.00240909 0.09813535 0.28125,0.00963055 0.196 ST_CurveToLine03|LINESTRING(-5 0 0,-4.99397728 0.24533837 0.03125,-4.97592363 0.4900857 0.0625,-4.94588255 0.73365237 0.09375,-4.9039264 0.97545161 0.125,-4.85015627 1.2149009 0.15625,-4.78470168 1.45142339 0.1875,-4.70772033 1.68444927 0.21875,-4.61939766 1.91341716 0.25,-4.51994647 2.13777547 0.28125,-4.40960632 2.35698368 0.3125,-4.28864305 2.57051372 0.34375,-4.15734806 2.77785117 0.375,-4.01603766 2.97849652 0.40625,-3.86505227 3.17196642 0.4375,-3.70475563 3.35779477 0.46875,-3.53553391 3.53553391 0.5,-3.35779477 3.70475563 0.53125,-3.17196642 3.86505227 0.5625,-2.97849652 4.01603766 0.59375,-2.77785117 4.15734806 0.625,-2.57051372 4.28864305 0.65625,-2.35698368 4.40960632 0.6875,-2.13777547 4.51994647 0.71875,-1.91341716 4.61939766 0.75,-1.68444927 4.70772033 0.78125,-1.45142339 4.78470168 0.8125,-1.2149009 4.85015627 0.84375,-0.97545161 4.9039264 0.875,-0.73365237 4.94588255 0.90625,-0.4900857 4.97592363 0.9375,-0.24533837 4.99397728 0.96875,0 5 1,0.24533837 4.99397728 1.03125,0.4900857 4.97592363 1.0625,0.73365237 4.94588255 1.09375,0.97545161 4.9039264 1.125,1.2149009 4.85015627 1.15625,1.45142339 4.78470168 1.1875,1.68444927 4.70772033 1.21875,1.91341716 4.61939766 1.25,2.13777547 4.51994647 1.28125,2.35698368 4.40960632 1.3125,2.57051372 4.28864305 1.34375,2.77785117 4.15734806 1.375,2.97849652 4.01603766 1.40625,3.17196642 3.86505227 1.4375,3.35779477 3.70475563 1.46875,3.53553391 3.53553391 1.5,3.70475563 3.35779477 1.53125,3.86505227 3.17196642 1.5625,4.01603766 2.97849652 1.59375,4.15734806 2.77785117 1.625,4.28864305 2.57051372 1.65625,4.40960632 2.35698368 1.6875,4.51994647 2.13777547 1.71875,4.61939766 1.91341716 1.75,4.70772033 1.68444927 1.78125,4.78470168 1.45142339 1.8125,4.85015627 1.2149009 1.84375,4.9039264 0.97545161 1.875,4.94588255 0.73365237 1.90625,4.97592363 0.4900857 1.9375,4.99397728 0.24533837 1.96875,5 0 2,5.00602272 -0.24533837 2.03125,5.02407637 -0.4900857 2.0625,5.05411745 -0.73365237 2.09375,5.0960736 -0.97545161 2.125,5.14984373 -1.2149009 2.15625,5.21529832 -1.45142339 2.1875,5.29227967 -1.68444927 2.21875,5.38060234 -1.91341716 2.25,5.48005353 -2.13777547 2.28125,5.59039368 -2.35698368 2.3125,5.71135695 -2.57051372 2.34375,5.84265194 -2.77785117 2.375,5.98396234 -2.97849652 2.40625,6.13494773 -3.17196642 2.4375,6.29524437 -3.35779477 2.46875,6.46446609 -3.53553391 2.5,6.64220523 -3.70475563 2.53125,6.82803358 -3.86505227 2.5625,7.02150348 -4.01603766 2.59375,7.22214883 -4.15734806 2.625,7.42948628 -4.28864305 2.65625,7.64301632 -4.40960632 2.6875,7.86222453 -4.51994647 2.71875,8.08658284 -4.61939766 2.75,8.31555073 -4.70772033 2.78125,8.54857661 -4.78470168 2.8125,8.7850991 -4.85015627 2.84375,9.02454839 -4.9039264 2.875,9.26634763 -4.94588255 2.90625,9.5099143 -4.97592363 2.9375,9.75466163 -4.99397728 2.96875,10 -5 3,10.24533837 -4.99397728 3.03125,10.4900857 -4.97592363 3.0625,10.73365237 -4.94588255 3.09375,10.97545161 -4.9039264 3.125,11.2149009 -4.85015627 3.15625,11.45142339 -4.78470168 3.1875,11.68444927 -4.70772033 3.21875,11.91341716 -4.61939766 3.25,12.13777547 -4.51994647 3.28125,12.35698368 -4.40960632 3.3125,12.57051372 -4.28864305 3.34375,12.77785117 -4.15734806 3.375,12.97849652 -4.01603766 3.40625,13.17196642 -3.86505227 3.4375,13.35779477 -3.70475563 3.46875,13.53553391 -3.53553391 3.5,13.70475563 -3.35779477 3.53125,13.86505227 -3.17196642 3.5625,14.01603766 -2.97849652 3.59375,14.15734806 -2.77785117 3.625,14.28864305 -2.57051372 3.65625,14.40960632 -2.35698368 3.6875,14.51994647 -2.13777547 3.71875,14.61939766 -1.91341716 3.75,14.70772033 -1.68444927 3.78125,14.78470168 -1.45142339 3.8125,14.85015627 -1.2149009 3.84375,14.9039264 -0.97545161 3.875,14.94588255 -0.73365237 3.90625,14.97592363 -0.4900857 3.9375,14.99397728 -0.24533837 3.96875,15 0 4) ST_CurveToLine04|LINESTRING(0 0 0 0,0.00240909 0.09813535 0.28125 -0.1875,0.00963055 0.19603428 0.5625 -0.375,0.02164698 0.29346095 0.84375 -0.5625,0.03842944 0.39018064 1.125 -0.75,0.05993749 0.48596036 1.40625 -0.9375,0.08611933 0.58056935 1.6875 -1.125,0.11691187 0.67377971 1.96875 -1.3125,0.15224093 0.76536686 2.25 -1.5,0.19202141 0.85511019 2.53125 -1.6875,0.23615747 0.94279347 2.8125 -1.875,0.28454278 1.02820549 2.875 -1.75,0.33706078 1.11114047 2.5 -1,0.39358494 1.19139861 2.125 -0.25,0.45397909 1.26878657 1.75 0.5,0.51809775 1.34311791 1.375 1.25,0.58578644 1.41421356 1 2) ST_CurveToLine04|LINESTRING(-5 0 0 4,-4.99397728 0.24533837 0.03125 3.96875,-4.97592363 0.4900857 0.0625 3.9375,-4.94588255 0.73365237 0.09375 3.90625,-4.9039264 0.97545161 0.125 3.875,-4.85015627 1.2149009 0.15625 3.84375,-4.78470168 1.45142339 0.1875 3.8125,-4.70772033 1.68444927 0.21875 3.78125,-4.61939766 1.91341716 0.25 3.75,-4.51994647 2.13777547 0.28125 3.71875,-4.40960632 2.35698368 0.3125 3.6875,-4.28864305 2.57051372 0.34375 3.65625,-4.15734806 2.77785117 0.375 3.625,-4.01603766 2.97849652 0.40625 3.59375,-3.86505227 3.17196642 0.4375 3.5625,-3.70475563 3.35779477 0.46875 3.53125,-3.53553391 3.53553391 0.5 3.5,-3.35779477 3.70475563 0.53125 3.46875,-3.17196642 3.86505227 0.5625 3.4375,-2.97849652 4.01603766 0.59375 3.40625,-2.77785117 4.15734806 0.625 3.375,-2.57051372 4.28864305 0.65625 3.34375,-2.35698368 4.40960632 0.6875 3.3125,-2.13777547 4.51994647 0.71875 3.28125,-1.91341716 4.61939766 0.75 3.25,-1.68444927 4.70772033 0.78125 3.21875,-1.45142339 4.78470168 0.8125 3.1875,-1.2149009 4.85015627 0.84375 3.15625,-0.97545161 4.9039264 0.875 3.125,-0.73365237 4.94588255 0.90625 3.09375,-0.4900857 4.97592363 0.9375 3.0625,-0.24533837 4.99397728 0.96875 3.03125,0 5 1 3,0.24533837 4.99397728 1.03125 2.96875,0.4900857 4.97592363 1.0625 2.9375,0.73365237 4.94588255 1.09375 2.90625,0.97545161 4.9039264 1.125 2.875,1.2149009 4.85015627 1.15625 2.84375,1.45142339 4.78470168 1.1875 2.8125,1.68444927 4.70772033 1.21875 2.78125,1.91341716 4.61939766 1.25 2.75,2.13777547 4.51994647 1.28125 2.71875,2.35698368 4.40960632 1.3125 2.6875,2.57051372 4.28864305 1.34375 2.65625,2.77785117 4.15734806 1.375 2.625,2.97849652 4.01603766 1.40625 2.59375,3.17196642 3.86505227 1.4375 2.5625,3.35779477 3.70475563 1.46875 2.53125,3.53553391 3.53553391 1.5 2.5,3.70475563 3.35779477 1.53125 2.46875,3.86505227 3.17196642 1.5625 2.4375,4.01603766 2.97849652 1.59375 2.40625,4.15734806 2.77785117 1.625 2.375,4.28864305 2.57051372 1.65625 2.34375,4.40960632 2.35698368 1.6875 2.3125,4.51994647 2.13777547 1.71875 2.28125,4.61939766 1.91341716 1.75 2.25,4.70772033 1.68444927 1.78125 2.21875,4.78470168 1.45142339 1.8125 2.1875,4.85015627 1.2149009 1.84375 2.15625,4.9039264 0.97545161 1.875 2.125,4.94588255 0.73365237 1.90625 2.09375,4.97592363 0.4900857 1.9375 2.0625,4.99397728 0.24533837 1.96875 2.03125,5 0 2 2,5.00602272 -0.24533837 2.03125 1.96875,5.02407637 -0.4900857 2.0625 1.9375,5.05411745 -0.73365237 2.09375 1.90625,5.0960736 -0.97545161 2.125 1.875,5.14984373 -1.2149009 2.15625 1.84375,5.21529832 -1.45142339 2.1875 1.8125,5.29227967 -1.68444927 2.21875 1.78125,5.38060234 -1.91341716 2.25 1.75,5.48005353 -2.13777547 2.28125 1.71875,5.59039368 -2.35698368 2.3125 1.6875,5.71135695 -2.57051372 2.34375 1.65625,5.84265194 -2.77785117 2.375 1.625,5.98396234 -2.97849652 2.40625 1.59375,6.13494773 -3.17196642 2.4375 1.5625,6.29524437 -3.35779477 2.46875 1.53125,6.46446609 -3.53553391 2.5 1.5,6.64220523 -3.70475563 2.53125 1.46875,6.82803358 -3.86505227 2.5625 1.4375,7.02150348 -4.01603766 2.59375 1.40625,7.22214883 -4.15734806 2.625 1.375,7.42948628 -4.28864305 2.65625 1.34375,7.64301632 -4.40960632 2.6875 1.3125,7.86222453 -4.51994647 2.71875 1.28125,8.08658284 -4.61939766 2.75 1.25,8.31555073 -4.70772033 2.78125 1.21875,8.54857661 -4.78470168 2.8125 1.1875,8.7850991 -4.85015627 2.84375 1.15625,9.02454839 -4.9039264 2.875 1.125,9.26634763 -4.94588255 2.90625 1.09375,9.5099143 -4.97592363 2.9375 1.0625,9.75466163 -4.99397728 2.96875 1.03125,10 -5 3 1,10.24533837 -4.99397728 3.03125 0.96875,10.4900857 -4.97592363 3.0625 0.9375,10.73365237 -4.94588255 3.09375 0.90625,10.97545161 -4.9039264 3.125 0.875,11.2149009 -4.85015627 3.15625 0.84375,11.45142339 -4.78470168 3.1875 0.8125,11.68444927 -4.70772033 3.21875 0.78125,11.91341716 -4.61939766 3.25 0.75,12.13777547 -4.51994647 3.28125 0.71875,12.35698368 -4.40960632 3.3125 0.6875,12.57051372 -4.28864305 3.34375 0.65625,12.77785117 -4.15734806 3.375 0.625,12.97849652 -4.01603766 3.40625 0.59375,13.17196642 -3.86505227 3.4375 0.5625,13.35779477 -3.70475563 3.46875 0.53125,13.53553391 -3.53553391 3.5 0.5,13.70475563 -3.35779477 3.53125 0.46875,13.86505227 -3.17196642 3.5625 0.4375,14.01603766 -2.97849652 3.59375 0.40625,14.15734806 -2.77785117 3.625 0.375,14.28864305 -2.57051372 3.65625 0.34375,14.40960632 -2.35698368 3.6875 0.3125,14.51994647 -2.13777547 3.71875 0.28125,14.61939766 -1.91341716 3.75 0.25,14.70772033 -1.68444927 3.78125 0.21875,14.78470168 -1.45142339 3.8125 0.1875,14.85015627 -1.2149009 3.84375 0.15625,14.9039264 -0.97545161 3.875 0.125,14.94588255 -0.73365237 3.90625 0.09375,14.97592363 -0.4900857 3.9375 0.0625,14.99397728 -0.24533837 3.96875 0.03125,15 0 4 0) -astext01|CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 1.4142135623731) -astext01|CIRCULARSTRING(-5 0,0 5,5 0,10 -5,15 0) -astext02|CIRCULARSTRING M (0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2) -astext02|CIRCULARSTRING M (-5 0 4,0 5 3,5 0 2,10 -5 1,15 0 0) -astext03|CIRCULARSTRING Z (0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1) -astext03|CIRCULARSTRING Z (-5 0 0,0 5 1,5 0 2,10 -5 3,15 0 4) -astext04|CIRCULARSTRING ZM (0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2) -astext04|CIRCULARSTRING ZM (-5 0 0 4,0 5 1 3,5 0 2 2,10 -5 3 1,15 0 4 0) -asewkt01|CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 1.4142135623731) -asewkt01|CIRCULARSTRING(-5 0,0 5,5 0,10 -5,15 0) -asewkt02|CIRCULARSTRINGM(0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2) -asewkt02|CIRCULARSTRINGM(-5 0 4,0 5 3,5 0 2,10 -5 1,15 0 0) -asewkt03|CIRCULARSTRING(0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1) -asewkt03|CIRCULARSTRING(-5 0 0,0 5 1,5 0 2,10 -5 3,15 0 4) -asewkt04|CIRCULARSTRING(0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2) -asewkt04|CIRCULARSTRING(-5 0 0 4,0 5 1 3,5 0 2 2,10 -5 3 1,15 0 4 0) -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +isValid01|t +isValid01|t +isValid02|t +isValid02|t +isValid03|t +isValid03|t +isValid04|t +isValid04|t dimension01|1 dimension01|1 dimension02|1 @@ -88,10 +92,14 @@ SRID03|0 SRID03|0 SRID04|0 SRID04|0 -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +accessors01|f|t|f|f +accessors01|f|t|f|f +accessors02|f|t|f|f +accessors02|f|t|f|f +accessors03|f|t|f|f +accessors03|f|t|f|f +accessors04|f|t|f|f +accessors04|f|t|f|f envelope01|POLYGON((0 0,0 1.41421356,0.58578644 1.41421356,0.58578644 0,0 0)) envelope01|POLYGON((-5 -5,-5 5,15 5,15 -5,-5 -5)) envelope02|POLYGON((0 0,0 1.41421356,0.58578644 1.41421356,0.58578644 0,0 0)) @@ -100,10 +108,6 @@ envelope03|POLYGON((0 0,0 1.41421356,0.58578644 1.41421356,0.58578644 0,0 0)) envelope03|POLYGON((-5 -5,-5 5,15 5,15 -5,-5 -5)) envelope04|POLYGON((0 0,0 1.41421356,0.58578644 1.41421356,0.58578644 0,0 0)) envelope04|POLYGON((-5 -5,-5 5,15 5,15 -5,-5 -5)) -public.circularstring.the_geom_4d effectively removed. -public.circularstring.the_geom_3dz effectively removed. -public.circularstring.the_geom_3dm effectively removed. -public.circularstring.the_geom_2d effectively removed. POLYGON((220187.3821 150406.4347,220187.3821 150506.7171,220288.8159 150506.7171,220288.8159 150406.4347,220187.3821 150406.4347)) npoints_is_five|5 straight_curve|LINESTRING(0 0,1 0,2 0,3 0,4 0) diff --git a/regress/sql-mm-compoundcurve.sql b/regress/sql-mm-compoundcurve.sql index feed3b47d..7da40df20 100644 --- a/regress/sql-mm-compoundcurve.sql +++ b/regress/sql-mm-compoundcurve.sql @@ -169,17 +169,15 @@ SELECT 'asewkt02', ST_Asewkt(the_geom_3dm) FROM public.compoundcurve; SELECT 'asewkt03', ST_Asewkt(the_geom_3dz) FROM public.compoundcurve; SELECT 'asewkt04', ST_Asewkt(the_geom_4d) FROM public.compoundcurve; --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(asbinary(the_geom_2d), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary02', encode(asbinary(the_geom_3dm), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary03', encode(asbinary(the_geom_3dz), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary04', encode(asbinary(the_geom_4d), 'hex') FROM public.compoundcurve; --- ---SELECT 'asewkb01', encode(asewkb(the_geom_2d), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb02', encode(asewkb(the_geom_3dm), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb03', encode(asewkb(the_geom_3dz), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb04', encode(asewkb(the_geom_4d), 'hex') FROM public.compoundcurve; +SELECT 'asbinary01', encode(ST_AsBinary(the_geom_2d, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asbinary02', encode(ST_AsBinary(the_geom_3dm, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asbinary03', encode(ST_AsBinary(the_geom_3dz, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asbinary04', encode(ST_AsBinary(the_geom_4d, 'ndr'), 'hex') FROM public.compoundcurve; + +SELECT 'asewkb01', encode(ST_AsEWKB(the_geom_2d, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asewkb02', encode(ST_AsEWKB(the_geom_3dm, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asewkb03', encode(ST_AsEWKB(the_geom_3dz, 'ndr'), 'hex') FROM public.compoundcurve; +SELECT 'asewkb04', encode(ST_AsEWKB(the_geom_4d, 'ndr'), 'hex') FROM public.compoundcurve; SELECT 'ST_CurveToLine-201', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; SELECT 'ST_CurveToLine-202', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; @@ -196,86 +194,10 @@ SELECT 'ST_CurveToLine02', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), SELECT 'ST_CurveToLine03', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; SELECT 'ST_CurveToLine04', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; --- Removed due to discrepencies between hardware ---SELECT 'box2d01', box2d(the_geom_2d) FROM public.compoundcurve; ---SELECT 'box2d02', box2d(the_geom_3dm) FROM public.compoundcurve; ---SELECT 'box2d03', box2d(the_geom_3dz) FROM public.compoundcurve; ---SELECT 'box2d04', box2d(the_geom_4d) FROM public.compoundcurve; - ---SELECT 'box3d01', box3d(the_geom_2d) FROM public.compoundcurve; ---SELECT 'box3d02', box3d(the_geom_3dm) FROM public.compoundcurve; ---SELECT 'box3d03', box3d(the_geom_3dz) FROM public.compoundcurve; ---SELECT 'box3d04', box3d(the_geom_4d) FROM public.compoundcurve; - --- SELECT 'isValid01', isValid(the_geom_2d) FROM public.compoundcurve; --- SELECT 'isValid02', isValid(the_geom_3dm) FROM public.compoundcurve; --- SELECT 'isValid03', isValid(the_geom_3dz) FROM public.compoundcurve; --- SELECT 'isValid04', isValid(the_geom_4d) FROM public.compoundcurve; - --- SELECT 'dimension01', dimension(the_geom_2d) FROM public.compoundcurve; --- SELECT 'dimension02', dimension(the_geom_3dm) FROM public.compoundcurve; --- SELECT 'dimension03', dimension(the_geom_3dz) FROM public.compoundcurve; --- SELECT 'dimension04', dimension(the_geom_4d) FROM public.compoundcurve; - --- SELECT 'SRID01', ST_SRID(the_geom_2d) FROM public.compoundcurve; --- SELECT 'SRID02', ST_SRID(the_geom_3dm) FROM public.compoundcurve; --- SELECT 'SRID03', ST_SRID(the_geom_3dz) FROM public.compoundcurve; --- SELECT 'SRID04', ST_SRID(the_geom_4d) FROM public.compoundcurve; - --- SELECT 'accessor01', isEmpty(the_geom_2d), isSimple(the_geom_2d), isClosed(the_geom_2d), isRing(the_geom_2d) FROM public.compoundcurve; --- SELECT 'accessor02', isEmpty(the_geom_3dm), isSimple(the_geom_3dm), isClosed(the_geom_3dm), isRing(the_geom_3dm) FROM public.compoundcurve; --- SELECT 'accessor03', isEmpty(the_geom_3dz), isSimple(the_geom_3dz), isClosed(the_geom_3dz), isRing(the_geom_3dz) FROM public.compoundcurve; --- SELECT 'accessor04', isEmpty(the_geom_4d), isSimple(the_geom_4d), isClosed(the_geom_4d), isRing(the_geom_4d) FROM public.compoundcurve; - --- SELECT 'envelope01', ST_AsText(ST_SnapToGrid(envelope(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; --- SELECT 'envelope02', ST_AsText(ST_SnapToGrid(envelope(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; --- SELECT 'envelope03', ST_AsText(ST_SnapToGrid(envelope(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; --- SELECT 'envelope04', ST_AsText(ST_SnapToGrid(envelope(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; - --- TODO: ST_SnapToGrid is required to remove platform dependent precision --- issues. Until ST_SnapToGrid is updated to work against curves, these --- tests cannot be run. ---SELECT 'ST_LineToCurve', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.compoundcurve; ---SELECT 'ST_LineToCurve', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.compoundcurve; ---SELECT 'ST_LineToCurve', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.compoundcurve; ---SELECT 'ST_LineToCurve', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.compoundcurve; - --- Repeat tests on new function names. -SELECT 'astext01', ST_astext(the_geom_2d) FROM public.compoundcurve; -SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.compoundcurve; -SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.compoundcurve; -SELECT 'astext04', ST_astext(the_geom_4d) FROM public.compoundcurve; - -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.compoundcurve; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.compoundcurve; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.compoundcurve; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.compoundcurve; - ---SELECT 'asbinary01', encode(ST_asbinary(the_geom_2d), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary02', encode(ST_asbinary(the_geom_3dm), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary03', encode(ST_asbinary(the_geom_3dz), 'hex') FROM public.compoundcurve; ---SELECT 'asbinary04', encode(ST_asbinary(the_geom_4d), 'hex') FROM public.compoundcurve; --- ---SELECT 'asewkb01', encode(ST_asewkb(the_geom_2d), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb02', encode(ST_asewkb(the_geom_3dm), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb03', encode(ST_asewkb(the_geom_3dz), 'hex') FROM public.compoundcurve; ---SELECT 'asewkb04', encode(ST_asewkb(the_geom_4d), 'hex') FROM public.compoundcurve; - --- Removed due to discrepencies between hardware ---SELECT 'box2d01', ST_box2d(the_geom_2d) FROM public.compoundcurve; ---SELECT 'box2d02', ST_box2d(the_geom_3dm) FROM public.compoundcurve; ---SELECT 'box2d03', ST_box2d(the_geom_3dz) FROM public.compoundcurve; ---SELECT 'box2d04', ST_box2d(the_geom_4d) FROM public.compoundcurve; - ---SELECT 'box3d01', ST_box3d(the_geom_2d) FROM public.compoundcurve; ---SELECT 'box3d02', ST_box3d(the_geom_3dm) FROM public.compoundcurve; ---SELECT 'box3d03', ST_box3d(the_geom_3dz) FROM public.compoundcurve; ---SELECT 'box3d04', ST_box3d(the_geom_4d) FROM public.compoundcurve; - -SELECT 'isValid01', ST_isValid(the_geom_2d) FROM public.compoundcurve; -SELECT 'isValid02', ST_isValid(the_geom_3dm) FROM public.compoundcurve; -SELECT 'isValid03', ST_isValid(the_geom_3dz) FROM public.compoundcurve; -SELECT 'isValid04', ST_isValid(the_geom_4d) FROM public.compoundcurve; +SELECT 'isValid01', ST_IsValid(the_geom_2d) FROM public.compoundcurve; +SELECT 'isValid02', ST_IsValid(the_geom_3dm) FROM public.compoundcurve; +SELECT 'isValid03', ST_IsValid(the_geom_3dz) FROM public.compoundcurve; +SELECT 'isValid04', ST_IsValid(the_geom_4d) FROM public.compoundcurve; SELECT 'dimension01', ST_dimension(the_geom_2d) FROM public.compoundcurve; SELECT 'dimension02', ST_dimension(the_geom_3dm) FROM public.compoundcurve; @@ -287,20 +209,16 @@ SELECT 'SRID02', ST_SRID(the_geom_3dm) FROM public.compoundcurve; SELECT 'SRID03', ST_SRID(the_geom_3dz) FROM public.compoundcurve; SELECT 'SRID04', ST_SRID(the_geom_4d) FROM public.compoundcurve; -SELECT 'accessor01', ST_isEmpty(the_geom_2d), ST_isSimple(the_geom_2d), ST_isClosed(the_geom_2d), ST_isRing(the_geom_2d) FROM public.compoundcurve; -SELECT 'accessor02', ST_isEmpty(the_geom_3dm), ST_isSimple(the_geom_3dm), ST_isClosed(the_geom_3dm), ST_isRing(the_geom_3dm) FROM public.compoundcurve; -SELECT 'accessor03', ST_isEmpty(the_geom_3dz), ST_isSimple(the_geom_3dz), ST_isClosed(the_geom_3dz), ST_isRing(the_geom_3dz) FROM public.compoundcurve; -SELECT 'accessor04', ST_isEmpty(the_geom_4d), ST_isSimple(the_geom_4d), ST_isClosed(the_geom_4d), ST_isRing(the_geom_4d) FROM public.compoundcurve; +SELECT 'accessor01', ST_IsEmpty(the_geom_2d), ST_IsSimple(the_geom_2d), ST_IsClosed(the_geom_2d), ST_IsRing(the_geom_2d) FROM public.compoundcurve; +SELECT 'accessor02', ST_IsEmpty(the_geom_3dm), ST_IsSimple(the_geom_3dm), ST_IsClosed(the_geom_3dm), ST_IsRing(the_geom_3dm) FROM public.compoundcurve; +SELECT 'accessor03', ST_IsEmpty(the_geom_3dz), ST_IsSimple(the_geom_3dz), ST_IsClosed(the_geom_3dz), ST_IsRing(the_geom_3dz) FROM public.compoundcurve; +SELECT 'accessor04', ST_IsEmpty(the_geom_4d), ST_IsSimple(the_geom_4d), ST_IsClosed(the_geom_4d), ST_IsRing(the_geom_4d) FROM public.compoundcurve; SELECT 'envelope01', ST_asText(ST_snapToGrid(ST_envelope(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; SELECT 'envelope02', ST_asText(ST_snapToGrid(ST_envelope(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; SELECT 'envelope03', ST_asText(ST_snapToGrid(ST_envelope(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; SELECT 'envelope04', ST_asText(ST_snapToGrid(ST_envelope(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.compoundcurve; -SELECT DropGeometryColumn('public', 'compoundcurve', 'the_geom_4d'); -SELECT DropGeometryColumn('public', 'compoundcurve', 'the_geom_3dz'); -SELECT DropGeometryColumn('public', 'compoundcurve', 'the_geom_3dm'); -SELECT DropGeometryColumn('public', 'compoundcurve', 'the_geom_2d'); DROP TABLE public.compoundcurve; SELECT 'valid wkt compound curve 1', encode(ST_AsBinary(ST_GeomFromEWKT('COMPOUNDCURVE((153.72942375 -27.21757040, 152.29285719 -29.23940482, 154.74034096 -30.51635287),(154.74034096 -30.51635287, 152.39926953 -32.16574411, 155.11278414 -34.08116619, 151.86720784 -35.62414508))'),'ndr'),'hex'); diff --git a/regress/sql-mm-compoundcurve_expected b/regress/sql-mm-compoundcurve_expected index 07e3d09d3..f7bfc39ae 100644 --- a/regress/sql-mm-compoundcurve_expected +++ b/regress/sql-mm-compoundcurve_expected @@ -22,6 +22,14 @@ asewkt01|COMPOUNDCURVE(CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 asewkt02|COMPOUNDCURVEM(CIRCULARSTRINGM(0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2),(0.585786437626905 1.4142135623731 2,2 0 0,0 0 0)) asewkt03|COMPOUNDCURVE(CIRCULARSTRING(0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1),(0.585786437626905 1.4142135623731 1,2 0 0,0 0 0)) asewkt04|COMPOUNDCURVE(CIRCULARSTRING(0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2),(0.585786437626905 1.4142135623731 1 2,2 0 0 0,0 0 0 0)) +asbinary01|0109000000020000000108000000030000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f67880133c3bee23fcd3b7f669ea0f63f01020000000300000067880133c3bee23fcd3b7f669ea0f63f0000000000000040000000000000000000000000000000000000000000000000 +asbinary02|01d90700000200000001d80700000300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f00000000000000c067880133c3bee23fcd3b7f669ea0f63f000000000000004001d20700000300000067880133c3bee23fcd3b7f669ea0f63f0000000000000040000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000 +asbinary03|01f10300000200000001f00300000300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084067880133c3bee23fcd3b7f669ea0f63f000000000000f03f01ea0300000300000067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000 +asbinary04|01c10b00000200000001c00b000003000000000000000000000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084000000000000000c067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004001ba0b00000300000067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +asewkb01|0109000000020000000108000000030000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f67880133c3bee23fcd3b7f669ea0f63f01020000000300000067880133c3bee23fcd3b7f669ea0f63f0000000000000040000000000000000000000000000000000000000000000000 +asewkb02|01090000400200000001080000400300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f00000000000000c067880133c3bee23fcd3b7f669ea0f63f000000000000004001020000400300000067880133c3bee23fcd3b7f669ea0f63f0000000000000040000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000 +asewkb03|01090000800200000001080000800300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084067880133c3bee23fcd3b7f669ea0f63f000000000000f03f01020000800300000067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000 +asewkb04|01090000c00200000001080000c003000000000000000000000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084000000000000000c067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004001020000c00300000067880133c3bee23fcd3b7f669ea0f63f000000000000f03f000000000000004000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ST_CurveToLine-201|LINESTRING(0 0,0.58578644 1.41421356,2 0,0 0) ST_CurveToLine-202|LINESTRINGM(0 0 0,0.58578644 1.41421356 2,2 0 0,0 0 0) ST_CurveToLine-203|LINESTRING(0 0 0,0.58578644 1.41421356 1,2 0 0,0 0 0) @@ -34,18 +42,10 @@ ST_CurveToLine01|LINESTRING(0 0,0.00240909 0.09813535,0.00963055 0.19603428,0.02 ST_CurveToLine02|LINESTRINGM(0 0 0,0.00240909 0.09813535 -0.1875,0.00963055 0.19603428 -0.375,0.02164698 0.29346095 -0.5625,0.03842944 0.39018064 -0.75,0.05993749 0.48596036 -0.9375,0.08611933 0.58056935 -1.125,0.11691187 0.67377971 -1.3125,0.15224093 0.76536686 -1.5,0.19202141 0.85511019 -1.6875,0.23615747 0.94279347 -1.875,0.28454278 1.02820549 -1.75,0.33706078 1.11114047 -1,0.39358494 1.19139861 -0.25,0.45397909 1.26878657 0.5,0.51809775 1.34311791 1.25,0.58578644 1.41421356 2,2 0 0,0 0 0) ST_CurveToLine03|LINESTRING(0 0 0,0.00240909 0.09813535 0.28125,0.00963055 0.19603428 0.5625,0.02164698 0.29346095 0.84375,0.03842944 0.39018064 1.125,0.05993749 0.48596036 1.40625,0.08611933 0.58056935 1.6875,0.11691187 0.67377971 1.96875,0.15224093 0.76536686 2.25,0.19202141 0.85511019 2.53125,0.23615747 0.94279347 2.8125,0.28454278 1.02820549 2.875,0.33706078 1.11114047 2.5,0.39358494 1.19139861 2.125,0.45397909 1.26878657 1.75,0.51809775 1.34311791 1.375,0.58578644 1.41421356 1,2 0 0,0 0 0) ST_CurveToLine04|LINESTRING(0 0 0 0,0.00240909 0.09813535 0.28125 -0.1875,0.00963055 0.19603428 0.5625 -0.375,0.02164698 0.29346095 0.84375 -0.5625,0.03842944 0.39018064 1.125 -0.75,0.05993749 0.48596036 1.40625 -0.9375,0.08611933 0.58056935 1.6875 -1.125,0.11691187 0.67377971 1.96875 -1.3125,0.15224093 0.76536686 2.25 -1.5,0.19202141 0.85511019 2.53125 -1.6875,0.23615747 0.94279347 2.8125 -1.875,0.28454278 1.02820549 2.875 -1.75,0.33706078 1.11114047 2.5 -1,0.39358494 1.19139861 2.125 -0.25,0.45397909 1.26878657 1.75 0.5,0.51809775 1.34311791 1.375 1.25,0.58578644 1.41421356 1 2,2 0 0 0,0 0 0 0) -astext01|COMPOUNDCURVE(CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 1.4142135623731),(0.585786437626905 1.4142135623731,2 0,0 0)) -astext02|COMPOUNDCURVE M (CIRCULARSTRING M (0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2),(0.585786437626905 1.4142135623731 2,2 0 0,0 0 0)) -astext03|COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1),(0.585786437626905 1.4142135623731 1,2 0 0,0 0 0)) -astext04|COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2),(0.585786437626905 1.4142135623731 1 2,2 0 0 0,0 0 0 0)) -asewkt01|COMPOUNDCURVE(CIRCULARSTRING(0 0,0.267949192431123 1,0.585786437626905 1.4142135623731),(0.585786437626905 1.4142135623731,2 0,0 0)) -asewkt02|COMPOUNDCURVEM(CIRCULARSTRINGM(0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2),(0.585786437626905 1.4142135623731 2,2 0 0,0 0 0)) -asewkt03|COMPOUNDCURVE(CIRCULARSTRING(0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1),(0.585786437626905 1.4142135623731 1,2 0 0,0 0 0)) -asewkt04|COMPOUNDCURVE(CIRCULARSTRING(0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2),(0.585786437626905 1.4142135623731 1 2,2 0 0 0,0 0 0 0)) -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +isValid01|t +isValid02|t +isValid03|t +isValid04|t dimension01|1 dimension02|1 dimension03|1 @@ -54,18 +54,14 @@ SRID01|0 SRID02|0 SRID03|0 SRID04|0 -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +accessor01|f|t|t|t +accessor02|f|t|t|t +accessor03|f|t|t|t +accessor04|f|t|t|t envelope01|POLYGON((0 0,0 1.41421356,2 1.41421356,2 0,0 0)) envelope02|POLYGON((0 0,0 1.41421356,2 1.41421356,2 0,0 0)) envelope03|POLYGON((0 0,0 1.41421356,2 1.41421356,2 0,0 0)) envelope04|POLYGON((0 0,0 1.41421356,2 1.41421356,2 0,0 0)) -public.compoundcurve.the_geom_4d effectively removed. -public.compoundcurve.the_geom_3dz effectively removed. -public.compoundcurve.the_geom_3dm effectively removed. -public.compoundcurve.the_geom_2d effectively removed. valid wkt compound curve 1|0109000000020000000102000000030000009fe5797057376340e09398b1b2373bc05aae0a165f0963409f6760a2493d3dc0db6286dfb057634082d8a1b32f843ec0010200000004000000db6286dfb057634082d8a1b32f843ec075b4e4d0c60c634031fa5d1a371540c0d7197ced9b636340a3cb59a7630a41c050f4a72ac0fb6240974769fce3cf41c0 valid wkt compound curve 2|0109000000010000000102000000060000009fe5797057376340e09398b1b2373bc05aae0a165f0963409f6760a2493d3dc0db6286dfb057634082d8a1b32f843ec075b4e4d0c60c634031fa5d1a371540c0d7197ced9b636340a3cb59a7630a41c050f4a72ac0fb6240974769fce3cf41c0 valid wkt compound curve 3|0109000000010000000102000000030000000ce586d73cf36240bbc46888f0523bc0102e91c951e76240df90a1bec0f841c0f970c100ffd7624074ade6ce86cd3bc0 diff --git a/regress/sql-mm-curvepoly.sql b/regress/sql-mm-curvepoly.sql index a45b88209..0f18c0043 100644 --- a/regress/sql-mm-curvepoly.sql +++ b/regress/sql-mm-curvepoly.sql @@ -181,90 +181,54 @@ UPDATE public.curvepolygon 0 1, -1 0))'); --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(asbinary(the_geom_2d), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary02', encode(asbinary(the_geom_3dm), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary03', encode(asbinary(the_geom_3dz), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary04', encode(asbinary(the_geom_4d), 'hex') FROM public.curvepolygon; --- ---SELECT 'asewkb01', encode(asewkb(the_geom_2d), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb02', encode(asewkb(the_geom_3dm), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb03', encode(asewkb(the_geom_3dz), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb04', encode(asewkb(the_geom_4d), 'hex') FROM public.curvepolygon; +SELECT 'asbinary01', encode(ST_AsBinary(the_geom_2d, 'ndr'), 'hex') FROM public.curvepolygon; +SELECT 'asbinary02', encode(ST_AsBinary(the_geom_3dm, 'xdr'), 'hex') FROM public.curvepolygon; +SELECT 'asbinary03', encode(ST_AsBinary(the_geom_3dz, 'ndr'), 'hex') FROM public.curvepolygon; +SELECT 'asbinary04', encode(ST_AsBinary(the_geom_4d, 'xdr'), 'hex') FROM public.curvepolygon; -SELECT 'ST_CurveToLine-201',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-202',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-203',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-204',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'asewkb01', encode(ST_AsEWKB(the_geom_2d, 'xdr'), 'hex') FROM public.curvepolygon; +SELECT 'asewkb02', encode(ST_AsEWKB(the_geom_3dm, 'ndr'), 'hex') FROM public.curvepolygon; +SELECT 'asewkb03', encode(ST_AsEWKB(the_geom_3dz, 'xdr'), 'hex') FROM public.curvepolygon; +SELECT 'asewkb04', encode(ST_AsEWKB(the_geom_4d, 'ndr'), 'hex') FROM public.curvepolygon; -SELECT 'ST_CurveToLine-401',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-402',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-403',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine-404',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-201',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-202',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-203',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-204',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine01',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine02',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine03',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'ST_CurveToLine04',ST_asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-401',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-402',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-403',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine-404',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; --- Removed due to descrepencies between hardware ---SELECT 'box2d01', box2d(the_geom_2d) FROM public.curvepolygon; ---SELECT 'box2d02', box2d(the_geom_3dm) FROM public.curvepolygon; ---SELECT 'box2d03', box2d(the_geom_3dz) FROM public.curvepolygon; ---SELECT 'box2d04', box2d(the_geom_4d) FROM public.curvepolygon; - ---SELECT 'box3d01', box3d(the_geom_2d) FROM public.curvepolygon; ---SELECT 'box3d02', box3d(the_geom_3dm) FROM public.curvepolygon; ---SELECT 'box3d03', box3d(the_geom_3dz) FROM public.curvepolygon; ---SELECT 'box3d04', box3d(the_geom_4d) FROM public.curvepolygon; +SELECT 'ST_CurveToLine01',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine02',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine03',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'ST_CurveToLine04',ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -- TODO: ST_SnapToGrid is required to remove platform dependent precision -- issues. Until ST_SnapToGrid is updated to work against curves, these -- tests cannot be run. ---SELECT 'ST_LineToCurve01',ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.curvepolygon; ---SELECT 'ST_LineToCurve02',ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.curvepolygon; ---SELECT 'ST_LineToCurve03',ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.curvepolygon; ---SELECT 'ST_LineToCurve04',ST_asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.curvepolygon; +--SELECT 'ST_LineToCurve01',ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.curvepolygon; +--SELECT 'ST_LineToCurve02',ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.curvepolygon; +--SELECT 'ST_LineToCurve03',ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.curvepolygon; +--SELECT 'ST_LineToCurve04',ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.curvepolygon; -- Repeat tests with new function names. -SELECT 'astext01', ST_astext(the_geom_2d) FROM public.curvepolygon; -SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.curvepolygon; -SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.curvepolygon; -SELECT 'astext04', ST_astext(the_geom_4d) FROM public.curvepolygon; - -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.curvepolygon; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.curvepolygon; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.curvepolygon; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.curvepolygon; - --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(ST_asbinary(the_geom_2d), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary02', encode(ST_asbinary(the_geom_3dm), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary03', encode(ST_asbinary(the_geom_3dz), 'hex') FROM public.curvepolygon; ---SELECT 'asbinary04', encode(ST_asbinary(the_geom_4d), 'hex') FROM public.curvepolygon; --- ---SELECT 'asewkb01', encode(ST_asewkb(the_geom_2d), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb02', encode(ST_asewkb(the_geom_3dm), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb03', encode(ST_asewkb(the_geom_3dz), 'hex') FROM public.curvepolygon; ---SELECT 'asewkb04', encode(ST_asewkb(the_geom_4d), 'hex') FROM public.curvepolygon; - --- Removed due to descrepencies between hardware ---SELECT 'box2d01', ST_box2d(the_geom_2d) FROM public.curvepolygon; ---SELECT 'box2d02', ST_box2d(the_geom_3dm) FROM public.curvepolygon; ---SELECT 'box2d03', ST_box2d(the_geom_3dz) FROM public.curvepolygon; ---SELECT 'box2d04', ST_box2d(the_geom_4d) FROM public.curvepolygon; +SELECT 'astext01', ST_AsText(the_geom_2d) FROM public.curvepolygon; +SELECT 'astext02', ST_AsText(the_geom_3dm) FROM public.curvepolygon; +SELECT 'astext03', ST_AsText(the_geom_3dz) FROM public.curvepolygon; +SELECT 'astext04', ST_AsText(the_geom_4d) FROM public.curvepolygon; ---SELECT 'box3d01', ST_box3d(the_geom_2d) FROM public.curvepolygon; ---SELECT 'box3d02', ST_box3d(the_geom_3dm) FROM public.curvepolygon; ---SELECT 'box3d03', ST_box3d(the_geom_3dz) FROM public.curvepolygon; ---SELECT 'box3d04', ST_box3d(the_geom_4d) FROM public.curvepolygon; +SELECT 'asewkt01', ST_AsEWKT(the_geom_2d) FROM public.curvepolygon; +SELECT 'asewkt02', ST_AsEWKT(the_geom_3dm) FROM public.curvepolygon; +SELECT 'asewkt03', ST_AsEWKT(the_geom_3dz) FROM public.curvepolygon; +SELECT 'asewkt04', ST_AsEWKT(the_geom_4d) FROM public.curvepolygon; -SELECT 'isValid01', ST_isValid(the_geom_2d) FROM public.curvepolygon; -SELECT 'isValid02', ST_isValid(the_geom_3dm) FROM public.curvepolygon; -SELECT 'isValid03', ST_isValid(the_geom_3dz) FROM public.curvepolygon; -SELECT 'isValid04', ST_isValid(the_geom_4d) FROM public.curvepolygon; +SELECT 'isValid01', ST_IsValid(the_geom_2d) FROM public.curvepolygon; +SELECT 'isValid02', ST_IsValid(the_geom_3dm) FROM public.curvepolygon; +SELECT 'isValid03', ST_IsValid(the_geom_3dz) FROM public.curvepolygon; +SELECT 'isValid04', ST_IsValid(the_geom_4d) FROM public.curvepolygon; SELECT 'dimension01', ST_dimension(the_geom_2d) FROM public.curvepolygon; SELECT 'dimension02', ST_dimension(the_geom_3dm) FROM public.curvepolygon; @@ -276,10 +240,10 @@ SELECT 'SRID02', ST_SRID(the_geom_3dm) FROM public.curvepolygon; SELECT 'SRID03', ST_SRID(the_geom_3dz) FROM public.curvepolygon; SELECT 'SRID04', ST_SRID(the_geom_4d) FROM public.curvepolygon; -SELECT 'envelope01', ST_asText(ST_snapToGrid(ST_envelope(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'envelope02', ST_asText(ST_snapToGrid(ST_envelope(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'envelope03', ST_asText(ST_snapToGrid(ST_envelope(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; -SELECT 'envelope04', ST_asText(ST_snapToGrid(ST_envelope(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'envelope01', ST_AsText(ST_snapToGrid(ST_envelope(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'envelope02', ST_AsText(ST_snapToGrid(ST_envelope(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'envelope03', ST_AsText(ST_snapToGrid(ST_envelope(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; +SELECT 'envelope04', ST_AsText(ST_snapToGrid(ST_envelope(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.curvepolygon; SELECT 'startPoint01', (ST_startPoint(the_geom_2d) is null) FROM public.curvepolygon; SELECT 'startPoint02', (ST_startPoint(the_geom_3dm) is null) FROM public.curvepolygon; @@ -291,30 +255,26 @@ SELECT 'endPoint02', (ST_endPoint(the_geom_3dm) is null) FROM public.curvepolygo SELECT 'endPoint03', (ST_endPoint(the_geom_3dz) is null) FROM public.curvepolygon; SELECT 'endPoint04', (ST_endPoint(the_geom_4d) is null) FROM public.curvepolygon; -SELECT 'exteriorRing01', ST_asEWKT(ST_exteriorRing(the_geom_2d)) FROM public.curvepolygon; -SELECT 'exteriorRing02', ST_asEWKT(ST_exteriorRing(the_geom_3dm)) FROM public.curvepolygon; -SELECT 'exteriorRing03', ST_asEWKT(ST_exteriorRing(the_geom_3dz)) FROM public.curvepolygon; -SELECT 'exteriorRing04', ST_asEWKT(ST_exteriorRing(the_geom_4d)) FROM public.curvepolygon; +SELECT 'exteriorRing01', ST_AsEWKT(ST_exteriorRing(the_geom_2d)) FROM public.curvepolygon; +SELECT 'exteriorRing02', ST_AsEWKT(ST_exteriorRing(the_geom_3dm)) FROM public.curvepolygon; +SELECT 'exteriorRing03', ST_AsEWKT(ST_exteriorRing(the_geom_3dz)) FROM public.curvepolygon; +SELECT 'exteriorRing04', ST_AsEWKT(ST_exteriorRing(the_geom_4d)) FROM public.curvepolygon; SELECT 'numInteriorRings01', ST_numInteriorRings(the_geom_2d) FROM public.curvepolygon; SELECT 'numInteriorRings02', ST_numInteriorRings(the_geom_3dm) FROM public.curvepolygon; SELECT 'numInteriorRings03', ST_numInteriorRings(the_geom_3dz) FROM public.curvepolygon; SELECT 'numInteriorRings04', ST_numInteriorRings(the_geom_4d) FROM public.curvepolygon; -SELECT 'interiorRingN-101', ST_asEWKT(ST_interiorRingN(the_geom_2d, 1)) FROM public.curvepolygon; -SELECT 'interiorRingN-102', ST_asEWKT(ST_interiorRingN(the_geom_3dm, 1)) FROM public.curvepolygon; -SELECT 'interiorRingN-103', ST_asEWKT(ST_interiorRingN(the_geom_3dz, 1)) FROM public.curvepolygon; -SELECT 'interiorRingN-104', ST_asEWKT(ST_interiorRingN(the_geom_4d, 1)) FROM public.curvepolygon; +SELECT 'interiorRingN-101', ST_AsEWKT(ST_InteriorRingN(the_geom_2d, 1)) FROM public.curvepolygon; +SELECT 'interiorRingN-102', ST_AsEWKT(ST_InteriorRingN(the_geom_3dm, 1)) FROM public.curvepolygon; +SELECT 'interiorRingN-103', ST_AsEWKT(ST_InteriorRingN(the_geom_3dz, 1)) FROM public.curvepolygon; +SELECT 'interiorRingN-104', ST_AsEWKT(ST_InteriorRingN(the_geom_4d, 1)) FROM public.curvepolygon; -SELECT 'interiorRingN-201', ST_asEWKT(ST_interiorRingN(the_geom_2d, 2)) FROM public.curvepolygon; -SELECT 'interiorRingN-202', ST_asEWKT(ST_interiorRingN(the_geom_3dm, 2)) FROM public.curvepolygon; -SELECT 'interiorRingN-203', ST_asEWKT(ST_interiorRingN(the_geom_3dz, 2)) FROM public.curvepolygon; -SELECT 'interiorRingN-204', ST_asEWKT(ST_interiorRingN(the_geom_4d, 2)) FROM public.curvepolygon; +SELECT 'interiorRingN-201', ST_AsEWKT(ST_InteriorRingN(the_geom_2d, 2)) FROM public.curvepolygon; +SELECT 'interiorRingN-202', ST_AsEWKT(ST_InteriorRingN(the_geom_3dm, 2)) FROM public.curvepolygon; +SELECT 'interiorRingN-203', ST_AsEWKT(ST_InteriorRingN(the_geom_3dz, 2)) FROM public.curvepolygon; +SELECT 'interiorRingN-204', ST_AsEWKT(ST_InteriorRingN(the_geom_4d, 2)) FROM public.curvepolygon; -SELECT DropGeometryColumn('public', 'curvepolygon', 'the_geom_2d'); -SELECT DropGeometryColumn('public', 'curvepolygon', 'the_geom_3dm'); -SELECT DropGeometryColumn('public', 'curvepolygon', 'the_geom_3dz'); -SELECT DropGeometryColumn('public', 'curvepolygon', 'the_geom_4d'); DROP TABLE public.curvepolygon; SELECT 'valid wkt curve polygon 1', encode(ST_AsBinary(ST_GeomFromEWKT('CURVEPOLYGON((143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827))'),'ndr'),'hex'); @@ -331,11 +291,11 @@ SELECT 'invalid wkt curve polygon 8', ST_GeomFromEWKT('CURVEPOLYGON(CIRCULARSTRI SELECT 'invalid wkt curve polygon 9', ST_GeomFromEWKT('CURVEPOLYGON((143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827),COMPOUNDCURVE(CIRCULARSTRING(144.84399355252685 -31.26123924022086, 144.20551952601693 -32.27215644886158, 145.55230712890625 -33.49203872680664),CIRCULARSTRING(147.97080993652344 -32.03618621826172, 146.38697244992585 -31.47406391572417, 144.84399355252685 -31.26123924022086))'); SELECT 'invalid wkt curve polygon a', ST_GeomFromEWKT('CURVEPOLYGON((143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827),COMPOUNDCURVE(CIRCULARSTRING(144.84399355252685 -31.26123924022086, 144.20551952601693 -32.27215644886158, 145.55230712890625 -33.49203872680664),(145.55230712890625 -33.49203872680664, 147.97080993652344 -32.03618621826172),CIRCULARSTRING(147.97080993652344 -32.03618621826172, 146.38697244992585 -31.47406391572417, 144.84399355252685 -30.76123924022086))'); SELECT 'invalid wkt curve polygon b', ST_GeomFromEWKT('CURVEPOLYGON((143.62025166838282 -30.037497356076827, 142.92857147299705 -32.75101196874403, 145.96132309891922 -34.985671061528784, 149.57565307617188 -33.41153335571289, 149.41972407584802 -29.824672680573517, 146.1209416055467 -30.19711586270431, 143.62025166838282 -30.037497356076827),COMPOUNDCURVE(CIRCULARSTRING(144.84399355252685 -31.26123924022086, 144.20551952601693 -32.27215644886158, 145.55230712890625 -33.49203872680664),(145.55230712890625 -33.49203872680664),CIRCULARSTRING(147.97080993652344 -32.03618621826172, 146.38697244992585 -31.47406391572417, 144.84399355252685 -31.26123924022086))'); -SELECT 'valid ewkb curve polygon 1', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000001000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); -SELECT 'valid ewkb curve polygon 2', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); -SELECT 'valid ewkb curve polygon 3', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000001000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); -SELECT 'valid ewkb curve polygon 4', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); -SELECT 'valid ewkb curve polygon 5', ST_asEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00109000000030000000108000000030000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c001020000000200000000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c0010800000003000000000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); +SELECT 'valid ewkb curve polygon 1', ST_AsEWKT(ST_GeomFromEWKB(decode('010a00000001000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); +SELECT 'valid ewkb curve polygon 2', ST_AsEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); +SELECT 'valid ewkb curve polygon 3', ST_AsEWKT(ST_GeomFromEWKB(decode('010a00000001000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0', 'hex'))); +SELECT 'valid ewkb curve polygon 4', ST_AsEWKT(ST_GeomFromEWKB(decode('010a00000002000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); +SELECT 'valid ewkb curve polygon 5', ST_AsEWKT(ST_GeomFromEWKB(decode('010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00109000000030000000108000000030000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c001020000000200000000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c0010800000003000000000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0', 'hex'))); SELECT 'valid curve 6', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); SELECT 'valid curve 7', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 4 5, 1 4, 0 0)), (1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); SELECT 'valid curve 8', encode(ST_AsBinary(ST_GeomFromText('CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0, 2 1, 2 3, 4 3),(4 3, 0 0)), CIRCULARSTRING(1.7 1, 1.4 0.4, 1.7 1) )'),'ndr'),'hex'); diff --git a/regress/sql-mm-curvepoly_expected b/regress/sql-mm-curvepoly_expected index 082ff709a..90bb28266 100644 --- a/regress/sql-mm-curvepoly_expected +++ b/regress/sql-mm-curvepoly_expected @@ -7,6 +7,14 @@ geometrytype03|CURVEPOLYGONM ndims04|2 geometrytype04|CURVEPOLYGON ndims05|4 +asbinary01|010a0000000200000001080000000700000000000000000000c00000000000000000000000000000f0bf000000000000f0bf00000000000000000000000000000000000000000000f03f000000000000f0bf000000000000004000000000000000000000000000000000000000000000004000000000000000c00000000000000000010200000005000000000000000000f0bf00000000000000000000000000000000000000000000e03f000000000000f03f00000000000000000000000000000000000000000000f03f000000000000f0bf0000000000000000 +asbinary02|00000007da0000000200000007d800000007c00000000000000000000000000000000000000000000000bff0000000000000bff000000000000040000000000000000000000000000000000000000000000040100000000000003ff0000000000000bff00000000000004018000000000000400000000000000000000000000000004020000000000000000000000000000040000000000000004010000000000000c0000000000000000000000000000000000000000000000000000007d200000005bff00000000000000000000000000000400000000000000000000000000000003fe000000000000040100000000000003ff00000000000000000000000000000401800000000000000000000000000003ff00000000000004010000000000000bff000000000000000000000000000004000000000000000 +asbinary03|01f20300000200000001f00300000700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f000000000000000000000000000000000000000000000040000000000000f03f000000000000f0bf000000000000084000000000000000400000000000000000000000000000104000000000000000000000000000000040000000000000004000000000000000c00000000000000000000000000000000001ea03000005000000000000000000f0bf0000000000000000000000000000f03f0000000000000000000000000000e03f0000000000000040000000000000f03f000000000000000000000000000008400000000000000000000000000000f03f0000000000000840000000000000f0bf0000000000000000000000000000f03f +asbinary04|0000000bc2000000020000000bc000000007c000000000000000000000000000000000000000000000000000000000000000bff0000000000000bff00000000000003ff0000000000000400000000000000000000000000000000000000000000000400000000000000040100000000000003ff0000000000000bff00000000000004008000000000000401800000000000040000000000000000000000000000000401000000000000040200000000000000000000000000000400000000000000040000000000000004010000000000000c0000000000000000000000000000000000000000000000000000000000000000000000bba00000005bff000000000000000000000000000003ff0000000000000400000000000000000000000000000003fe0000000000000400000000000000040100000000000003ff000000000000000000000000000004008000000000000401800000000000000000000000000003ff000000000000040080000000000004010000000000000bff000000000000000000000000000003ff00000000000004000000000000000 +asewkb01|000000000a00000002000000000800000007c0000000000000000000000000000000bff0000000000000bff0000000000000000000000000000000000000000000003ff0000000000000bff00000000000004000000000000000000000000000000000000000000000004000000000000000c0000000000000000000000000000000000000000200000005bff0000000000000000000000000000000000000000000003fe00000000000003ff0000000000000000000000000000000000000000000003ff0000000000000bff00000000000000000000000000000 +asewkb02|010a0000400200000001080000400700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf0000000000000040000000000000000000000000000000000000000000001040000000000000f03f000000000000f0bf000000000000184000000000000000400000000000000000000000000000204000000000000000000000000000000040000000000000104000000000000000c000000000000000000000000000000000010200004005000000000000000000f0bf000000000000000000000000000000400000000000000000000000000000e03f0000000000001040000000000000f03f000000000000000000000000000018400000000000000000000000000000f03f0000000000001040000000000000f0bf00000000000000000000000000000040 +asewkb03|008000000a00000002008000000800000007c00000000000000000000000000000000000000000000000bff0000000000000bff00000000000003ff00000000000000000000000000000000000000000000040000000000000003ff0000000000000bff00000000000004008000000000000400000000000000000000000000000004010000000000000000000000000000040000000000000004000000000000000c00000000000000000000000000000000000000000000000008000000200000005bff000000000000000000000000000003ff000000000000000000000000000003fe000000000000040000000000000003ff00000000000000000000000000000400800000000000000000000000000003ff00000000000004008000000000000bff000000000000000000000000000003ff0000000000000 +asewkb04|010a0000c00200000001080000c00700000000000000000000c0000000000000000000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f00000000000000400000000000000000000000000000000000000000000000400000000000001040000000000000f03f000000000000f0bf000000000000084000000000000018400000000000000040000000000000000000000000000010400000000000002040000000000000000000000000000000400000000000000040000000000000104000000000000000c000000000000000000000000000000000000000000000000001020000c005000000000000000000f0bf0000000000000000000000000000f03f00000000000000400000000000000000000000000000e03f00000000000000400000000000001040000000000000f03f0000000000000000000000000000084000000000000018400000000000000000000000000000f03f00000000000008400000000000001040000000000000f0bf0000000000000000000000000000f03f0000000000000040 ST_CurveToLine-201|POLYGON((-2 0,-1.70710678 -0.70710678,-1 -1,-0.29289322 -0.70710678,0 0,0.29289322 -0.70710678,1 -1,1.70710678 -0.70710678,2 0,1.41421356 1.41421356,0 2,-1.41421356 1.41421356,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0)) ST_CurveToLine-202|POLYGONM((-2 0 0,-1.70710678 -0.70710678 1,-1 -1 2,-0.29289322 -0.70710678 3,0 0 4,0.29289322 -0.70710678 5,1 -1 6,1.70710678 -0.70710678 7,2 0 8,1.41421356 1.41421356 6,0 2 4,-1.41421356 1.41421356 2,-2 0 0),(-1 0 2,0 0.5 4,1 0 6,0 1 4,-1 0 2)) ST_CurveToLine-203|POLYGON((-2 0 0,-1.70710678 -0.70710678 0.5,-1 -1 1,-0.29289322 -0.70710678 1.5,0 0 2,0.29289322 -0.70710678 2.5,1 -1 3,1.70710678 -0.70710678 3.5,2 0 4,1.41421356 1.41421356 3,0 2 2,-1.41421356 1.41421356 1,-2 0 0),(-1 0 1,0 0.5 2,1 0 3,0 1 3,-1 0 1)) @@ -27,10 +35,10 @@ asewkt01|CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0 asewkt02|CURVEPOLYGONM(CIRCULARSTRINGM(-2 0 0,-1 -1 2,0 0 4,1 -1 6,2 0 8,0 2 4,-2 0 0),(-1 0 2,0 0.5 4,1 0 6,0 1 4,-1 0 2)) asewkt03|CURVEPOLYGON(CIRCULARSTRING(-2 0 0,-1 -1 1,0 0 2,1 -1 3,2 0 4,0 2 2,-2 0 0),(-1 0 1,0 0.5 2,1 0 3,0 1 3,-1 0 1)) asewkt04|CURVEPOLYGON(CIRCULARSTRING(-2 0 0 0,-1 -1 1 2,0 0 2 4,1 -1 3 6,2 0 4 8,0 2 2 4,-2 0 0 0),(-1 0 1 2,0 0.5 2 4,1 0 3 6,0 1 3 4,-1 0 1 2)) -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +isValid01|t +isValid02|t +isValid03|t +isValid04|t dimension01|2 dimension02|2 dimension03|2 @@ -67,10 +75,6 @@ interiorRingN-201| interiorRingN-202| interiorRingN-203| interiorRingN-204| -public.curvepolygon.the_geom_2d effectively removed. -public.curvepolygon.the_geom_3dm effectively removed. -public.curvepolygon.the_geom_3dz effectively removed. -public.curvepolygon.the_geom_4d effectively removed. valid wkt curve polygon 1|010a00000001000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0 valid wkt curve polygon 2|010a00000002000000010200000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec00102000000060000006844c4fe011b6240342e2993e0423fc0d45daf9d93066240c4a0c305d62240c000000080ac31624000000020fbbe40c0000000e0107f6240000000c0a10440c04e1c0c14624c6240bf3fb6405c793fc06844c4fe011b6240342e2993e0423fc0 valid wkt curve polygon 3|010a00000001000000010800000007000000ccdf061ad9f3614054093e6d99093ec0ab9085dbb6dd614081540229216040c0ebd7a828c33e62409bf026782a7e41c0000000c06bb2624000000020adb440c08e632f616ead6240c9f7b0bf1dd33dc09011eec0de4362407dd6672f76323ec0ccdf061ad9f3614054093e6d99093ec0 diff --git a/regress/sql-mm-multicurve.sql b/regress/sql-mm-multicurve.sql index 044631c4d..e020d74d1 100644 --- a/regress/sql-mm-multicurve.sql +++ b/regress/sql-mm-multicurve.sql @@ -124,89 +124,54 @@ UPDATE public.multicurve 0.26794919243112270647255365849413 1, 0.5857864376269049511983112757903 1.4142135623730950488016887242097))'); --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(asbinary(the_geom_2d), 'hex') FROM public.multicurve; ---SELECT 'asbinary02', encode(asbinary(the_geom_3dm), 'hex') FROM public.multicurve; ---SELECT 'asbinary03', encode(asbinary(the_geom_3dz), 'hex') FROM public.multicurve; ---SELECT 'asbinary04', encode(asbinary(the_geom_4d), 'hex') FROM public.multicurve; --- ---SELECT 'asewkb01', encode(asewkb(the_geom_2d), 'hex') FROM public.multicurve; ---SELECT 'asewkb02', encode(asewkb(the_geom_3dm), 'hex') FROM public.multicurve; ---SELECT 'asewkb03', encode(asewkb(the_geom_3dz), 'hex') FROM public.multicurve; ---SELECT 'asewkb04', encode(asewkb(the_geom_4d), 'hex') FROM public.multicurve; - -SELECT 'ST_CurveToLine-201', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-202', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-203', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-204', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; - -SELECT 'ST_CurveToLine-401', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-402', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-403', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine-404', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; - -SELECT 'ST_CurveToLine01', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine02', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine03', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; -SELECT 'ST_CurveToLine04', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; - --- Removed due to descrepencies between hardware ---SELECT 'box2d01', box2d(the_geom_2d) FROM public.multicurve; ---SELECT 'box2d02', box2d(the_geom_3dm) FROM public.multicurve; ---SELECT 'box2d03', box2d(the_geom_3dz) FROM public.multicurve; ---SELECT 'box2d04', box2d(the_geom_4d) FROM public.multicurve; - ---SELECT 'box3d01', box3d(the_geom_2d) FROM public.multicurve; ---SELECT 'box3d02', box3d(the_geom_3dm) FROM public.multicurve; ---SELECT 'box3d03', box3d(the_geom_3dz) FROM public.multicurve; ---SELECT 'box3d04', box3d(the_geom_4d) FROM public.multicurve; +SELECT 'asbinary01', encode(ST_AsBinary(the_geom_2d, 'xdr'), 'hex') FROM public.multicurve; +SELECT 'asbinary02', encode(ST_AsBinary(the_geom_3dm, 'ndr'), 'hex') FROM public.multicurve; +SELECT 'asbinary03', encode(ST_AsBinary(the_geom_3dz, 'xdr'), 'hex') FROM public.multicurve; +SELECT 'asbinary04', encode(ST_AsBinary(the_geom_4d, 'ndr'), 'hex') FROM public.multicurve; + +SELECT 'asewkb01', encode(ST_AsEWKB(the_geom_2d, 'ndr'), 'hex') FROM public.multicurve; +SELECT 'asewkb02', encode(ST_AsEWKB(the_geom_3dm, 'xdr'), 'hex') FROM public.multicurve; +SELECT 'asewkb03', encode(ST_AsEWKB(the_geom_3dz, 'ndr'), 'hex') FROM public.multicurve; +SELECT 'asewkb04', encode(ST_AsEWKB(the_geom_4d, 'xdr'), 'hex') FROM public.multicurve; + +SELECT 'ST_CurveToLine-201', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-202', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-203', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-204', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; + +SELECT 'ST_CurveToLine-401', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-402', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-403', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine-404', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; + +SELECT 'ST_CurveToLine01', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine02', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine03', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; +SELECT 'ST_CurveToLine04', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multicurve; + -- TODO: ST_SnapToGrid is required to remove platform dependent precision -- issues. Until ST_SnapToGrid is updated to work against curves, these -- tests cannot be run. ---SELECT 'ST_LineToCurve01', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.multicurve; ---SELECT 'ST_LineToCurve02', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.multicurve; ---SELECT 'ST_LineToCurve03', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.multicurve; ---SELECT 'ST_LineToCurve04', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.multicurve; +--SELECT 'ST_LineToCurve01', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.multicurve; +--SELECT 'ST_LineToCurve02', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.multicurve; +--SELECT 'ST_LineToCurve03', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.multicurve; +--SELECT 'ST_LineToCurve04', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.multicurve; -- Repeat all tests with the new function names. -SELECT 'astext01', ST_astext(the_geom_2d) FROM public.multicurve; -SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.multicurve; -SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.multicurve; -SELECT 'astext04', ST_astext(the_geom_4d) FROM public.multicurve; - -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.multicurve; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.multicurve; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.multicurve; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.multicurve; - --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(ST_asbinary(the_geom_2d), 'hex') FROM public.multicurve; ---SELECT 'asbinary02', encode(ST_asbinary(the_geom_3dm), 'hex') FROM public.multicurve; ---SELECT 'asbinary03', encode(ST_asbinary(the_geom_3dz), 'hex') FROM public.multicurve; ---SELECT 'asbinary04', encode(ST_asbinary(the_geom_4d), 'hex') FROM public.multicurve; --- ---SELECT 'asewkb01', encode(ST_asewkb(the_geom_2d), 'hex') FROM public.multicurve; ---SELECT 'asewkb02', encode(ST_asewkb(the_geom_3dm), 'hex') FROM public.multicurve; ---SELECT 'asewkb03', encode(ST_asewkb(the_geom_3dz), 'hex') FROM public.multicurve; ---SELECT 'asewkb04', encode(ST_asewkb(the_geom_4d), 'hex') FROM public.multicurve; - --- Removed due to descrepencies between hardware ---SELECT 'box2d01', ST_box2d(the_geom_2d) FROM public.multicurve; ---SELECT 'box2d02', ST_box2d(the_geom_3dm) FROM public.multicurve; ---SELECT 'box2d03', ST_box2d(the_geom_3dz) FROM public.multicurve; ---SELECT 'box2d04', ST_box2d(the_geom_4d) FROM public.multicurve; - ---SELECT 'box3d01', ST_box3d(the_geom_2d) FROM public.multicurve; ---SELECT 'box3d02', ST_box3d(the_geom_3dm) FROM public.multicurve; ---SELECT 'box3d03', ST_box3d(the_geom_3dz) FROM public.multicurve; ---SELECT 'box3d04', ST_box3d(the_geom_4d) FROM public.multicurve; - -SELECT 'isValid01', ST_isValid(the_geom_2d) FROM public.multicurve; -SELECT 'isValid02', ST_isValid(the_geom_3dm) FROM public.multicurve; -SELECT 'isValid03', ST_isValid(the_geom_3dz) FROM public.multicurve; -SELECT 'isValid04', ST_isValid(the_geom_4d) FROM public.multicurve; +SELECT 'astext01', ST_AsText(the_geom_2d) FROM public.multicurve; +SELECT 'astext02', ST_AsText(the_geom_3dm) FROM public.multicurve; +SELECT 'astext03', ST_AsText(the_geom_3dz) FROM public.multicurve; +SELECT 'astext04', ST_AsText(the_geom_4d) FROM public.multicurve; + +SELECT 'asewkt01', ST_AsEWKT(the_geom_2d) FROM public.multicurve; +SELECT 'asewkt02', ST_AsEWKT(the_geom_3dm) FROM public.multicurve; +SELECT 'asewkt03', ST_AsEWKT(the_geom_3dz) FROM public.multicurve; +SELECT 'asewkt04', ST_AsEWKT(the_geom_4d) FROM public.multicurve; + +SELECT 'isValid01', ST_IsValid(the_geom_2d) FROM public.multicurve; +SELECT 'isValid02', ST_IsValid(the_geom_3dm) FROM public.multicurve; +SELECT 'isValid03', ST_IsValid(the_geom_3dz) FROM public.multicurve; +SELECT 'isValid04', ST_IsValid(the_geom_4d) FROM public.multicurve; SELECT 'dimension01', ST_dimension(the_geom_2d) FROM public.multicurve; SELECT 'dimension02', ST_dimension(the_geom_3dm) FROM public.multicurve; @@ -218,19 +183,20 @@ SELECT 'numGeometries02', ST_numGeometries(the_geom_3dm) FROM public.multicurve; SELECT 'numGeometries03', ST_numGeometries(the_geom_3dz) FROM public.multicurve; SELECT 'numGeometries04', ST_numGeometries(the_geom_4d) FROM public.multicurve; -SELECT 'geometryN-201', ST_asEWKT(ST_geometryN(the_geom_2d, 2)) FROM public.multicurve; -SELECT 'geometryN-202', ST_asEWKT(ST_geometryN(the_geom_3dm, 2)) FROM public.multicurve; -SELECT 'geometryN-203', ST_asEWKT(ST_geometryN(the_geom_3dz, 2)) FROM public.multicurve; -SELECT 'geometryN-204', ST_asEWKT(ST_geometryN(the_geom_4d, 2)) FROM public.multicurve; +SELECT 'geometryN-201', ST_AsEWKT(ST_geometryN(the_geom_2d, 2)) FROM public.multicurve; +SELECT 'geometryN-202', ST_AsEWKT(ST_geometryN(the_geom_3dm, 2)) FROM public.multicurve; +SELECT 'geometryN-203', ST_AsEWKT(ST_geometryN(the_geom_3dz, 2)) FROM public.multicurve; +SELECT 'geometryN-204', ST_AsEWKT(ST_geometryN(the_geom_4d, 2)) FROM public.multicurve; -SELECT 'geometryN-301', (ST_asEWKT(ST_geometryN(the_geom_2d, 3)) is null) FROM public.multicurve; -SELECT 'geometryN-302', (ST_asEWKT(ST_geometryN(the_geom_3dm, 3)) is null) FROM public.multicurve; -SELECT 'geometryN-303', (ST_asEWKT(ST_geometryN(the_geom_3dz, 3)) is null) FROM public.multicurve; -SELECT 'geometryN-304', (ST_asEWKT(ST_geometryN(the_geom_4d, 3)) is null) FROM public.multicurve; +SELECT 'geometryN-301', (ST_AsEWKT(ST_geometryN(the_geom_2d, 3)) is null) FROM public.multicurve; +SELECT 'geometryN-302', (ST_AsEWKT(ST_geometryN(the_geom_3dm, 3)) is null) FROM public.multicurve; +SELECT 'geometryN-303', (ST_AsEWKT(ST_geometryN(the_geom_3dz, 3)) is null) FROM public.multicurve; +SELECT 'geometryN-304', (ST_AsEWKT(ST_geometryN(the_geom_4d, 3)) is null) FROM public.multicurve; SELECT DropGeometryColumn('public', 'multicurve', 'the_geom_2d'); SELECT DropGeometryColumn('public', 'multicurve', 'the_geom_3dm'); SELECT DropGeometryColumn('public', 'multicurve', 'the_geom_3dz'); SELECT DropGeometryColumn('public', 'multicurve', 'the_geom_4d'); + DROP TABLE public.multicurve; diff --git a/regress/sql-mm-multicurve_expected b/regress/sql-mm-multicurve_expected index 457c0ef39..7c7f2c35f 100644 --- a/regress/sql-mm-multicurve_expected +++ b/regress/sql-mm-multicurve_expected @@ -6,6 +6,14 @@ ndims03|3 geometrytype03|MULTICURVEM ndims04|2 geometrytype04|MULTICURVE +asbinary01|000000000b0000000200000000020000000440140000000000004014000000000000400800000000000040140000000000004008000000000000400800000000000000000000000000004008000000000000000000000800000003000000000000000000000000000000003fd126145e9ecd563ff00000000000003fe2bec3330188673ff6a09e667f3bcd +asbinary02|01db0700000200000001d20700000400000000000000000014400000000000001440000000000000084000000000000008400000000000001440000000000000004000000000000008400000000000000840000000000000f03f00000000000000000000000000000840000000000000f03f01d80700000300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f00000000000000c067880133c3bee23fcd3b7f669ea0f63f0000000000000040 +asbinary03|00000003f30000000200000003ea00000004401400000000000040140000000000003ff0000000000000400800000000000040140000000000004000000000000000400800000000000040080000000000004008000000000000000000000000000040080000000000003ff000000000000000000003f0000000030000000000000000000000000000000000000000000000003fd126145e9ecd563ff000000000000040080000000000003fe2bec3330188673ff6a09e667f3bcd3ff0000000000000 +asbinary04|01c30b00000200000001ba0b00000400000000000000000014400000000000001440000000000000f03f00000000000008400000000000000840000000000000144000000000000000400000000000000040000000000000084000000000000008400000000000000840000000000000f03f00000000000000000000000000000840000000000000f03f000000000000f03f01c00b000003000000000000000000000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084000000000000000c067880133c3bee23fcd3b7f669ea0f63f000000000000f03f0000000000000040 +asewkb01|010b00000002000000010200000004000000000000000000144000000000000014400000000000000840000000000000144000000000000008400000000000000840000000000000000000000000000008400108000000030000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f67880133c3bee23fcd3b7f669ea0f63f +asewkb02|004000000b00000002004000000200000004401400000000000040140000000000004008000000000000400800000000000040140000000000004000000000000000400800000000000040080000000000003ff0000000000000000000000000000040080000000000003ff00000000000000040000008000000030000000000000000000000000000000000000000000000003fd126145e9ecd563ff0000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd4000000000000000 +asewkb03|010b0000800200000001020000800400000000000000000014400000000000001440000000000000f03f00000000000008400000000000001440000000000000004000000000000008400000000000000840000000000000084000000000000000000000000000000840000000000000f03f01080000800300000000000000000000000000000000000000000000000000000056cd9e5e1426d13f000000000000f03f000000000000084067880133c3bee23fcd3b7f669ea0f63f000000000000f03f +asewkb04|00c000000b0000000200c000000200000004401400000000000040140000000000003ff0000000000000400800000000000040080000000000004014000000000000400000000000000040000000000000004008000000000000400800000000000040080000000000003ff0000000000000000000000000000040080000000000003ff00000000000003ff000000000000000c00000080000000300000000000000000000000000000000000000000000000000000000000000003fd126145e9ecd563ff00000000000004008000000000000c0000000000000003fe2bec3330188673ff6a09e667f3bcd3ff00000000000004000000000000000 ST_CurveToLine-201|MULTILINESTRING((5 5,3 5,3 3,0 3),(0 0,0.58578644 1.41421356)) ST_CurveToLine-202|MULTILINESTRINGM((5 5 3,3 5 2,3 3 1,0 3 1),(0 0 0,0.58578644 1.41421356 2)) ST_CurveToLine-203|MULTILINESTRING((5 5 1,3 5 2,3 3 3,0 3 1),(0 0 0,0.58578644 1.41421356 1)) @@ -26,10 +34,10 @@ asewkt01|MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,0.267949192431123 1,0.5 asewkt02|MULTICURVEM((5 5 3,3 5 2,3 3 1,0 3 1),CIRCULARSTRINGM(0 0 0,0.267949192431123 1 -2,0.585786437626905 1.4142135623731 2)) asewkt03|MULTICURVE((5 5 1,3 5 2,3 3 3,0 3 1),CIRCULARSTRING(0 0 0,0.267949192431123 1 3,0.585786437626905 1.4142135623731 1)) asewkt04|MULTICURVE((5 5 1 3,3 5 2 2,3 3 3 1,0 3 1 1),CIRCULARSTRING(0 0 0 0,0.267949192431123 1 3 -2,0.585786437626905 1.4142135623731 1 2)) -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +isValid01|t +isValid02|t +isValid03|t +isValid04|t dimension01|1 dimension02|1 dimension03|1 diff --git a/regress/sql-mm-multisurface.sql b/regress/sql-mm-multisurface.sql index 3e8ac29e0..631428ec1 100644 --- a/regress/sql-mm-multisurface.sql +++ b/regress/sql-mm-multisurface.sql @@ -250,63 +250,50 @@ UPDATE public.multisurface 4 11, 7 8)))') WHERE id = 1; --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(asbinary(the_geom_2d), 'hex') FROM public.multisurface; ---SELECT 'asbinary02', encode(asbinary(the_geom_3dm), 'hex') FROM public.multisurface; ---SELECT 'asbinary03', encode(asbinary(the_geom_3dz), 'hex') FROM public.multisurface; ---SELECT 'asbinary04', encode(asbinary(the_geom_4d), 'hex') FROM public.multisurface; --- ---SELECT 'asewkb01', encode(asewkb(the_geom_2d), 'hex') FROM public.multisurface; ---SELECT 'asewkb02', encode(asewkb(the_geom_3dm), 'hex') FROM public.multisurface; ---SELECT 'asewkb03', encode(asewkb(the_geom_3dz), 'hex') FROM public.multisurface; ---SELECT 'asewkb04', encode(asewkb(the_geom_4d), 'hex') FROM public.multisurface; + +SELECT 'asbinary01', encode(ST_AsBinary(the_geom_2d, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asbinary02', encode(ST_AsBinary(the_geom_3dm, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asbinary03', encode(ST_AsBinary(the_geom_3dz, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asbinary04', encode(ST_AsBinary(the_geom_4d, 'ndr'), 'hex') FROM public.multisurface; -SELECT 'ST_CurveToLine-201', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-202', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-203', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-204', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'asewkb01', encode(ST_AsEWKB(the_geom_2d, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asewkb02', encode(ST_AsEWKB(the_geom_3dm, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asewkb03', encode(ST_AsEWKB(the_geom_3dz, 'ndr'), 'hex') FROM public.multisurface; +SELECT 'asewkb04', encode(ST_AsEWKB(the_geom_4d, 'ndr'), 'hex') FROM public.multisurface; -SELECT 'ST_CurveToLine-401', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-402', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-403', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine-404', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-201', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-202', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-203', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-204', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 2), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine01', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine02', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine03', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -SELECT 'ST_CurveToLine04', ST_Asewkt(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-401', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-402', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-403', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine-404', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d, 4), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; + +SELECT 'ST_CurveToLine01', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_2d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine02', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dm), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine03', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_3dz), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; +SELECT 'ST_CurveToLine04', ST_AsEWKT(ST_SnapToGrid(ST_CurveToLine(the_geom_4d), 'POINT(0 0 0 0)'::geometry, 1e-8, 1e-8, 1e-8, 1e-8)) FROM public.multisurface; -- TODO: ST_SnapToGrid is required to remove platform dependent precision -- issues. Until ST_SnapToGrid is updated to work against curves, these -- tests cannot be run. ---SELECT 'ST_LineToCurve01', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.multisurface; ---SELECT 'ST_LineToCurve02', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.multisurface; ---SELECT 'ST_LineToCurve03', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.multisurface; ---SELECT 'ST_LineToCurve04', ST_Asewkt(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.multisurface; +--SELECT 'ST_LineToCurve01', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_2d))) FROM public.multisurface; +--SELECT 'ST_LineToCurve02', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dm))) FROM public.multisurface; +--SELECT 'ST_LineToCurve03', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_3dz))) FROM public.multisurface; +--SELECT 'ST_LineToCurve04', ST_AsEWKT(ST_LineToCurve(ST_CurveToLine(the_geom_4d))) FROM public.multisurface; -- Repeat tests with new function names. -SELECT 'astext01', ST_astext(the_geom_2d) FROM public.multisurface; -SELECT 'astext02', ST_astext(the_geom_3dm) FROM public.multisurface; -SELECT 'astext03', ST_astext(the_geom_3dz) FROM public.multisurface; -SELECT 'astext04', ST_astext(the_geom_4d) FROM public.multisurface; - -SELECT 'asewkt01', ST_asewkt(the_geom_2d) FROM public.multisurface; -SELECT 'asewkt02', ST_asewkt(the_geom_3dm) FROM public.multisurface; -SELECT 'asewkt03', ST_asewkt(the_geom_3dz) FROM public.multisurface; -SELECT 'asewkt04', ST_asewkt(the_geom_4d) FROM public.multisurface; +SELECT 'astext01', ST_AsText(the_geom_2d) FROM public.multisurface; +SELECT 'astext02', ST_AsText(the_geom_3dm) FROM public.multisurface; +SELECT 'astext03', ST_AsText(the_geom_3dz) FROM public.multisurface; +SELECT 'astext04', ST_AsText(the_geom_4d) FROM public.multisurface; --- These tests will fail on different architectures --- We need a way to handle multiple byte orderings ---SELECT 'asbinary01', encode(ST_asbinary(the_geom_2d), 'hex') FROM public.multisurface; ---SELECT 'asbinary02', encode(ST_asbinary(the_geom_3dm), 'hex') FROM public.multisurface; ---SELECT 'asbinary03', encode(ST_asbinary(the_geom_3dz), 'hex') FROM public.multisurface; ---SELECT 'asbinary04', encode(ST_asbinary(the_geom_4d), 'hex') FROM public.multisurface; --- ---SELECT 'asewkb01', encode(ST_asewkb(the_geom_2d), 'hex') FROM public.multisurface; ---SELECT 'asewkb02', encode(ST_asewkb(the_geom_3dm), 'hex') FROM public.multisurface; ---SELECT 'asewkb03', encode(ST_asewkb(the_geom_3dz), 'hex') FROM public.multisurface; ---SELECT 'asewkb04', encode(ST_asewkb(the_geom_4d), 'hex') FROM public.multisurface; +SELECT 'asewkt01', ST_AsEWKT(the_geom_2d) FROM public.multisurface; +SELECT 'asewkt02', ST_AsEWKT(the_geom_3dm) FROM public.multisurface; +SELECT 'asewkt03', ST_AsEWKT(the_geom_3dz) FROM public.multisurface; +SELECT 'asewkt04', ST_AsEWKT(the_geom_4d) FROM public.multisurface; SELECT 'box2d01', box2d(the_geom_2d) FROM public.multisurface; SELECT 'box2d02', box2d(the_geom_3dm) FROM public.multisurface; @@ -323,29 +310,25 @@ SELECT 'isValid02', ST_IsValid(the_geom_3dm) FROM public.multisurface; SELECT 'isValid03', ST_IsValid(the_geom_3dz) FROM public.multisurface; SELECT 'isValid04', ST_IsValid(the_geom_4d) FROM public.multisurface; -SELECT 'dimension01', ST_dimension(the_geom_2d) FROM public.multisurface; -SELECT 'dimension02', ST_dimension(the_geom_3dm) FROM public.multisurface; -SELECT 'dimension03', ST_dimension(the_geom_3dz) FROM public.multisurface; -SELECT 'dimension04', ST_dimension(the_geom_4d) FROM public.multisurface; +SELECT 'dimension01', ST_Dimension(the_geom_2d) FROM public.multisurface; +SELECT 'dimension02', ST_Dimension(the_geom_3dm) FROM public.multisurface; +SELECT 'dimension03', ST_Dimension(the_geom_3dz) FROM public.multisurface; +SELECT 'dimension04', ST_Dimension(the_geom_4d) FROM public.multisurface; -SELECT 'numGeometries01', ST_numGeometries(the_geom_2d) FROM public.multisurface; -SELECT 'numGeometries02', ST_numGeometries(the_geom_3dm) FROM public.multisurface; -SELECT 'numGeometries03', ST_numGeometries(the_geom_3dz) FROM public.multisurface; -SELECT 'numGeometries04', ST_numGeometries(the_geom_4d) FROM public.multisurface; +SELECT 'numGeometries01', ST_NumGeometries(the_geom_2d) FROM public.multisurface; +SELECT 'numGeometries02', ST_NumGeometries(the_geom_3dm) FROM public.multisurface; +SELECT 'numGeometries03', ST_NumGeometries(the_geom_3dz) FROM public.multisurface; +SELECT 'numGeometries04', ST_NumGeometries(the_geom_4d) FROM public.multisurface; -SELECT 'geometryN-201', ST_asEWKT(ST_geometryN(the_geom_2d, 2)) FROM public.multisurface; -SELECT 'geometryN-202', ST_asEWKT(ST_geometryN(the_geom_3dm, 2)) FROM public.multisurface; -SELECT 'geometryN-203', ST_asEWKT(ST_geometryN(the_geom_3dz, 2)) FROM public.multisurface; -SELECT 'geometryN-204', ST_asEWKT(ST_geometryN(the_geom_4d, 2)) FROM public.multisurface; +SELECT 'geometryN-201', ST_AsEWKT(ST_geometryN(the_geom_2d, 2)) FROM public.multisurface; +SELECT 'geometryN-202', ST_AsEWKT(ST_geometryN(the_geom_3dm, 2)) FROM public.multisurface; +SELECT 'geometryN-203', ST_AsEWKT(ST_geometryN(the_geom_3dz, 2)) FROM public.multisurface; +SELECT 'geometryN-204', ST_AsEWKT(ST_geometryN(the_geom_4d, 2)) FROM public.multisurface; -SELECT 'geometryN-301', (ST_geometryN(the_geom_2d, 3) is null) FROM public.multisurface; -SELECT 'geometryN-302', (ST_geometryN(the_geom_3dm, 3) is null) FROM public.multisurface; -SELECT 'geometryN-303', (ST_geometryN(the_geom_3dz, 3) is null) FROM public.multisurface; -SELECT 'geometryN-304', (ST_geometryN(the_geom_4d, 3) is null) FROM public.multisurface; +SELECT 'geometryN-301', (ST_GeometryN(the_geom_2d, 3) is null) FROM public.multisurface; +SELECT 'geometryN-302', (ST_GeometryN(the_geom_3dm, 3) is null) FROM public.multisurface; +SELECT 'geometryN-303', (ST_GeometryN(the_geom_3dz, 3) is null) FROM public.multisurface; +SELECT 'geometryN-304', (ST_GeometryN(the_geom_4d, 3) is null) FROM public.multisurface; -SELECT DropGeometryColumn('public', 'multisurface', 'the_geom_2d'); -SELECT DropGeometryColumn('public', 'multisurface', 'the_geom_3dm'); -SELECT DropGeometryColumn('public', 'multisurface', 'the_geom_3dz'); -SELECT DropGeometryColumn('public', 'multisurface', 'the_geom_4d'); DROP TABLE public.multisurface; diff --git a/regress/sql-mm-multisurface_expected b/regress/sql-mm-multisurface_expected index c72cc5b6b..36cdf7552 100644 --- a/regress/sql-mm-multisurface_expected +++ b/regress/sql-mm-multisurface_expected @@ -6,6 +6,14 @@ ndims03|3 geometrytype03|MULTISURFACEM ndims04|2 geometrytype04|MULTISURFACE +asbinary01|010c00000002000000010a0000000200000001080000000700000000000000000000c00000000000000000000000000000f0bf000000000000f0bf00000000000000000000000000000000000000000000f03f000000000000f0bf000000000000004000000000000000000000000000000000000000000000004000000000000000c00000000000000000010200000005000000000000000000f0bf00000000000000000000000000000000000000000000e03f000000000000f03f00000000000000000000000000000000000000000000f03f000000000000f0bf0000000000000000010300000001000000050000000000000000001c4000000000000020400000000000002440000000000000244000000000000018400000000000002c40000000000000104000000000000026400000000000001c400000000000002040 +asbinary02|01dc0700000200000001da0700000200000001d80700000700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf0000000000000040000000000000000000000000000000000000000000001040000000000000f03f000000000000f0bf000000000000184000000000000000400000000000000000000000000000204000000000000000000000000000000040000000000000104000000000000000c00000000000000000000000000000000001d207000005000000000000000000f0bf000000000000000000000000000000400000000000000000000000000000e03f0000000000001040000000000000f03f000000000000000000000000000018400000000000000000000000000000f03f0000000000001040000000000000f0bf0000000000000000000000000000004001d307000001000000050000000000000000001c400000000000002040000000000000204000000000000024400000000000002440000000000000144000000000000018400000000000002c40000000000000f03f0000000000001040000000000000264000000000000018400000000000001c4000000000000020400000000000002040 +asbinary03|01f40300000200000001f20300000200000001f00300000700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f000000000000000000000000000000000000000000000040000000000000f03f000000000000f0bf000000000000084000000000000000400000000000000000000000000000104000000000000000000000000000000040000000000000004000000000000000c00000000000000000000000000000000001ea03000005000000000000000000f0bf0000000000000000000000000000f03f0000000000000000000000000000e03f0000000000000040000000000000f03f000000000000000000000000000008400000000000000000000000000000f03f0000000000000840000000000000f0bf0000000000000000000000000000f03f01eb03000001000000050000000000000000001c4000000000000020400000000000001c4000000000000024400000000000002440000000000000144000000000000018400000000000002c4000000000000008400000000000001040000000000000264000000000000010400000000000001c4000000000000020400000000000001c40 +asbinary04|01c40b00000200000001c20b00000200000001c00b00000700000000000000000000c0000000000000000000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f00000000000000400000000000000000000000000000000000000000000000400000000000001040000000000000f03f000000000000f0bf000000000000084000000000000018400000000000000040000000000000000000000000000010400000000000002040000000000000000000000000000000400000000000000040000000000000104000000000000000c000000000000000000000000000000000000000000000000001ba0b000005000000000000000000f0bf0000000000000000000000000000f03f00000000000000400000000000000000000000000000e03f00000000000000400000000000001040000000000000f03f0000000000000000000000000000084000000000000018400000000000000000000000000000f03f00000000000008400000000000001040000000000000f0bf0000000000000000000000000000f03f000000000000004001bb0b000001000000050000000000000000001c4000000000000020400000000000001c400000000000002040000000000000244000000000000024400000000000001440000000000000144000000000000018400000000000002c400000000000000840000000000000f03f00000000000010400000000000002640000000000000104000000000000018400000000000001c4000000000000020400000000000001c400000000000002040 +asewkb01|010c00000002000000010a0000000200000001080000000700000000000000000000c00000000000000000000000000000f0bf000000000000f0bf00000000000000000000000000000000000000000000f03f000000000000f0bf000000000000004000000000000000000000000000000000000000000000004000000000000000c00000000000000000010200000005000000000000000000f0bf00000000000000000000000000000000000000000000e03f000000000000f03f00000000000000000000000000000000000000000000f03f000000000000f0bf0000000000000000010300000001000000050000000000000000001c4000000000000020400000000000002440000000000000244000000000000018400000000000002c40000000000000104000000000000026400000000000001c400000000000002040 +asewkb02|010c00004002000000010a0000400200000001080000400700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf0000000000000040000000000000000000000000000000000000000000001040000000000000f03f000000000000f0bf000000000000184000000000000000400000000000000000000000000000204000000000000000000000000000000040000000000000104000000000000000c000000000000000000000000000000000010200004005000000000000000000f0bf000000000000000000000000000000400000000000000000000000000000e03f0000000000001040000000000000f03f000000000000000000000000000018400000000000000000000000000000f03f0000000000001040000000000000f0bf00000000000000000000000000000040010300004001000000050000000000000000001c400000000000002040000000000000204000000000000024400000000000002440000000000000144000000000000018400000000000002c40000000000000f03f0000000000001040000000000000264000000000000018400000000000001c4000000000000020400000000000002040 +asewkb03|010c00008002000000010a0000800200000001080000800700000000000000000000c000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f000000000000000000000000000000000000000000000040000000000000f03f000000000000f0bf000000000000084000000000000000400000000000000000000000000000104000000000000000000000000000000040000000000000004000000000000000c000000000000000000000000000000000010200008005000000000000000000f0bf0000000000000000000000000000f03f0000000000000000000000000000e03f0000000000000040000000000000f03f000000000000000000000000000008400000000000000000000000000000f03f0000000000000840000000000000f0bf0000000000000000000000000000f03f010300008001000000050000000000000000001c4000000000000020400000000000001c4000000000000024400000000000002440000000000000144000000000000018400000000000002c4000000000000008400000000000001040000000000000264000000000000010400000000000001c4000000000000020400000000000001c40 +asewkb04|010c0000c002000000010a0000c00200000001080000c00700000000000000000000c0000000000000000000000000000000000000000000000000000000000000f0bf000000000000f0bf000000000000f03f00000000000000400000000000000000000000000000000000000000000000400000000000001040000000000000f03f000000000000f0bf000000000000084000000000000018400000000000000040000000000000000000000000000010400000000000002040000000000000000000000000000000400000000000000040000000000000104000000000000000c000000000000000000000000000000000000000000000000001020000c005000000000000000000f0bf0000000000000000000000000000f03f00000000000000400000000000000000000000000000e03f00000000000000400000000000001040000000000000f03f0000000000000000000000000000084000000000000018400000000000000000000000000000f03f00000000000008400000000000001040000000000000f0bf0000000000000000000000000000f03f000000000000004001030000c001000000050000000000000000001c4000000000000020400000000000001c400000000000002040000000000000244000000000000024400000000000001440000000000000144000000000000018400000000000002c400000000000000840000000000000f03f00000000000010400000000000002640000000000000104000000000000018400000000000001c4000000000000020400000000000001c400000000000002040 ST_CurveToLine-201|MULTIPOLYGON(((-2 0,-1.70710678 -0.70710678,-1 -1,-0.29289322 -0.70710678,0 0,0.29289322 -0.70710678,1 -1,1.70710678 -0.70710678,2 0,1.41421356 1.41421356,0 2,-1.41421356 1.41421356,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0)),((7 8,10 10,6 14,4 11,7 8))) ST_CurveToLine-202|MULTIPOLYGONM(((-2 0 0,-1.70710678 -0.70710678 1,-1 -1 2,-0.29289322 -0.70710678 3,0 0 4,0.29289322 -0.70710678 5,1 -1 6,1.70710678 -0.70710678 7,2 0 8,1.41421356 1.41421356 6,0 2 4,-1.41421356 1.41421356 2,-2 0 0),(-1 0 2,0 0.5 4,1 0 6,0 1 4,-1 0 2)),((7 8 8,10 10 5,6 14 1,4 11 6,7 8 8))) ST_CurveToLine-203|MULTIPOLYGON(((-2 0 0,-1.70710678 -0.70710678 0.5,-1 -1 1,-0.29289322 -0.70710678 1.5,0 0 2,0.29289322 -0.70710678 2.5,1 -1 3,1.70710678 -0.70710678 3.5,2 0 4,1.41421356 1.41421356 3,0 2 2,-1.41421356 1.41421356 1,-2 0 0),(-1 0 1,0 0.5 2,1 0 3,0 1 3,-1 0 1)),((7 8 7,10 10 5,6 14 3,4 11 4,7 8 7))) @@ -34,10 +42,10 @@ box3d01|BOX3D(-2 -1 0,10 14 0) box3d02|BOX3D(-2 -1 0,10 14 0) box3d03|BOX3D(-2 -1 0,10 14 7) box3d04|BOX3D(-2 -1 0,10 14 7) -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. -ERROR: Exception in LWGEOM2GEOS: curved geometry not supported. +isValid01|t +isValid02|t +isValid03|t +isValid04|t dimension01|2 dimension02|2 dimension03|2 @@ -54,7 +62,3 @@ geometryN-301|t geometryN-302|t geometryN-303|t geometryN-304|t -public.multisurface.the_geom_2d effectively removed. -public.multisurface.the_geom_3dm effectively removed. -public.multisurface.the_geom_3dz effectively removed. -public.multisurface.the_geom_4d effectively removed.