From: Sandro Santilli Date: Fri, 20 Jan 2012 10:02:24 +0000 (+0000) Subject: Test new types in regress/wkt (#1476) X-Git-Tag: 2.0.0alpha2~31 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6fcfe1cd0111921db280bfc01834a26647f64b52;p=postgis Test new types in regress/wkt (#1476) git-svn-id: http://svn.osgeo.org/postgis/trunk@8890 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/regress/wkt.sql b/regress/wkt.sql index 180022e39..cce81042e 100644 --- a/regress/wkt.sql +++ b/regress/wkt.sql @@ -354,3 +354,324 @@ SELECT g, 'GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((0 0 5 4,10 0 5 4,10 10 5 4,0 10 5 4,0 0 5 4),(2 2 5 4,2 5 5 4,5 5 5 4,5 2 5 4,2 2 5 4))),POINT ZM (0 0 5 4),MULTILINESTRING ZM ((0 0 5 4, 2 0 5 4),(1 1 5 4, 2 2 5 4)))' ::text as g ) as foo; +-- CIRCULARSTRING -- + +SELECT g, -- invalid + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING(EMPTY)' +::text as g ) as foo; + +SELECT g, -- invalid + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING((0 0, 1 1, 2 2))' +::text as g ) as foo; + +SELECT g, -- invalid + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING(0 0, 1 1)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING(0 0, 1 1, 3 3)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING Z (0 0 0, 1 1 0, 2 3 4)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING M (0 0 0, 1 1 0, 3 4 5)' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CIRCULARSTRING ZM (0 0 0 0, 1 1 0 0, 1 2 3 4)' +::text as g ) as foo; + + +-- COMPOUNDCURVE -- + +SELECT g, -- invalid (missing point) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 0),(1 0,0 1))' +::text as g ) as foo; + +SELECT g, -- invalid (non continuous curve) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5))' +::text as g ) as foo; + +-- CURVEPOLYGON -- + +SELECT g, -- invalid (non continuous curve) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1)))' +::text as g ) as foo; + +SELECT g, -- invalid (requires more points -- is this correct?) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE EMPTY)' +::text as g ) as foo; + +SELECT g, -- invalid (non-closed rings) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2),(0 1 2, 0 0 2)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2, 0 0 2)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON (COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5, 1 10 3 5, 0 0 2 5)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'CURVEPOLYGON(COMPOUNDCURVE((5 5 1 0,5 0 1 1,0 0 1 2,0 5 1 3), CIRCULARSTRING(0 5 1 3,1.5 7.5 1 4,5 5 1 0)),(1.5 5 2 0,2.5 6 3 1,3.5 5 2 2,1.5 5 2 0), COMPOUNDCURVE(CIRCULARSTRING(1.5 2 2 0,1 2.5 3 1,3.5 2 2 2),(3.5 2 2 2,3.5 4 1 3,1.5 4 1 4,1.5 2 2 0)))' +::text as g ) as foo; + +-- MULTICURVE -- + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTICURVE EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTICURVE ((5 5, 3 5, 3 3, 0 3), CIRCULARSTRING (0 0, 0.2 1, 0.5 1.4), COMPOUNDCURVE (CIRCULARSTRING (0 0,1 1,1 0),(1 0,0 1)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTICURVE M ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING M (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE M (CIRCULARSTRING M (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTICURVE Z ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING Z (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTICURVE ZM ((5 5 1 3, 3 5 2 2, 3 3 3 1, 0 3 1 1), CIRCULARSTRING ZM (0 0 0 0, 0.2 1 3 -2, 0.5 1.4 1 2), COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 0 0,1 1 1 2,1 0 0 1),(1 0 0 1,0 1 5 4)))' +::text as g ) as foo; + + +-- MULTISURFACE -- + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTISURFACE EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (-2 0, -1 -1, 0 0, 1 -1, 2 0, 0 2, -2 0), (-1 0, 0 0.5, 1 0, 0 1, -1 0)), ((7 8, 10 10, 6 14, 4 11, 7 8)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTISURFACE M (CURVEPOLYGON M (CIRCULARSTRING M (-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)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTISURFACE Z (CURVEPOLYGON Z (CIRCULARSTRING Z (-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)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'MULTISURFACE ZM (CURVEPOLYGON ZM (CIRCULARSTRING ZM (-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)), ((7 8 7 8, 10 10 5 5, 6 14 3 1, 4 11 4 6, 7 8 7 8)))' +::text as g ) as foo; + +-- POLYHEDRALSURFACE -- + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYHEDRALSURFACE EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYHEDRALSURFACE (((0 0,0 0,0 1,0 0)),((0 0,0 1,1 0,0 0)),((0 0,1 0,0 0,0 0)),((1 0,0 1,0 0,1 0)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYHEDRALSURFACE M (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYHEDRALSURFACE Z (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'POLYHEDRALSURFACE ZM (((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))' +::text as g ) as foo; + + +-- TRIANGLE -- + +SELECT g, -- invalid (non-closed ring) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 0))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 3))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE M ((1 2 3,4 5 6,7 8 9,1 2 3))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE Z ((1 2 3,4 5 6,7 8 9,1 2 3))' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TRIANGLE ZM ((1 2 3 -1,4 5 6 -2,7 8 9 -3,1 2 3 -1))' +::text as g ) as foo; + + +-- TIN -- + +SELECT g, -- invalid (non-closed ring) + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN ZM ( ((0 0 0 0, 0 0 1 0, 0 1 0 4, 0 0 0 0)), ((0 0 0 1, 0 1 0 2, 1 1 0 3, 0 1 0 1)) )' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN EMPTY' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN ( ((0 0, 0 0, 0 1, 0 0)), ((0 0, 0 1, 1 1, 0 0)) )' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN Z ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN M ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )' +::text as g ) as foo; + +SELECT g, + ST_AsText(g::geometry), + ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT +'TIN ZM ( ((0 0 0 0, 0 0 1 0, 0 1 0 4, 0 0 0 0)), ((0 0 0 1, 0 1 0 2, 1 1 0 3, 0 0 0 1)) )' +::text as g ) as foo; + + diff --git a/regress/wkt_expected b/regress/wkt_expected index 6d5454518..3913420e7 100644 --- a/regress/wkt_expected +++ b/regress/wkt_expected @@ -70,3 +70,63 @@ GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2) GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT Z (0 0 5),MULTILINESTRING Z ((0 0 5, 2 0 5),(1 1 5, 2 2 5)))|GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT Z (0 0 5),MULTILINESTRING Z ((0 0 5,2 0 5),(1 1 5,2 2 5)))|t GEOMETRYCOLLECTION M (MULTIPOLYGON M (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT M (0 0 5),MULTILINESTRING M ((0 0 5, 2 0 5),(1 1 5, 2 2 5)))|GEOMETRYCOLLECTION M (MULTIPOLYGON M (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT M (0 0 5),MULTILINESTRING M ((0 0 5,2 0 5),(1 1 5,2 2 5)))|t GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((0 0 5 4,10 0 5 4,10 10 5 4,0 10 5 4,0 0 5 4),(2 2 5 4,2 5 5 4,5 5 5 4,5 2 5 4,2 2 5 4))),POINT ZM (0 0 5 4),MULTILINESTRING ZM ((0 0 5 4, 2 0 5 4),(1 1 5 4, 2 2 5 4)))|GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((0 0 5 4,10 0 5 4,10 10 5 4,0 10 5 4,0 0 5 4),(2 2 5 4,2 5 5 4,5 5 5 4,5 2 5 4,2 2 5 4))),POINT ZM (0 0 5 4),MULTILINESTRING ZM ((0 0 5 4,2 0 5 4),(1 1 5 4,2 2 5 4)))|t +ERROR: parse error - invalid geometry +HINT: "CIRCULARSTRING(EMPTY" <-- parse error at position 20 within geometry +ERROR: parse error - invalid geometry +HINT: "CIRCULARSTRING((" <-- parse error at position 16 within geometry +ERROR: geometry requires more points +HINT: "CIRCULARSTRING(0 0, 1 1)" <-- parse error at position 24 within geometry +CIRCULARSTRING EMPTY|CIRCULARSTRING EMPTY|t +CIRCULARSTRING(0 0, 1 1, 3 3)|CIRCULARSTRING(0 0,1 1,3 3)|t +CIRCULARSTRING Z (0 0 0, 1 1 0, 2 3 4)|CIRCULARSTRING Z (0 0 0,1 1 0,2 3 4)|t +CIRCULARSTRING M (0 0 0, 1 1 0, 3 4 5)|CIRCULARSTRING M (0 0 0,1 1 0,3 4 5)|t +CIRCULARSTRING ZM (0 0 0 0, 1 1 0 0, 1 2 3 4)|CIRCULARSTRING ZM (0 0 0 0,1 1 0 0,1 2 3 4)|t +ERROR: geometry requires more points +HINT: "COMPOUNDCURVE(CIRCULARSTRING(0 0,1 0)" <-- parse error at position 37 within geometry +ERROR: incontinuous compound curve +HINT: "...CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1)" <-- parse error at position 51 within geometry +COMPOUNDCURVE EMPTY|COMPOUNDCURVE EMPTY|t +COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))|COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))|t +COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))|COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))|t +COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))|COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))|t +COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5))|COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5),(1 0 2 3,0 1 2 2),(0 1 2 2,30 1 2 2),CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5))|t +ERROR: incontinuous compound curve +HINT: "...CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1)" <-- parse error at position 65 within geometry +ERROR: geometry requires more points +HINT: "CURVEPOLYGON (COMPOUNDCURVE EMPTY" <-- parse error at position 33 within geometry +ERROR: geometry contains non-closed rings +HINT: "...IRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))" <-- parse error at position 66 within geometry +CURVEPOLYGON EMPTY|CURVEPOLYGON EMPTY|t +CURVEPOLYGON (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2),(0 1 2, 0 0 2)))|CURVEPOLYGON M (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2),(0 1 2,0 0 2)))|t +CURVEPOLYGON (COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2, 0 0 2)))|CURVEPOLYGON Z (COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2,0 0 2)))|t +CURVEPOLYGON (COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5, 1 10 3 5, 0 0 2 5)))|CURVEPOLYGON ZM (COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5),(1 0 2 3,0 1 2 2),(0 1 2 2,30 1 2 2),CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5,1 10 3 5,0 0 2 5)))|t +CURVEPOLYGON(COMPOUNDCURVE((5 5 1 0,5 0 1 1,0 0 1 2,0 5 1 3), CIRCULARSTRING(0 5 1 3,1.5 7.5 1 4,5 5 1 0)),(1.5 5 2 0,2.5 6 3 1,3.5 5 2 2,1.5 5 2 0), COMPOUNDCURVE(CIRCULARSTRING(1.5 2 2 0,1 2.5 3 1,3.5 2 2 2),(3.5 2 2 2,3.5 4 1 3,1.5 4 1 4,1.5 2 2 0)))|CURVEPOLYGON ZM (COMPOUNDCURVE ZM ((5 5 1 0,5 0 1 1,0 0 1 2,0 5 1 3),CIRCULARSTRING ZM (0 5 1 3,1.5 7.5 1 4,5 5 1 0)),(1.5 5 2 0,2.5 6 3 1,3.5 5 2 2,1.5 5 2 0),COMPOUNDCURVE ZM (CIRCULARSTRING ZM (1.5 2 2 0,1 2.5 3 1,3.5 2 2 2),(3.5 2 2 2,3.5 4 1 3,1.5 4 1 4,1.5 2 2 0)))|t +MULTICURVE EMPTY|MULTICURVE EMPTY|t +MULTICURVE ((5 5, 3 5, 3 3, 0 3), CIRCULARSTRING (0 0, 0.2 1, 0.5 1.4), COMPOUNDCURVE (CIRCULARSTRING (0 0,1 1,1 0),(1 0,0 1)))|MULTICURVE((5 5,3 5,3 3,0 3),CIRCULARSTRING(0 0,0.2 1,0.5 1.4),COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1)))|t +MULTICURVE M ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING M (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE M (CIRCULARSTRING M (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))|MULTICURVE M ((5 5 1,3 5 2,3 3 3,0 3 1),CIRCULARSTRING M (0 0 0,0.2 1 3,0.5 1.4 1),COMPOUNDCURVE M (CIRCULARSTRING M (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))|t +MULTICURVE Z ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING Z (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))|MULTICURVE Z ((5 5 1,3 5 2,3 3 3,0 3 1),CIRCULARSTRING Z (0 0 0,0.2 1 3,0.5 1.4 1),COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))|t +MULTICURVE ZM ((5 5 1 3, 3 5 2 2, 3 3 3 1, 0 3 1 1), CIRCULARSTRING ZM (0 0 0 0, 0.2 1 3 -2, 0.5 1.4 1 2), COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 0 0,1 1 1 2,1 0 0 1),(1 0 0 1,0 1 5 4)))|MULTICURVE ZM ((5 5 1 3,3 5 2 2,3 3 3 1,0 3 1 1),CIRCULARSTRING ZM (0 0 0 0,0.2 1 3 -2,0.5 1.4 1 2),COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 0 0,1 1 1 2,1 0 0 1),(1 0 0 1,0 1 5 4)))|t +MULTISURFACE EMPTY|MULTISURFACE EMPTY|t +MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (-2 0, -1 -1, 0 0, 1 -1, 2 0, 0 2, -2 0), (-1 0, 0 0.5, 1 0, 0 1, -1 0)), ((7 8, 10 10, 6 14, 4 11, 7 8)))|MULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(-2 0,-1 -1,0 0,1 -1,2 0,0 2,-2 0),(-1 0,0 0.5,1 0,0 1,-1 0)),((7 8,10 10,6 14,4 11,7 8)))|t +MULTISURFACE M (CURVEPOLYGON M (CIRCULARSTRING M (-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)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))|MULTISURFACE M (CURVEPOLYGON M (CIRCULARSTRING M (-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)),((7 8 7,10 10 5,6 14 3,4 11 4,7 8 7)))|t +MULTISURFACE Z (CURVEPOLYGON Z (CIRCULARSTRING Z (-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)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))|MULTISURFACE Z (CURVEPOLYGON Z (CIRCULARSTRING Z (-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)),((7 8 7,10 10 5,6 14 3,4 11 4,7 8 7)))|t +MULTISURFACE ZM (CURVEPOLYGON ZM (CIRCULARSTRING ZM (-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)), ((7 8 7 8, 10 10 5 5, 6 14 3 1, 4 11 4 6, 7 8 7 8)))|MULTISURFACE ZM (CURVEPOLYGON ZM (CIRCULARSTRING ZM (-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)),((7 8 7 8,10 10 5 5,6 14 3 1,4 11 4 6,7 8 7 8)))|t +POLYHEDRALSURFACE EMPTY|POLYHEDRALSURFACE EMPTY|t +POLYHEDRALSURFACE (((0 0,0 0,0 1,0 0)),((0 0,0 1,1 0,0 0)),((0 0,1 0,0 0,0 0)),((1 0,0 1,0 0,1 0)))|POLYHEDRALSURFACE(((0 0,0 0,0 1,0 0)),((0 0,0 1,1 0,0 0)),((0 0,1 0,0 0,0 0)),((1 0,0 1,0 0,1 0)))|t +POLYHEDRALSURFACE M (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))|POLYHEDRALSURFACE M (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))|t +POLYHEDRALSURFACE Z (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))|POLYHEDRALSURFACE Z (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))|t +POLYHEDRALSURFACE ZM (((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))|POLYHEDRALSURFACE ZM (((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))|t +ERROR: geometry contains non-closed rings +HINT: "TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 0))" <-- parse error at position 36 within geometry +TRIANGLE EMPTY|TRIANGLE EMPTY|t +TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 3))|TRIANGLE Z ((1 2 3,4 5 6,7 8 9,1 2 3))|t +TRIANGLE M ((1 2 3,4 5 6,7 8 9,1 2 3))|TRIANGLE M ((1 2 3,4 5 6,7 8 9,1 2 3))|t +TRIANGLE Z ((1 2 3,4 5 6,7 8 9,1 2 3))|TRIANGLE Z ((1 2 3,4 5 6,7 8 9,1 2 3))|t +TRIANGLE ZM ((1 2 3 -1,4 5 6 -2,7 8 9 -3,1 2 3 -1))|TRIANGLE ZM ((1 2 3 -1,4 5 6 -2,7 8 9 -3,1 2 3 -1))|t +ERROR: geometry contains non-closed rings +HINT: "...(0 0 0 1, 0 1 0 2, 1 1 0 3, 0 1 0 1))" <-- parse error at position 87 within geometry +TIN EMPTY|TIN EMPTY|t +TIN ( ((0 0, 0 0, 0 1, 0 0)), ((0 0, 0 1, 1 1, 0 0)) )|TIN(((0 0,0 0,0 1,0 0)),((0 0,0 1,1 1,0 0)))|t +TIN Z ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )|TIN Z (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 1 0,0 0 0)))|t +TIN M ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )|TIN M (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 1 0,0 0 0)))|t +TIN ZM ( ((0 0 0 0, 0 0 1 0, 0 1 0 4, 0 0 0 0)), ((0 0 0 1, 0 1 0 2, 1 1 0 3, 0 0 0 1)) )|TIN ZM (((0 0 0 0,0 0 1 0,0 1 0 4,0 0 0 0)),((0 0 0 1,0 1 0 2,1 1 0 3,0 0 0 1)))|t