mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-06 18:35:41 +02:00
Remember to remove the closepath after clipping away a polygon
This commit is contained in:
+9
-1
@@ -308,7 +308,9 @@ drawvec clip_poly(drawvec &geom, int z, int detail, int buffer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (j >= geom.size() || geom[j].op == VT_CLOSEPATH) {
|
if (j >= geom.size() || geom[j].op == VT_CLOSEPATH) {
|
||||||
|
if (out.size() > 0 && out[out.size() - 1].op != VT_CLOSEPATH) {
|
||||||
out.push_back(draw(VT_CLOSEPATH, 0, 0));
|
out.push_back(draw(VT_CLOSEPATH, 0, 0));
|
||||||
|
}
|
||||||
i = j;
|
i = j;
|
||||||
} else {
|
} else {
|
||||||
i = j - 1;
|
i = j - 1;
|
||||||
@@ -374,7 +376,13 @@ drawvec reduce_tiny_poly(drawvec &geom, int z, int detail, bool *reduced, double
|
|||||||
|
|
||||||
i = j;
|
i = j;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "how did we get here with %d?\n", geom[i].op);
|
fprintf(stderr, "how did we get here with %d in %d?\n", geom[i].op, (int) geom.size());
|
||||||
|
|
||||||
|
for (unsigned n = 0; n < geom.size(); n++) {
|
||||||
|
fprintf(stderr, "%d/%lld/%lld ", geom[n].op, geom[n].x, geom[n].y);
|
||||||
|
}
|
||||||
|
fprintf(stderr, "\n");
|
||||||
|
|
||||||
out.push_back(geom[i]);
|
out.push_back(geom[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -412,7 +412,6 @@ long long write_tile(char **geoms, char *metabase, unsigned *file_bbox, int z, u
|
|||||||
if (line_detail == detail) { /* only write out the next zoom once, even if we retry */
|
if (line_detail == detail) { /* only write out the next zoom once, even if we retry */
|
||||||
if (geom.size() > 0) {
|
if (geom.size() > 0) {
|
||||||
if (!within) {
|
if (!within) {
|
||||||
printf("writing %d/%u/%u\n", z, tx, ty);
|
|
||||||
serialize_int(geomfile, z, &geompos, fname, jp);
|
serialize_int(geomfile, z, &geompos, fname, jp);
|
||||||
serialize_uint(geomfile, tx, &geompos, fname, jp);
|
serialize_uint(geomfile, tx, &geompos, fname, jp);
|
||||||
serialize_uint(geomfile, ty, &geompos, fname, jp);
|
serialize_uint(geomfile, ty, &geompos, fname, jp);
|
||||||
@@ -554,7 +553,6 @@ long long write_tile(char **geoms, char *metabase, unsigned *file_bbox, int z, u
|
|||||||
evaluate(features, metabase, file_keys, layername, line_detail, compressed.size());
|
evaluate(features, metabase, file_keys, layername, line_detail, compressed.size());
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
printf("output %d/%u/%u\n", z, tx, ty);
|
|
||||||
mbtiles_write_tile(outdb, z, tx, ty, compressed.data(), compressed.size());
|
mbtiles_write_tile(outdb, z, tx, ty, compressed.data(), compressed.size());
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user