]> granicus.if.org Git - postgis/commitdiff
ST_AsMVTGeom only force CW for polys and do not normalize
authorBjörn Harrtell <bjorn@wololo.org>
Fri, 25 Aug 2017 21:27:31 +0000 (21:27 +0000)
committerBjörn Harrtell <bjorn@wololo.org>
Fri, 25 Aug 2017 21:27:31 +0000 (21:27 +0000)
Closes #3819

git-svn-id: http://svn.osgeo.org/postgis/trunk@15590 b70326c6-7e19-0410-871a-916f4a2858ee

postgis/mvt.c
regress/mvt_expected

index 2711837d497edefb96c7c195de25b492f91fa581..4b2a16a02816963a6643b31741213db9cf00397b 100644 (file)
@@ -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;
 }
 
 /**
index 3e32efda945a19c3078f29d8168a1f067321f555..b78f18d6e84ae231f8000d548b1d6135575e1919 100644 (file)
@@ -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==