[SCM] PostGIS branch master updated. 3.6.0rc2-612-g2f87b9ef2

git at osgeo.org git at osgeo.org
Thu Jun 18 10:14:14 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, master has been updated
       via  2f87b9ef28eb63e50d935da7141647ceb34f520f (commit)
      from  8868c689e96dc91c50a0549aac3d7bf5b8b6238e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 2f87b9ef28eb63e50d935da7141647ceb34f520f
Author: Darafei Praliaskouski <me at komzpa.net>
Date:   Thu Jun 18 21:09:39 2026 +0400

    liblwgeom: preserve TIN Z qualifiers in EWKT
    
    Preserve explicit Z and ZM qualifiers when ST_AsEWKT serializes TIN geometries, and cover the changed output in CUnit and SQL regressions.
    
    Closes https://github.com/postgis/postgis/pull/950
    
    Closes #2583

diff --git a/NEWS b/NEWS
index 33f074411..f4db1a5fc 100644
--- a/NEWS
+++ b/NEWS
@@ -112,6 +112,8 @@ To take advantage of all postgis_sfcgal extension features SFCGAL 2.3+ is needed
  - GH-848, CG_AlphaShape now returns a MultiPolygon (Jean Felder)
  - Flatgeobuf schema mismatch vulnerability (NeuroWinter)
  - #5899, pg_upgrade issue for non-standard geography SRID (Paul Ramsey)
+ - #2583, Preserve Z/ZM dimensional qualifiers in ST_AsEWKT output for TIN
+          (Darafei Praliaskouski)
 
 
 PostGIS 3.6.0
diff --git a/liblwgeom/cunit/cu_algorithm.c b/liblwgeom/cunit/cu_algorithm.c
index 6ac9da3c7..9d1519f65 100644
--- a/liblwgeom/cunit/cu_algorithm.c
+++ b/liblwgeom/cunit/cu_algorithm.c
@@ -798,7 +798,7 @@ test_lwtriangle_clip(void)
 
 	ewkt = lwgeom_to_ewkt((LWGEOM *)c);
 	// printf("c = %s\n", ewkt);
-	ASSERT_STRING_EQUAL(ewkt, "TIN(((0 0 0,1 1 1,3 2 2,0 0 0)))");
+	ASSERT_STRING_EQUAL(ewkt, "TIN Z (((0 0 0,1 1 1,3 2 2,0 0 0)))");
 	lwfree(ewkt);
 	lwcollection_free(c);
 	lwgeom_free(g);
@@ -808,7 +808,7 @@ test_lwtriangle_clip(void)
 
 	ewkt = lwgeom_to_ewkt((LWGEOM *)c);
 	// printf("c = %s\n", ewkt);
-	ASSERT_STRING_EQUAL(ewkt, "TIN(((0 0 0,1 1 1,1.5 1 1,0 0 0)))");
+	ASSERT_STRING_EQUAL(ewkt, "TIN Z (((0 0 0,1 1 1,1.5 1 1,0 0 0)))");
 	lwfree(ewkt);
 	lwcollection_free(c);
 	lwgeom_free(g);
@@ -820,7 +820,7 @@ test_lwtriangle_clip(void)
 	// printf("c = %s\n", ewkt);
 	ASSERT_STRING_EQUAL(
 	    ewkt,
-	    "TIN(((1 1 1,2 1.5 2,2 1.333333333333 2,1 1 1)),((1 1 1,2 1.333333333333 2,1 0.666666666667 1,1 1 1)))");
+	    "TIN Z (((1 1 1,2 1.5 2,2 1.333333333333 2,1 1 1)),((1 1 1,2 1.333333333333 2,1 0.666666666667 1,1 1 1)))");
 	lwfree(ewkt);
 	lwcollection_free(c);
 	lwgeom_free(g);
