From d4efb4d7282bc04ebdacb432471bc480e4c62fe9 Mon Sep 17 00:00:00 2001 From: Erica Fischer Date: Mon, 24 Jun 2024 16:58:40 -0700 Subject: [PATCH] Add tiny polygon reduction / dust to overzoom --- Makefile | 5 + clip.cpp | 292 ++++++++++++++++++++++++- geometry.cpp | 123 ----------- geometry.hpp | 8 +- overzoom.cpp | 14 +- tests/pbf/countries-0-0-0.pbf | Bin 0 -> 70168 bytes tests/pbf/countries-0-0-0.pbf.out.json | 249 +++++++++++++++++++++ tile-join.cpp | 2 +- tile.cpp | 2 +- 9 files changed, 562 insertions(+), 133 deletions(-) create mode 100644 tests/pbf/countries-0-0-0.pbf create mode 100644 tests/pbf/countries-0-0-0.pbf.out.json diff --git a/Makefile b/Makefile index 8b7bcb08..9084ec4d 100644 --- a/Makefile +++ b/Makefile @@ -355,6 +355,11 @@ overzoom-test: tippecanoe-overzoom ./tippecanoe-decode tests/pbf/12-2145-1391-filter2.pbf 12 2145 1391 > tests/pbf/12-2145-1391-filter2.pbf.json.check cmp tests/pbf/12-2145-1391-filter2.pbf.json.check tests/pbf/12-2145-1391-filter2.pbf.json rm tests/pbf/12-2145-1391-filter2.pbf.json.check tests/pbf/12-2145-1391-filter2.pbf + # Tiny polygon reduction + ./tippecanoe-overzoom --line-simplification=5 --tiny-polygon-size=50 -o tests/pbf/countries-0-0-0.pbf.out tests/pbf/countries-0-0-0.pbf 0/0/0 0/0/0 + ./tippecanoe-decode tests/pbf/countries-0-0-0.pbf.out 0 0 0 > tests/pbf/countries-0-0-0.pbf.out.json.check + cmp tests/pbf/countries-0-0-0.pbf.out.json.check tests/pbf/countries-0-0-0.pbf.out.json + rm tests/pbf/countries-0-0-0.pbf.out tests/pbf/countries-0-0-0.pbf.out.json.check join-test: tippecanoe tippecanoe-decode tile-join ./tippecanoe -q -f -z12 -o tests/join-population/tabblock_06001420.mbtiles -YALAND10:'Land area' -L'{"file": "tests/join-population/tabblock_06001420.json", "description": "population"}' diff --git a/clip.cpp b/clip.cpp index ee6e2bc2..77445496 100644 --- a/clip.cpp +++ b/clip.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -755,10 +756,274 @@ static std::vector> clip_poly1(std::vector= 1) { + u = 1; + } else if (u <= 0) { + u = 0; + } + + double x = segA_x + u * p2x; + double y = segA_y + u * p2y; + + double dx = x - point_x; + double dy = y - point_y; + + double out = std::round(sqrt(dx * dx + dy * dy) * 16.0) / 16.0; + return out; +} + +// https://github.com/Project-OSRM/osrm-backend/blob/733d1384a40f/Algorithms/DouglasePeucker.cpp +void douglas_peucker(drawvec &geom, int start, int n, double e, size_t kept, size_t retain, bool prevent_simplify_shared_nodes) { + std::stack recursion_stack; + + if (!geom[start + 0].necessary || !geom[start + n - 1].necessary) { + fprintf(stderr, "endpoints not marked necessary\n"); + exit(EXIT_IMPOSSIBLE); + } + + int prev = 0; + for (int here = 1; here < n; here++) { + if (geom[start + here].necessary) { + recursion_stack.push(prev); + recursion_stack.push(here); + prev = here; + + if (prevent_simplify_shared_nodes) { + if (retain > 0) { + retain--; + } + } + } + } + // These segments are put on the stack from start to end, + // independent of winding, so note that anything that uses + // "retain" to force it to keep at least N points will + // keep a different set of points when wound one way than + // when wound the other way. + + while (!recursion_stack.empty()) { + // pop next element + int second = recursion_stack.top(); + recursion_stack.pop(); + int first = recursion_stack.top(); + recursion_stack.pop(); + + double max_distance = -1; + int farthest_element_index; + + // find index idx of element with max_distance + int i; + if (geom[start + first] < geom[start + second]) { + farthest_element_index = first; + for (i = first + 1; i < second; i++) { + double temp_dist = distance_from_line(geom[start + i].x, geom[start + i].y, geom[start + first].x, geom[start + first].y, geom[start + second].x, geom[start + second].y); + + double distance = std::fabs(temp_dist); + + if ((distance > e || kept < retain) && (distance > max_distance || (distance == max_distance && geom[start + i] < geom[start + farthest_element_index]))) { + farthest_element_index = i; + max_distance = distance; + } + } + } else { + farthest_element_index = second; + for (i = second - 1; i > first; i--) { + double temp_dist = distance_from_line(geom[start + i].x, geom[start + i].y, geom[start + second].x, geom[start + second].y, geom[start + first].x, geom[start + first].y); + + double distance = std::fabs(temp_dist); + + if ((distance > e || kept < retain) && (distance > max_distance || (distance == max_distance && geom[start + i] < geom[start + farthest_element_index]))) { + farthest_element_index = i; + max_distance = distance; + } + } + } + + if (max_distance >= 0) { + // mark idx as necessary + geom[start + farthest_element_index].necessary = 1; + kept++; + + if (geom[start + first] < geom[start + second]) { + if (1 < farthest_element_index - first) { + recursion_stack.push(first); + recursion_stack.push(farthest_element_index); + } + if (1 < second - farthest_element_index) { + recursion_stack.push(farthest_element_index); + recursion_stack.push(second); + } + } else { + if (1 < second - farthest_element_index) { + recursion_stack.push(farthest_element_index); + recursion_stack.push(second); + } + if (1 < farthest_element_index - first) { + recursion_stack.push(first); + recursion_stack.push(farthest_element_index); + } + } + } + } +} + +// cut-down version of simplify_lines(), not dealing with shared node preservation +static drawvec simplify_lines_basic(drawvec &geom, int z, int detail, double simplification, size_t retain) { + int res = 1 << (32 - detail - z); + + for (size_t i = 0; i < geom.size(); i++) { + if (geom[i].op == VT_MOVETO) { + geom[i].necessary = 1; + } else if (geom[i].op == VT_LINETO) { + geom[i].necessary = 0; + // if this is actually the endpoint, not an intermediate point, + // it will be marked as necessary below + } else { + geom[i].necessary = 1; + } + } + + for (size_t i = 0; i < geom.size(); i++) { + if (geom[i].op == VT_MOVETO) { + size_t j; + for (j = i + 1; j < geom.size(); j++) { + if (geom[j].op != VT_LINETO) { + break; + } + } + + geom[i].necessary = 1; + geom[j - 1].necessary = 1; + + if (j - i > 1) { + douglas_peucker(geom, i, j - i, res * simplification, 2, retain, false); + } + i = j - 1; + } + } + + size_t out = 0; + for (size_t i = 0; i < geom.size(); i++) { + if (geom[i].necessary) { + geom[out++] = geom[i]; + } + } + geom.resize(out); + return geom; +} + +drawvec reduce_tiny_poly(drawvec const &geom, int z, int detail, bool *still_needs_simplification, bool *reduced_away, double *accum_area, double tiny_polygon_size) { + drawvec out; + const double pixel = (1LL << (32 - detail - z)) * (double) tiny_polygon_size; + + bool included_last_outer = false; + *still_needs_simplification = false; + *reduced_away = false; + + for (size_t i = 0; i < geom.size(); i++) { + if (geom[i].op == VT_MOVETO) { + size_t j; + for (j = i + 1; j < geom.size(); j++) { + if (geom[j].op != VT_LINETO) { + break; + } + } + + double area = get_area(geom, i, j); + + // XXX There is an ambiguity here: If the area of a ring is 0 and it is followed by holes, + // we don't know whether the area-0 ring was a hole too or whether it was the outer ring + // that these subsequent holes are somehow being subtracted from. I hope that if a polygon + // was simplified down to nothing, its holes also became nothing. + + if (area != 0) { + // These are pixel coordinates, so area > 0 for the outer ring. + // If the outer ring of a polygon was reduced to a pixel, its + // inner rings must just have their area de-accumulated rather + // than being drawn since we don't really know where they are. + + // i.e., this outer ring is small enough that we are including it + // in a tiny polygon rather than letting it represent itself, + // OR it is an inner ring and we haven't output an outer ring for it to be + // cut out of, so we are just subtracting its area from the tiny polygon + // rather than trying to deal with it geometrically + if ((area > 0 && area <= pixel * pixel) || (area < 0 && !included_last_outer)) { + *accum_area += area; + *reduced_away = true; + + if (area > 0 && *accum_area > pixel * pixel) { + // XXX use centroid; + + out.emplace_back(VT_MOVETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2); + out.emplace_back(VT_LINETO, geom[i].x - pixel / 2 + pixel, geom[i].y - pixel / 2); + out.emplace_back(VT_LINETO, geom[i].x - pixel / 2 + pixel, geom[i].y - pixel / 2 + pixel); + out.emplace_back(VT_LINETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2 + pixel); + out.emplace_back(VT_LINETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2); + + *accum_area -= pixel * pixel; + } + + if (area > 0) { + included_last_outer = false; + } + } + // i.e., this ring is large enough that it gets to represent itself + // or it is a tiny hole out of a real polygon, which we are still treating + // as a real geometry because otherwise we can accumulate enough tiny holes + // that we will drop the next several outer rings getting back up to 0. + else { + for (size_t k = i; k < j && k < geom.size(); k++) { + out.push_back(geom[k]); + } + + // which means that the overall polygon has a real geometry, + // which means that it gets to be simplified. + *still_needs_simplification = true; + + if (area > 0) { + included_last_outer = true; + } + } + } else { + // area is 0: doesn't count as either having been reduced away, + // since it was probably just degenerate from having been clipped, + // or as needing simplification, since it produces no output. + } + + i = j - 1; + } else { + fprintf(stderr, "how did we get here with %d in %d?\n", geom[i].op, (int) geom.size()); + + for (size_t 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]); + } + } + + return out; +} + std::string overzoom(std::vector const &tiles, int nz, int nx, int ny, int detail, int buffer, std::set const &keep, bool do_compress, std::vector> *next_overzoomed_tiles, - bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, std::vector const &unidecode_data) { + bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, std::vector const &unidecode_data, double simplification, + double tiny_polygon_size) { std::vector decoded; for (auto const &t : tiles) { @@ -784,7 +1049,7 @@ std::string overzoom(std::vector const &tiles, int nz, int nx, int n decoded.push_back(out); } - return overzoom(decoded, nz, nx, ny, detail, buffer, keep, do_compress, next_overzoomed_tiles, demultiply, filter, preserve_input_order, attribute_accum, unidecode_data); + return overzoom(decoded, nz, nx, ny, detail, buffer, keep, do_compress, next_overzoomed_tiles, demultiply, filter, preserve_input_order, attribute_accum, unidecode_data, simplification, tiny_polygon_size); } struct tile_feature { @@ -885,7 +1150,8 @@ static struct preservecmp { std::string overzoom(std::vector const &tiles, int nz, int nx, int ny, int detail, int buffer, std::set const &keep, bool do_compress, std::vector> *next_overzoomed_tiles, - bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, std::vector const &unidecode_data) { + bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, std::vector const &unidecode_data, double simplification, + double tiny_polygon_size) { mvt_tile outtile; std::shared_ptr tile_stringpool = std::make_shared(); @@ -916,6 +1182,7 @@ std::string overzoom(std::vector const &tiles, int nz, int nx, int } std::vector pending_tile_features; + double accum_area = 0; static const std::string retain_points_multiplier_first = "tippecanoe:retain_points_multiplier_first"; static const std::string retain_points_multiplier_sequence = "tippecanoe:retain_points_multiplier_sequence"; @@ -1014,6 +1281,23 @@ std::string overzoom(std::vector const &tiles, int nz, int nx, int } } + bool still_need_simplification_after_reduction = false; + if (t == VT_POLYGON && tiny_polygon_size > 0) { + bool simplified_away_by_reduction = false; + + geom = reduce_tiny_poly(geom, nz, detail, &still_need_simplification_after_reduction, &simplified_away_by_reduction, &accum_area, tiny_polygon_size); + } else { + still_need_simplification_after_reduction = true; + } + + if (simplification > 0 && still_need_simplification_after_reduction) { + if (t == VT_POLYGON) { + geom = simplify_lines_basic(geom, nz, detail, simplification, 4); + } else if (t == VT_LINE) { + geom = simplify_lines_basic(geom, nz, detail, simplification, 0); + } + } + // Scale to output tile extent to_tile_scale(geom, nz, det); @@ -1077,7 +1361,7 @@ std::string overzoom(std::vector const &tiles, int nz, int nx, int std::string child = overzoom(sts, nz + 1, nx * 2 + x, ny * 2 + y, detail, buffer, keep, false, NULL, - demultiply, filter, preserve_input_order, attribute_accum, unidecode_data); + demultiply, filter, preserve_input_order, attribute_accum, unidecode_data, simplification, tiny_polygon_size); if (child.size() > 0) { next_overzoomed_tiles->emplace_back(nx * 2 + x, ny * 2 + y); } diff --git a/geometry.cpp b/geometry.cpp index a7fb9996..9b9ceacf 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -168,100 +168,6 @@ void check_polygon(drawvec &geom) { } } -drawvec reduce_tiny_poly(drawvec const &geom, int z, int detail, bool *still_needs_simplification, bool *reduced_away, double *accum_area) { - drawvec out; - const double pixel = (1LL << (32 - detail - z)) * (double) tiny_polygon_size; - - bool included_last_outer = false; - *still_needs_simplification = false; - *reduced_away = false; - - for (size_t i = 0; i < geom.size(); i++) { - if (geom[i].op == VT_MOVETO) { - size_t j; - for (j = i + 1; j < geom.size(); j++) { - if (geom[j].op != VT_LINETO) { - break; - } - } - - double area = get_area(geom, i, j); - - // XXX There is an ambiguity here: If the area of a ring is 0 and it is followed by holes, - // we don't know whether the area-0 ring was a hole too or whether it was the outer ring - // that these subsequent holes are somehow being subtracted from. I hope that if a polygon - // was simplified down to nothing, its holes also became nothing. - - if (area != 0) { - // These are pixel coordinates, so area > 0 for the outer ring. - // If the outer ring of a polygon was reduced to a pixel, its - // inner rings must just have their area de-accumulated rather - // than being drawn since we don't really know where they are. - - // i.e., this outer ring is small enough that we are including it - // in a tiny polygon rather than letting it represent itself, - // OR it is an inner ring and we haven't output an outer ring for it to be - // cut out of, so we are just subtracting its area from the tiny polygon - // rather than trying to deal with it geometrically - if ((area > 0 && area <= pixel * pixel) || (area < 0 && !included_last_outer)) { - *accum_area += area; - *reduced_away = true; - - if (area > 0 && *accum_area > pixel * pixel) { - // XXX use centroid; - - out.emplace_back(VT_MOVETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2); - out.emplace_back(VT_LINETO, geom[i].x - pixel / 2 + pixel, geom[i].y - pixel / 2); - out.emplace_back(VT_LINETO, geom[i].x - pixel / 2 + pixel, geom[i].y - pixel / 2 + pixel); - out.emplace_back(VT_LINETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2 + pixel); - out.emplace_back(VT_LINETO, geom[i].x - pixel / 2, geom[i].y - pixel / 2); - - *accum_area -= pixel * pixel; - } - - if (area > 0) { - included_last_outer = false; - } - } - // i.e., this ring is large enough that it gets to represent itself - // or it is a tiny hole out of a real polygon, which we are still treating - // as a real geometry because otherwise we can accumulate enough tiny holes - // that we will drop the next several outer rings getting back up to 0. - else { - for (size_t k = i; k < j && k < geom.size(); k++) { - out.push_back(geom[k]); - } - - // which means that the overall polygon has a real geometry, - // which means that it gets to be simplified. - *still_needs_simplification = true; - - if (area > 0) { - included_last_outer = true; - } - } - } else { - // area is 0: doesn't count as either having been reduced away, - // since it was probably just degenerate from having been clipped, - // or as needing simplification, since it produces no output. - } - - i = j - 1; - } else { - fprintf(stderr, "how did we get here with %d in %d?\n", geom[i].op, (int) geom.size()); - - for (size_t 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]); - } - } - - return out; -} - int quick_check(const long long *bbox, int z, long long buffer) { long long min = 0; long long area = 1LL << (32 - z); @@ -300,35 +206,6 @@ bool point_within_tile(long long x, long long y, int z) { return x >= 0 && y >= 0 && x < area && y < area; } -double distance_from_line(long long point_x, long long point_y, long long segA_x, long long segA_y, long long segB_x, long long segB_y) { - long long p2x = segB_x - segA_x; - long long p2y = segB_y - segA_y; - - // These calculations must be made in integers instead of floating point - // to make them consistent between x86 and arm floating point implementations. - // - // Coordinates may be up to 34 bits, so their product is up to 68 bits, - // making their sum up to 69 bits. Downshift before multiplying to keep them in range. - double something = ((p2x / 4) * (p2x / 8) + (p2y / 4) * (p2y / 8)) * 32.0; - // likewise - double u = (0 == something) ? 0 : ((point_x - segA_x) / 4 * (p2x / 8) + (point_y - segA_y) / 4 * (p2y / 8)) * 32.0 / (something); - - if (u >= 1) { - u = 1; - } else if (u <= 0) { - u = 0; - } - - double x = segA_x + u * p2x; - double y = segA_y + u * p2y; - - double dx = x - point_x; - double dy = y - point_y; - - double out = std::round(sqrt(dx * dx + dy * dy) * 16.0) / 16.0; - return out; -} - // https://github.com/Project-OSRM/osrm-backend/blob/733d1384a40f/Algorithms/DouglasePeucker.cpp static void douglas_peucker(drawvec &geom, int start, int n, double e, size_t kept, size_t retain) { std::stack recursion_stack; diff --git a/geometry.hpp b/geometry.hpp index 4be046a8..fe4ca441 100644 --- a/geometry.hpp +++ b/geometry.hpp @@ -74,7 +74,7 @@ drawvec remove_noop(drawvec geom, int type, int shift); drawvec clip_point(drawvec &geom, int z, long long buffer); drawvec clean_or_clip_poly(drawvec &geom, int z, int buffer, bool clip, bool try_scaling); drawvec close_poly(drawvec &geom); -drawvec reduce_tiny_poly(const drawvec &geom, int z, int detail, bool *still_needs_simplification, bool *reduced_away, double *accum_area); +drawvec reduce_tiny_poly(const drawvec &geom, int z, int detail, bool *still_needs_simplification, bool *reduced_away, double *accum_area, double tiny_polygon_size); int clip(long long *x0, long long *y0, long long *x1, long long *y1, long long xmin, long long ymin, long long xmax, long long ymax); drawvec clip_lines(drawvec &geom, int z, long long buffer); drawvec stairstep(drawvec &geom, int z, int detail); @@ -119,14 +119,16 @@ std::string overzoom(std::vector const &tiles, int nz, int nx, int std::vector> *next_overzoomed_tiles, bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, - std::vector const &unidecode_data); + std::vector const &unidecode_data, double simplification, + double tiny_polygon_size); std::string overzoom(std::vector const &tiles, int nz, int nx, int ny, int detail, int buffer, std::set const &keep, bool do_compress, std::vector> *next_overzoomed_tiles, bool demultiply, json_object *filter, bool preserve_input_order, std::unordered_map const &attribute_accum, - std::vector const &unidecode_data); + std::vector const &unidecode_data, double simplification, + double tiny_polygon_size); draw center_of_mass_mp(const drawvec &dv); diff --git a/overzoom.cpp b/overzoom.cpp index a3e29b51..5b421c2e 100644 --- a/overzoom.cpp +++ b/overzoom.cpp @@ -35,6 +35,8 @@ int main(int argc, char **argv) { int i; const char *outtile = NULL; const char *outfile = NULL; + double simplification = 0; + double tiny_polygon_size = 0; std::vector sources; @@ -48,6 +50,8 @@ int main(int argc, char **argv) { {"preserve-input-order", no_argument, 0, 'o' & 0x1F}, {"accumulate-attribute", required_argument, 0, 'E'}, {"unidecode-data", required_argument, 0, 'u' & 0x1F}, + {"line-simplification", required_argument, 0, 'S'}, + {"tiny-polygon-size", required_argument, 0, 's' & 0x1F}, {"source-tile", required_argument, 0, 't'}, {0, 0, 0, 0}, @@ -107,6 +111,14 @@ int main(int argc, char **argv) { outtile = optarg; break; + case 's' & 0x1F: + tiny_polygon_size = atof(optarg); + break; + + case 'S': + simplification = atof(optarg); + break; + default: fprintf(stderr, "Unrecognized flag -%c\n", i); usage(argv); @@ -196,7 +208,7 @@ int main(int argc, char **argv) { its.push_back(std::move(t)); } - std::string out = overzoom(its, nz, nx, ny, detail, buffer, keep, true, NULL, demultiply, json_filter, preserve_input_order, attribute_accum, unidecode_data); + std::string out = overzoom(its, nz, nx, ny, detail, buffer, keep, true, NULL, demultiply, json_filter, preserve_input_order, attribute_accum, unidecode_data, simplification, tiny_polygon_size); FILE *f = fopen(outfile, "wb"); if (f == NULL) { diff --git a/tests/pbf/countries-0-0-0.pbf b/tests/pbf/countries-0-0-0.pbf new file mode 100644 index 0000000000000000000000000000000000000000..adcae54b76c111f137f9a4e24d6b3739d8528dba GIT binary patch literal 70168 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, false, &next_overzoomed_tiles, false, NULL, false, std::unordered_map(), unidecode_data); + std::string ret = overzoom(tv, tile.z, tile.x, tile.y, -1, buffer, std::set(), false, &next_overzoomed_tiles, false, NULL, false, std::unordered_map(), unidecode_data, 0, 0); return ret; } diff --git a/tile.cpp b/tile.cpp index df51be82..c41374c4 100644 --- a/tile.cpp +++ b/tile.cpp @@ -1923,7 +1923,7 @@ long long write_tile(decompressor *geoms, std::atomic *geompos_in, ch bool prevent_tiny = prevent[P_TINY_POLYGON_REDUCTION] || (prevent[P_TINY_POLYGON_REDUCTION_AT_MAXZOOM] && z == maxzoom); if (!prevent_tiny && !additional[A_GRID_LOW_ZOOMS]) { - sf.geometry = reduce_tiny_poly(sf.geometry, z, line_detail, &still_need_simplification_after_reduction, &simplified_away_by_reduction, &accum_area); + sf.geometry = reduce_tiny_poly(sf.geometry, z, line_detail, &still_need_simplification_after_reduction, &simplified_away_by_reduction, &accum_area, tiny_polygon_size); if (simplified_away_by_reduction) { strategy->tiny_polygons++; }