]> granicus.if.org Git - postgis/commitdiff
Change dimensionality indicators to have spaces between type indicators for WKT_ISO...
authorPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 24 Feb 2010 14:40:17 +0000 (14:40 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 24 Feb 2010 14:40:17 +0000 (14:40 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@5335 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/cunit/cu_wkt.c
liblwgeom/lwout_wkt.c

index bd830b0437580a00ceebdc13e4e3aa422bde595d..8b16f6a415324d97880543b6745a2f8db4442c9d 100644 (file)
@@ -23,7 +23,6 @@
 */
 char *s;
 
-
 /*
 ** The suite initialization function.
 ** Create any re-used objects.
@@ -56,11 +55,11 @@ static char* cu_wkt(char *wkt, uchar variant)
 
 static void test_wkt_point(void)
 {
-       CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(0.1111 0.1111 0.1111 0)",WKT_ISO), "POINTZM(0.1111 0.1111 0.1111 0)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(0.1111 0.1111 0.1111 0)",WKT_ISO), "POINT ZM (0.1111 0.1111 0.1111 0)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(0 0 0 0)",WKT_EXTENDED), "POINT(0 0 0 0)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(0 0 0 0)",WKT_SFSQL), "POINT(0 0)");
 
-       CU_ASSERT_STRING_EQUAL(cu_wkt("POINTM(0 0 0)",WKT_ISO), "POINTM(0 0 0)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("POINTM(0 0 0)",WKT_ISO), "POINT M (0 0 0)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINTM(0 0 0)",WKT_EXTENDED), "POINTM(0 0 0)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINTM(0 0 0)",WKT_SFSQL), "POINT(0 0)");
 
@@ -68,7 +67,7 @@ static void test_wkt_point(void)
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100 100)",WKT_EXTENDED), "POINT(100 100)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100 100)",WKT_SFSQL), "POINT(100 100)");
 
-       CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100.1 100 12 12)",WKT_ISO), "POINTZM(100.1 100 12 12)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100.1 100 12 12)",WKT_ISO), "POINT ZM (100.1 100 12 12)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100.1 100 12 12)",WKT_EXTENDED), "POINT(100.1 100 12 12)");
        CU_ASSERT_STRING_EQUAL(cu_wkt("POINT(100.1 100 12 12)",WKT_SFSQL), "POINT(100.1 100)");
 
@@ -80,105 +79,121 @@ static void test_wkt_point(void)
 
 static void test_wkt_linestring(void) 
 {
-       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRING(1 2 3 4,5 6 7 8)",WKT_ISO), "LINESTRINGZM(1 2 3 4,5 6 7 8)");
-       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRING(1 2 3,5 6 7)",WKT_ISO), "LINESTRINGZ(1 2 3,5 6 7)");
-       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRINGM(1 2 3,5 6 7)",WKT_ISO), "LINESTRINGM(1 2 3,5 6 7)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRING(1 2 3 4,5 6 7 8)",WKT_ISO), "LINESTRING ZM (1 2 3 4,5 6 7 8)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRING(1 2 3,5 6 7)",WKT_ISO), "LINESTRING Z (1 2 3,5 6 7)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("LINESTRINGM(1 2 3,5 6 7)",WKT_ISO), "LINESTRING M (1 2 3,5 6 7)");
 }
 
 static void test_wkt_polygon(void) 
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))",WKT_ISO), 
-           "POLYGONZ((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))");
+         cu_wkt("POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))",WKT_ISO), 
+      "POLYGON Z ((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))"
+    );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))",WKT_EXTENDED), 
-              "POLYGON((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))");
+         cu_wkt("POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))",WKT_EXTENDED), 
+         "POLYGON((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))"
+       );
 }
 static void test_wkt_multipoint(void) 
 {
-       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINT(1 2 3 4,5 6 7 8)",WKT_ISO), "MULTIPOINTZM(1 2 3 4,5 6 7 8)");
-       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINT(1 2 3,5 6 7)",WKT_ISO), "MULTIPOINTZ(1 2 3,5 6 7)");
-       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINTM(1 2 3,5 6 7)",WKT_ISO), "MULTIPOINTM(1 2 3,5 6 7)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINT(1 2 3 4,5 6 7 8)",WKT_ISO), "MULTIPOINT ZM (1 2 3 4,5 6 7 8)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINT(1 2 3,5 6 7)",WKT_ISO), "MULTIPOINT Z (1 2 3,5 6 7)");
+       CU_ASSERT_STRING_EQUAL(cu_wkt("MULTIPOINTM(1 2 3,5 6 7)",WKT_ISO), "MULTIPOINT M (1 2 3,5 6 7)");
        
 }
 
 static void test_wkt_multilinestring(void) 
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTILINESTRING((1 2 3 4,5 6 7 8))",WKT_ISO), 
-              "MULTILINESTRINGZM((1 2 3 4,5 6 7 8))");
+         cu_wkt("MULTILINESTRING((1 2 3 4,5 6 7 8))",WKT_ISO), 
+         "MULTILINESTRING ZM ((1 2 3 4,5 6 7 8))"
+       );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTILINESTRING((1 2 3,5 6 7))",WKT_ISO), 
-              "MULTILINESTRINGZ((1 2 3,5 6 7))");
+         cu_wkt("MULTILINESTRING((1 2 3,5 6 7))",WKT_ISO), 
+         "MULTILINESTRING Z ((1 2 3,5 6 7))"
+       );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTILINESTRINGM((1 2 3,5 6 7))",WKT_ISO), 
-              "MULTILINESTRINGM((1 2 3,5 6 7))");      
+         cu_wkt("MULTILINESTRINGM((1 2 3,5 6 7))",WKT_ISO), 
+         "MULTILINESTRING M ((1 2 3,5 6 7))"
+       );
 }
 
 static void test_wkt_multipolygon(void) 
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)))",WKT_ISO), 
-           "MULTIPOLYGONZ(((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)))");
+         cu_wkt("MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)))",WKT_ISO), 
+      "MULTIPOLYGON Z (((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)))"
+       );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)))",WKT_EXTENDED), 
-              "MULTIPOLYGON(((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)))");
+         cu_wkt("MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)))",WKT_EXTENDED), 
+         "MULTIPOLYGON(((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)))"
+       );
 }
 
 static void test_wkt_collection(void) 
 {
        //printf("%s\n",cu_wkt("GEOMETRYCOLLECTION(MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))),MULTIPOINT(.5 .5 .5,1 1 1),CURVEPOLYGON((.8 .8 .8,.8 .8 .8,.8 .8 .8)))",WKT_ISO));
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("GEOMETRYCOLLECTION(POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)),POINT(.5 .5 .5),CIRCULARSTRING(.8 .8 .8,.8 .8 .8,.8 .8 .8))",WKT_ISO), 
-           "GEOMETRYCOLLECTIONZ(POLYGONZ((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)),POINTZ(0.5 0.5 0.5),CIRCULARSTRINGZ(0.8 0.8 0.8,0.8 0.8 0.8,0.8 0.8 0.8))");
+         cu_wkt("GEOMETRYCOLLECTION(POLYGON((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2)),POINT(.5 .5 .5),CIRCULARSTRING(.8 .8 .8,.8 .8 .8,.8 .8 .8))",WKT_ISO), 
+      "GEOMETRYCOLLECTION Z (POLYGON Z ((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2)),POINT Z (0.5 0.5 0.5),CIRCULARSTRING Z (0.8 0.8 0.8,0.8 0.8 0.8,0.8 0.8 0.8))"
+       );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("GEOMETRYCOLLECTION(MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))),MULTIPOINT(.5 .5 .5,1 1 1),CURVEPOLYGON((.8 .8 .8,.8 .8 .8,.8 .8 .8)))",WKT_ISO), 
-           "GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))),MULTIPOINTZ(0.5 0.5 0.5,1 1 1),CURVEPOLYGONZ((0.8 0.8 0.8,0.8 0.8 0.8,0.8 0.8 0.8)))");
+         cu_wkt("GEOMETRYCOLLECTION(MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))),MULTIPOINT(.5 .5 .5,1 1 1),CURVEPOLYGON((.8 .8 .8,.8 .8 .8,.8 .8 .8)))",WKT_ISO), 
+      "GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((100 100 2,100 200 2,200 200 2,200 100 2,100 100 2))),MULTIPOINT Z (0.5 0.5 0.5,1 1 1),CURVEPOLYGON Z ((0.8 0.8 0.8,0.8 0.8 0.8,0.8 0.8 0.8)))"
+       );
 }
 
 static void test_wkt_circularstring(void) 
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)",WKT_ISO), 
-           "CIRCULARSTRINGZM(1 2 3 4,4 5 6 7,7 8 9 0)");
+         cu_wkt("CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)",WKT_ISO), 
+      "CIRCULARSTRING ZM (1 2 3 4,4 5 6 7,7 8 9 0)"
+       );
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)",WKT_EXTENDED), 
-              "CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)");
+         cu_wkt("CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)",WKT_EXTENDED), 
+         "CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0)"
+       );
        //printf("%s\n",cu_wkt("GEOMETRYCOLLECTION(MULTIPOLYGON(((100 100 2, 100 200 2, 200 200 2, 200 100 2, 100 100 2))),MULTIPOINT(.5 .5 .5,1 1 1),CURVEPOLYGON((.8 .8 .8,.8 .8 .8,.8 .8 .8)))",WKT_ISO));
 }
 
 static void test_wkt_compoundcurve(void)
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("COMPOUNDCURVE((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
-           "COMPOUNDCURVEZM((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRINGZM(1 2 3 4,4 5 6 7,7 8 9 0))");
+         cu_wkt("COMPOUNDCURVE((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
+      "COMPOUNDCURVE ZM ((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING ZM (1 2 3 4,4 5 6 7,7 8 9 0))"
+       );
 }
 
 static void test_wkt_curvpolygon(void)
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("CURVEPOLYGON((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
-           "CURVEPOLYGONZM((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRINGZM(1 2 3 4,4 5 6 7,7 8 9 0))");
+         cu_wkt("CURVEPOLYGON((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
+      "CURVEPOLYGON ZM ((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING ZM (1 2 3 4,4 5 6 7,7 8 9 0))"
+       );
 }
 
 static void test_wkt_multicurve(void)
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTICURVE((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
-           "MULTICURVEZM((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRINGZM(1 2 3 4,4 5 6 7,7 8 9 0))");
+         cu_wkt("MULTICURVE((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING(1 2 3 4,4 5 6 7,7 8 9 0))",WKT_ISO), 
+      "MULTICURVE ZM ((1 2 3 4,4 5 6 7,7 8 9 0),CIRCULARSTRING ZM (1 2 3 4,4 5 6 7,7 8 9 0))"
+       );
 }
 
 static void test_wkt_multisurface(void)
 {
        CU_ASSERT_STRING_EQUAL(
-       cu_wkt("MULTISURFACE(((1 2 3 4,4 5 6 7,7 8 9 0)),CURVEPOLYGON((1 2 3 4,4 5 6 7,7 8 9 0)))",WKT_ISO), 
-           "MULTISURFACEZM(((1 2 3 4,4 5 6 7,7 8 9 0)),CURVEPOLYGONZM((1 2 3 4,4 5 6 7,7 8 9 0)))");
+         cu_wkt("MULTISURFACE(((1 2 3 4,4 5 6 7,7 8 9 0)),CURVEPOLYGON((1 2 3 4,4 5 6 7,7 8 9 0)))",WKT_ISO), 
+      "MULTISURFACE ZM (((1 2 3 4,4 5 6 7,7 8 9 0)),CURVEPOLYGON ZM ((1 2 3 4,4 5 6 7,7 8 9 0)))"
+       );
        
 }
 
 /*
 ** Used by test harness to register the tests in this file.
 */
+
 CU_TestInfo wkt_tests[] = {
        PG_TEST(test_wkt_point),
        PG_TEST(test_wkt_linestring),
index 355021ebcf9290f591940c5eacde27c89e91b865..102831c2695aea1c483a5426b886008130629be9 100644 (file)
@@ -33,10 +33,12 @@ static void dimension_qualifiers_to_wkt_sb(const LWGEOM *geom, stringbuffer_t *s
        /* ISO WKT: POINT ZM (0 0 0 0) */
        if( (variant & WKT_ISO) && (TYPE_NDIMS(geom->type) > 2) )
        {
+               stringbuffer_append(sb, " ");
                if( TYPE_HASZ(geom->type) )
                        stringbuffer_append(sb, "Z");
                if( TYPE_HASM(geom->type) )
                        stringbuffer_append(sb, "M");
+               stringbuffer_append(sb, " ");
        }       
 }