From: Björn Harrtell Date: Fri, 25 Aug 2017 21:27:31 +0000 (+0000) Subject: ST_AsMVTGeom only force CW for polys and do not normalize X-Git-Tag: 2.4.0beta1~23 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6c8ee4f975fbbd211a34f8482dc9ce9ffcbc7184;p=postgis ST_AsMVTGeom only force CW for polys and do not normalize Closes #3819 git-svn-id: http://svn.osgeo.org/postgis/trunk@15590 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/postgis/mvt.c b/postgis/mvt.c index 2711837d4..4b2a16a02 100644 --- a/postgis/mvt.c +++ b/postgis/mvt.c @@ -701,7 +701,10 @@ LWGEOM *mvt_geom(LWGEOM *lwgeom, GBOX *gbox, uint32_t extent, uint32_t buffer, 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 @@ LWGEOM *mvt_geom(LWGEOM *lwgeom, GBOX *gbox, uint32_t extent, uint32_t buffer, 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; } /** diff --git a/regress/mvt_expected b/regress/mvt_expected index 3e32efda9..b78f18d6e 100644 --- a/regress/mvt_expected +++ b/regress/mvt_expected @@ -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==