@@ -839,7 +839,7 @@ test_lwtriangle_clip(void)
 	// printf("c = %s\n", ewkt);
 	ASSERT_STRING_EQUAL(
 	    ewkt,
-	    "TIN(((0 0 2,0 1 2,-1 2 2,0 0 2)),((0 1 2,0 0 2,0 1 4,0 1 2)),((-1 2 2,0 1 2,1 1 2,-1 2 2)),((0 0 2,-1 2 2,-1 -1 2,0 0 2)),((0 1 4,0 0 2,0 0 4,0 1 4)),((0 1 2,0 1 4,1 1 4,0 1 2)),((1 1 2,0 1 2,1 1 4,1 1 2)),((-1 2 2,1 1 2,2 2 2,-1 2 2)),((-1 -1 2,-1 2 2,-1 0 0,-1 -1 2)),((-1 -1 2,-1 0 0,-1 -1 0,-1 -1 2)),((0 0 2,-1 -1 2,1 0 2,0 0 2)),((0 0 4,0 0 2,1 0 2,0 0 4)),((0 1 4,0 0 4,1 0 4,0 1 4)),((1 1 4,0 1 4,1 0 4,1 1 4)),((1 1 2,1 1 4,1 0 4,1 1 2)),((2 2 2,1 1 2,2 -1 2,2 2 2)),((-1 2 2,2 2 2,0 2 0,-1 2 2)),((-1 2 2,0 2 0,-1 2 0,-1 2 2)),((-1 0 0,-1 2 2,-1 2 0,-1 0 0)),((-1 -1 2,-1 -1 0,1 -1 0,-1 -1 2)),((1 0 2,-1 -1 2,2 -1 2,1 0 2)),((0 0 4,1 0 2,1 0 4,0 0 4)),((1 1 2,1 0 4,1 0 2,1 1 2)),((2 -1 2,1 1 2,1 0 2,2 -1 2)),((2 2 2,2 -1 2,2 1 0,2 2 2)),((2 2 2,2 1 0,2 2 0,2 2 2)),((0 2 0,2 2 2,2 2 0,0 2 0)),((-1 -1 2,1 -1 0,2 -1 0,-1 -1 2)),((-1 -1 2,2 -1 0,2 -1 2,-1 -1 2)),((2 1 0,2 -1 2,2 -1 0,2 1 0)))");
+	    "TIN Z (((0 0 2,0 1 2,-1 2 2,0 0 2)),((0 1 2,0 0 2,0 1 4,0 1 2)),((-1 2 2,0 1 2,1 1 2,-1 2 2)),((0 0 2,-1 2 2,-1 -1 2,0 0 2)),((0 1 4,0 0 2,0 0 4,0 1 4)),((0 1 2,0 1 4,1 1 4,0 1 2)),((1 1 2,0 1 2,1 1 4,1 1 2)),((-1 2 2,1 1 2,2 2 2,-1 2 2)),((-1 -1 2,-1 2 2,-1 0 0,-1 -1 2)),((-1 -1 2,-1 0 0,-1 -1 0,-1 -1 2)),((0 0 2,-1 -1 2,1 0 2,0 0 2)),((0 0 4,0 0 2,1 0 2,0 0 4)),((0 1 4,0 0 4,1 0 4,0 1 4)),((1 1 4,0 1 4,1 0 4,1 1 4)),((1 1 2,1 1 4,1 0 4,1 1 2)),((2 2 2,1 1 2,2 -1 2,2 2 2)),((-1 2 2,2 2 2,0 2 0,-1 2 2)),((-1 2 2,0 2 0,-1 2 0,-1 2 2)),((-1 0 0,-1 2 2,-1 2 0,-1 0 0)),((-1 -1 2,-1 -1 0,1 -1 0,-1 -1 2)),((1 0 2,-1 -1 2,2 -1 2,1 0 2)),((0 0 4,1 0 2,1 0 4,0 0 4)),((1 1 2,1 0 4,1 0 2,1 1 2)),((2 -1 2,1 1 2,1 0 2,2 -1 2)),((2 2 2,2 -1 2,2 1 0,2 2 2)),((2 2 2,2 1 0,2 2 0,2 2 2)),((0 2 0,2 2 2,2 2 0,0 2 0)),((-1 -1 2,1 -1 0,2 -1 0,-1 -1 2)),((-1 -1 2,2 -1 0,2 -1 2,-1 -1 2)),((2 1 0,2 -1 2,2 -1 0,2 1 0)))");
 	lwfree(ewkt);
 	lwcollection_free(c);
 	lwgeom_free(g);
diff --git a/liblwgeom/cunit/cu_gserialized1.c b/liblwgeom/cunit/cu_gserialized1.c
index 7f443ca74..23f3b9743 100644
--- a/liblwgeom/cunit/cu_gserialized1.c
+++ b/liblwgeom/cunit/cu_gserialized1.c
@@ -720,7 +720,7 @@ static void test_lwgeom_clone(void)
 		"SRID=4326;GEOMETRYCOLLECTION(POINT(0 1),POLYGON((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0)),MULTIPOLYGON(((-1 -1,-1 2.5,2 2,2 -1,-1 -1),(0 0,0 1,1 1,1 0,0 0),(-0.5 -0.5,-0.5 -0.4,-0.4 -0.4,-0.4 -0.5,-0.5 -0.5))))",
 		"MULTICURVE((5 5 1 3,3 5 2 2,3 3 3 1,0 3 1 1),CIRCULARSTRING(0 0 0 0,0.26794 1 3 -2,0.5857864 1.414213 1 2))",
 		"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)))",
