Add the option to use a different simplification level at maxzoom (#17)

* Add an option to specify a different simplification at maxzoom

* Add test
This commit is contained in:
Erica Fischer
2022-10-03 12:18:02 -07:00
committed by GitHub
parent 4ef430b913
commit a6abb0bc30
8 changed files with 4052 additions and 5 deletions
+7 -2
View File
@@ -2799,7 +2799,7 @@ void *run_thread(void *vargs) {
return NULL;
}
int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *meta_off, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, std::vector<std::map<std::string, layermap_entry>> &layermaps, const char *prefilter, const char *postfilter, std::map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies) {
int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpool, std::atomic<unsigned> *midx, std::atomic<unsigned> *midy, int &maxzoom, int minzoom, sqlite3 *outdb, const char *outdir, int buffer, const char *fname, const char *tmpdir, double gamma, int full_detail, int low_detail, int min_detail, long long *meta_off, long long *pool_off, unsigned *initial_x, unsigned *initial_y, double simplification, double maxzoom_simplification, std::vector<std::map<std::string, layermap_entry>> &layermaps, const char *prefilter, const char *postfilter, std::map<std::string, attribute_op> const *attribute_accum, struct json_object *filter, std::vector<strategy> &strategies) {
last_progress = 0;
// The existing layermaps are one table per input thread.
@@ -2970,7 +2970,12 @@ int traverse_zooms(int *geomfd, off_t *geom_size, char *metabase, char *stringpo
args[thread].fraction_out = zoom_fraction;
args[thread].tile_size_out = 0;
args[thread].child_shards = TEMP_FILES / threads;
args[thread].simplification = simplification;
if (i == maxzoom && maxzoom_simplification > 0) {
args[thread].simplification = maxzoom_simplification;
} else {
args[thread].simplification = simplification;
}
args[thread].geomfd = geomfd;
args[thread].geom_size = geom_size;