[postgis-tickets] r15590 - ST_AsMVTGeom only force CW for polys and do not normalize

bjorn at wololo.org bjorn at wololo.org
Fri Aug 25 14:27:32 PDT 2017


Author: bjornharrtell
Date: 2017-08-25 14:27:31 -0700 (Fri, 25 Aug 2017)
New Revision: 15590

Modified:
   trunk/postgis/mvt.c
   trunk/regress/mvt_expected
Log:
ST_AsMVTGeom only force CW for polys and do not normalize
Closes #3819


Modified: trunk/postgis/mvt.c
===================================================================
--- trunk/postgis/mvt.c	2017-08-25 06:10:37 UTC (rev 15589)
+++ trunk/postgis/mvt.c	2017-08-25 21:27:31 UTC (rev 15590)
@@ -701,7 +701,10 @@
 		return NULL;
 
 	lwgeom_out = lwgeom_make_valid(lwgeom_out);
-	lwgeom_force_clockwise(lwgeom_out);
+	if (lwgeom_out->type == POLYGONTYPE ||
+		lwgeom_out->type == MULTIPOLYGONTYPE) {
+		lwgeom_force_clockwise(lwgeom_out);
+	}
 
 	if (lwgeom_out->type == COLLECTIONTYPE) {
 		LWCOLLECTION *lwcoll = lwgeom_as_lwcollection(lwgeom_out);
@@ -709,13 +712,16 @@
 			lwcollection_extract(lwcoll, max_type(lwcoll)));
 		lwgeom_out = lwgeom_homogenize(lwgeom_out);
 		lwgeom_out = lwgeom_make_valid(lwgeom_out);
-		lwgeom_force_clockwise(lwgeom_out);
+		if (lwgeom_out->type == POLYGONTYPE ||
+			lwgeom_out->type == MULTIPOLYGONTYPE) {
+			lwgeom_force_clockwise(lwgeom_out);
+		}
 	}
 
 	if (lwgeom_out == NULL || lwgeom_is_empty(lwgeom_out))
 		return NULL;
 
-	return lwgeom_normalize(lwgeom_out);
+	return lwgeom_out;
 }
 
 /**

Modified: trunk/regress/mvt_expected
===================================================================
--- trunk/regress/mvt_expected	2017-08-25 06:10:37 UTC (rev 15589)
+++ trunk/regress/mvt_expected	2017-08-25 21:27:31 UTC (rev 15590)
@@ -1,20 +1,20 @@
 PG1|POINT(1 4094)
 PG2|POINT(0 4095)
 PG3|POINT(2 4092)
-PG4|MULTIPOLYGON(((5 4096,10 4096,10 4091,5 4096)),((0 4096,0 4101,5 4096,0 4096)))
+PG4|MULTIPOLYGON(((5 4096,10 4096,10 4091,5 4096)),((5 4096,0 4096,0 4101,5 4096)))
 PG5|
-PG6|POLYGON((600 594,894 2704,2791 594,600 594))
+PG6|POLYGON((894 2704,2791 594,600 594,894 2704))
 PG7|POLYGON((1251 1904,1252 1905,1253 1906,1253 1905,1252 1904,1251 1904))
-PG8|MULTIPOLYGON(((5 4096,10 4096,10 4091,5 4096)),((0 4096,0 4101,5 4096,0 4096)))
-PG9|POLYGON((0 0,0 4096,4096 4096,4096 0,0 0))
+PG8|MULTIPOLYGON(((5 4096,10 4096,10 4091,5 4096)),((5 4096,0 4096,0 4101,5 4096)))
+PG9|POLYGON((0 4096,4096 4096,4096 0,0 0,0 4096))
 TG1|GiEKBHRlc3QSDBICAAAYASIECTLePxoCYzEiAigBKIAgeAI=
-TG2|GiMKBHRlc3QSDhICAAAYASIGETTcPwECGgJjMSICKAEogCB4Ag==
+TG2|GiMKBHRlc3QSDhICAAAYASIGETLePwIBGgJjMSICKAEogCB4Ag==
 TG3|GiYKBHRlc3QSERICAAAYAiIJCQCAQArQD88PGgJjMSICKAEogCB4Ag==
 TG4|GioKBHRlc3QSFRICAAAYAiINCQCAQBLoB+cH6AfnBxoCYzEiAigBKIAgeAI=
-TG5|GjgKBHRlc3QSIxICAAAYAiIbCQT8PxLoB+cH6AfnBwnRD9IPEugH5wfoB+cHGgJjMSICKAEogCB4
+TG5|GjgKBHRlc3QSIxICAAAYAiIbCQL+PxLoB+cH6AfnBwnND84PEugH5wfoB+cHGgJjMSICKAEogCB4
 Ag==
-TG6|GjIKBHRlc3QSHRICAAAYAyIVCRTYPxoyFBRFOwoPCQoUEh4JCR4PGgJjMSICKAEogCB4Ag==
-TG7|Gj0KBHRlc3QSKBICAAAYAyIgCRTEPyIAKCgKHh0xHQ8JABQSFAoTCg8JADsSMh4JEw8aAmMxIgIo
+TG6|GjIKBHRlc3QSHRICAAAYAyIVCUbsPxoURTsKCSgPCRQTEh4JCR4PGgJjMSICKAEogCB4Ag==
+TG7|Gj0KBHRlc3QSKBICAAAYAyIgCVCwPxInCTIeDwkxCSITCgAoKAoeHQ8JHQASEwoAEw8aAmMxIgIo
 ASiAIHgC
 TG8|GiEKBHRlc3QSDBICAAAYASIECTLePxoCYzEiAigBKIAgeAI=
 TG9|GiMKBHRlc3QSDhICAAAYASIGETLeP2VGGgJjMSICKAEogCB4Ag==



More information about the postgis-tickets mailing list