-		"TIN(((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)))"
+		"TIN 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)))"
 	};
 
 
diff --git a/liblwgeom/cunit/cu_sfcgal.c b/liblwgeom/cunit/cu_sfcgal.c
index fd26d58c1..86eb16562 100644
--- a/liblwgeom/cunit/cu_sfcgal.c
+++ b/liblwgeom/cunit/cu_sfcgal.c
@@ -103,7 +103,7 @@ test_sfcgal_noop(void)
 	    "MULTIPOLYGONM(((0 0 1,0 1 2,1 1 3,1 0 4,0 0 1)),((2 2 5,2 3 6,3 3 7,3 2 8,2 2 5)))",
 	    "MULTIPOLYGON(((0 0 1 10,0 1 2 20,1 1 3 30,1 0 4 40,0 0 1 10)),((2 2 5 50,2 3 6 60,3 3 7 70,3 2 8 80,2 2 5 50)))",
 	    "TINM(((0 0 1,0 1 2,1 0 3,0 0 1)),((0 0 1,1 0 3,1 1 4,0 0 1)))",
-	    "TIN(((0 0 1 10,0 1 2 20,1 0 3 30,0 0 1 10)),((0 0 1 10,1 0 3 30,1 1 4 40,0 0 1 10)))",
+	    "TIN ZM (((0 0 1 10,0 1 2 20,1 0 3 30,0 0 1 10)),((0 0 1 10,1 0 3 30,1 1 4 40,0 0 1 10)))",
 	    "POLYHEDRALSURFACEM(((0 0 1,0 1 2,1 1 3,1 0 4,0 0 1)),((0 0 1,1 0 4,1 -1 5,0 -1 6,0 0 1)))",
 	    "POLYHEDRALSURFACE(((0 0 1 10,0 1 2 20,1 1 3 30,1 0 4 40,0 0 1 10)),((0 0 1 10,1 0 4 40,1 -1 5 50,0 -1 6 60,0 0 1 10)))",
 	    "GEOMETRYCOLLECTIONM(LINESTRINGM(-1 -1 3,2 19 25,-4 20 15),POLYGONM((0 0 10,2 19 25,-4 20 15,0 0 10)))",
diff --git a/liblwgeom/cunit/cu_surface.c b/liblwgeom/cunit/cu_surface.c
index 074a9dd05..985eb63db 100644
--- a/liblwgeom/cunit/cu_surface.c
+++ b/liblwgeom/cunit/cu_surface.c
@@ -141,6 +141,24 @@ void tin_parse(void)
 	lwfree(tmp);
 	lwgeom_free(geom);
 
