mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-04 17:35:42 +02:00
Don't closepath twice in multipolygons
This commit is contained in:
@@ -169,6 +169,7 @@ void parse_geometry(int t, json_object *j, unsigned *bbox, long long *fpos, FILE
|
|||||||
}
|
}
|
||||||
|
|
||||||
int within = geometry_within[t];
|
int within = geometry_within[t];
|
||||||
|
long long began = *fpos;
|
||||||
if (within >= 0) {
|
if (within >= 0) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < j->length; i++) {
|
for (i = 0; i < j->length; i++) {
|
||||||
@@ -212,8 +213,10 @@ void parse_geometry(int t, json_object *j, unsigned *bbox, long long *fpos, FILE
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mb_geometry[t] == VT_POLYGON) {
|
if (t == GEOM_POLYGON) {
|
||||||
serialize_int(out, VT_CLOSEPATH, fpos, fname, source);
|
if (*fpos != began) {
|
||||||
|
serialize_int(out, VT_CLOSEPATH, fpos, fname, source);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -522,6 +522,10 @@ drawvec reduce_tiny_poly(drawvec &geom, int z, int detail, bool *reduced, double
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (j + 1 < geom.size() && geom[j + 1].op == VT_CLOSEPATH) {
|
||||||
|
fprintf(stderr, "double closepath\n");
|
||||||
|
}
|
||||||
|
|
||||||
double area = 0;
|
double area = 0;
|
||||||
for (unsigned k = i; k < j; k++) {
|
for (unsigned k = i; k < j; k++) {
|
||||||
area += geom[k].x * geom[i + ((k - i + 1) % (j - i))].y;
|
area += geom[k].x * geom[i + ((k - i + 1) % (j - i))].y;
|
||||||
@@ -556,6 +560,7 @@ 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);
|
||||||
out.push_back(geom[i]);
|
out.push_back(geom[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user