+	/* 3DZ */
+	geom = lwgeom_from_wkt("TIN Z(((0 1 2,3 4 5,6 7 8,0 1 2)))", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
+	CU_ASSERT_EQUAL(geom->type, TINTYPE);
+	tmp = lwgeom_to_ewkt(geom);
+	ASSERT_STRING_EQUAL("TIN Z (((0 1 2,3 4 5,6 7 8,0 1 2)))", tmp);
+	lwfree(tmp);
+	lwgeom_free(geom);
+
+	/* 4D */
+	geom = lwgeom_from_wkt("TIN ZM(((0 1 2 3,3 4 5 6,6 7 8 9,0 1 2 3)))", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_EQUAL(strlen(cu_error_msg), 0);
+	CU_ASSERT_EQUAL(geom->type, TINTYPE);
+	tmp = lwgeom_to_ewkt(geom);
+	ASSERT_STRING_EQUAL("TIN ZM (((0 1 2 3,3 4 5 6,6 7 8 9,0 1 2 3)))", tmp);
+	lwfree(tmp);
+	lwgeom_free(geom);
+
 	/* ERROR: a missing Z values */
 	geom = lwgeom_from_wkt("TIN(((0 1 2,3 4 5,6 7,0 1 2)))", LW_PARSER_CHECK_NONE);
 	ASSERT_STRING_EQUAL("can not mix dimensionality in a geometry", cu_error_msg);
@@ -198,7 +216,9 @@ void tin_parse(void)
 	CU_ASSERT_EQUAL(geom->type, TINTYPE);
 	CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
 	tmp = lwgeom_to_ewkt(geom);
-	ASSERT_STRING_EQUAL("TIN(((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)))", tmp);
+	ASSERT_STRING_EQUAL(
+	    "TIN 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)))",
+	    tmp);
 	lwfree(tmp);
 	lwgeom_free(geom);
 
@@ -209,7 +229,9 @@ void tin_parse(void)
 	CU_ASSERT_EQUAL(FLAGS_GET_M(geom->flags), 1);
 	CU_ASSERT_EQUAL(geom->srid, SRID_UNKNOWN);
 	tmp = lwgeom_to_ewkt(geom);
-	ASSERT_STRING_EQUAL("TIN(((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)))", tmp);
+	ASSERT_STRING_EQUAL(
+	    "TIN 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)))",
+	    tmp);
 	lwfree(tmp);
 	lwgeom_free(geom);
 
@@ -219,7 +241,9 @@ void tin_parse(void)
 	CU_ASSERT_EQUAL(geom->type, TINTYPE);
 	CU_ASSERT_EQUAL(geom->srid, 4326);
 	tmp = lwgeom_to_ewkt(geom);
-	ASSERT_STRING_EQUAL("SRID=4326;TIN(((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)))", tmp);
+	ASSERT_STRING_EQUAL(
+	    "SRID=4326;TIN 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)))",
+	    tmp);
 	lwfree(tmp);
 	lwgeom_free(geom);
 
diff --git a/liblwgeom/lwout_wkt.c b/liblwgeom/lwout_wkt.c
index 967a04a9f..e3fe15045 100644
--- a/liblwgeom/lwout_wkt.c
+++ b/liblwgeom/lwout_wkt.c
@@ -19,10 +19,10 @@
  **********************************************************************
  *
  * Copyright (C) 2009 Paul Ramsey <pramsey at cleverelephant.ca>
+ * Copyright (C) 2026 Darafei Praliaskouski <me at komzpa.net>
  *
  **********************************************************************/
 
-
 #include "liblwgeom_internal.h"
 #include "lwgeom_log.h"
 #include "stringbuffer.h"
@@ -43,6 +43,15 @@ static void lwnurbscurve_to_wkt_sb(const LWNURBSCURVE *curve, stringbuffer_t *sb
 static void dimension_qualifiers_to_wkt_sb(const LWGEOM *geom, stringbuffer_t *sb, uint8_t variant)
 {
 
+	if ((variant & WKT_EXTENDED) && geom->type == TINTYPE && FLAGS_GET_Z(geom->flags))
+	{
+		stringbuffer_append_len(sb, " Z", 2);
+		if (FLAGS_GET_M(geom->flags))
+			stringbuffer_append_len(sb, "M", 1);
+		stringbuffer_append_len(sb, " ", 1);
+		return;
+	}
+
 	/* Extended WKT: POINTM(0 0 0) */
 #if 0
 	if ( (variant & WKT_EXTENDED) && ! (variant & WKT_IS_CHILD) && FLAGS_GET_M(geom->flags) && (!FLAGS_GET_Z(geom->flags)) )
diff --git a/regress/core/in_gml_expected b/regress/core/in_gml_expected
index 1bd48ba70..5b5257ec2 100644
--- a/regress/core/in_gml_expected
+++ b/regress/core/in_gml_expected
@@ -166,24 +166,24 @@ polyhedralsurface_22|POLYHEDRALSURFACE(((1 2,4 5,7 8,1 2)),((10 11,12 13,14 15,1
 polyhedralsurface_23|POLYHEDRALSURFACE(((1 2,3 4,5 6,1 2)),((7 8,10 11,13 14,7 8)))
 polyhedralsurface_24|POLYHEDRALSURFACE(((1 2 3,4 5 6,7 8 9,1 2 3)))
 ERROR:  invalid GML representation
-tin_1|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
-tin_2|SRID=4326;TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
+tin_1|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
+tin_2|SRID=4326;TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
 ERROR:  invalid GML representation
 ERROR:  invalid GML representation
 ERROR:  invalid GML representation
 ERROR:  invalid GML representation
 ERROR:  invalid GML representation
-tin_8|TIN EMPTY
-tin_9|TIN EMPTY
-tin_10|TIN EMPTY
-tin_11|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)))
-tin_12|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)))
-tin_13|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)),((19 20 21,22 23 24,25 26 27,19 20 21)))
+tin_8|TIN Z EMPTY
+tin_9|TIN Z EMPTY
+tin_10|TIN Z EMPTY
+tin_11|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)))
+tin_12|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)))
+tin_13|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)),((10 11 12,13 14 15,16 17 18,10 11 12)),((19 20 21,22 23 24,25 26 27,19 20 21)))
 tin_14|TIN(((1 2,4 5,7 8,1 2)),((10 11,12 13,14 15,10 11)))
 tin_15|TIN(((1 2,3 4,5 6,1 2)),((7 8,10 11,13 14,7 8)))
-tin_16|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
-tin_17|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
-tin_18|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
+tin_16|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
+tin_17|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
+tin_18|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
 collection_1|GEOMETRYCOLLECTION(POINT(1 2))
 collection_2|GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,5 6))
 collection_3|GEOMETRYCOLLECTION(MULTIPOINT(1 2,3 4))
@@ -384,9 +384,9 @@ gml_48|SRID=4326;MULTIPOLYGON(((1 2 3,4 5 6,7 8 9,1 2 3)))
 gml_49|TIN(((1 2,3 4,5 6,1 2)))
 gml_50|SRID=27582;TIN(((1 2,3 4,5 6,1 2)))
 gml_51|SRID=4326;TIN(((1 2,3 4,5 6,1 2)))
-gml_52|TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
-gml_53|SRID=27582;TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
-gml_54|SRID=4326;TIN(((1 2 3,4 5 6,7 8 9,1 2 3)))
+gml_52|TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
+gml_53|SRID=27582;TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
+gml_54|SRID=4326;TIN Z (((1 2 3,4 5 6,7 8 9,1 2 3)))
 gml_55|GEOMETRYCOLLECTION(POINT(1 2))
 gml_56|GEOMETRYCOLLECTION(POINT(1 2 3))
 gml_57|SRID=27582;GEOMETRYCOLLECTION(POINT(1 2))
diff --git a/regress/core/triangulatedsurface.sql b/regress/core/triangulatedsurface.sql
index cf0892e49..fe6fab17c 100644
--- a/regress/core/triangulatedsurface.sql
+++ b/regress/core/triangulatedsurface.sql
@@ -38,3 +38,7 @@ SELECT 'geometryN_01', ST_AsEWKT(ST_GeometryN('TIN EMPTY'::geometry, 1));
 SELECT 'geometryN_02', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 1));
 SELECT 'geometryN_03', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 0));
 SELECT 'geometryN_04', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 2));
+
+-- ST_AsEWKT dimensional qualifiers
+SELECT '#2583.1', ST_AsEWKT(ST_GeomFromEWKT('TIN Z(((0 0 1,1 0 2,0 1 3,0 0 1)))'));
+SELECT '#2583.2', ST_AsEWKT(ST_GeomFromEWKT('TIN ZM(((0 0 1 2,1 0 2 3,0 1 3 4,0 0 1 2)))'));
diff --git a/regress/core/triangulatedsurface_expected b/regress/core/triangulatedsurface_expected
index ab5d737f8..5c8722d2e 100644
--- a/regress/core/triangulatedsurface_expected
+++ b/regress/core/triangulatedsurface_expected
@@ -21,3 +21,5 @@ geometryN_01|
 geometryN_02|TIN(((0 0,0 0,0 1,0 0)))
 geometryN_03|
 geometryN_04|
+#2583.1|TIN Z (((0 0 1,1 0 2,0 1 3,0 0 1)))
+#2583.2|TIN ZM (((0 0 1 2,1 0 2 3,0 1 3 4,0 0 1 2)))

-----------------------------------------------------------------------

Summary of changes:
 NEWS                                      |  2 ++
 liblwgeom/cunit/cu_algorithm.c            |  8 ++++----
 liblwgeom/cunit/cu_gserialized1.c         |  2 +-
 liblwgeom/cunit/cu_sfcgal.c               |  2 +-
 liblwgeom/cunit/cu_surface.c              | 30 +++++++++++++++++++++++++++---
 liblwgeom/lwout_wkt.c                     | 11 ++++++++++-
 regress/core/in_gml_expected              | 28 ++++++++++++++--------------
 regress/core/triangulatedsurface.sql      |  4 ++++
 regress/core/triangulatedsurface_expected |  2 ++
 9 files changed, 65 insertions(+), 24 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list