[Git][debian-gis-team/tippecanoe][upstream] 4 commits: Upgrade catch from v1.5.7 to v2.13.10 (#223)

Anthony Fok (@foka) gitlab at salsa.debian.org
Fri Apr 12 04:41:00 BST 2024



Anthony Fok pushed to branch upstream at Debian GIS Project / tippecanoe


Commits:
1519b507 by Dane Springmeyer at 2024-03-25T10:39:11-07:00
Upgrade catch from v1.5.7 to v2.13.10 (#223)

upgrade catch from v1.5.7 to v2.13.10
- - - - -
266ef3c2 by Dane Springmeyer at 2024-03-25T11:00:18-07:00
Add tippecanoe-overzoom to .gitignore (#224)

add tippecanoe-overzoom to .gitignore
- - - - -
bb4f2206 by Erica Fischer at 2024-04-03T07:12:26-07:00
Reduce tiling memory (#227)

* Trying to reduce memory in tiling

* Let the simplification workers go out of scope earlier

* Bail out quickly once the maximum feature count is reached

* Update changelog and version
- - - - -
d9af26dc by Anthony Fok at 2024-04-11T19:36:33-06:00
New upstream version 2.53.0
- - - - -


9 changed files:

- .gitignore
- CHANGELOG.md
- catch/catch.hpp
- tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json
- tests/loop/out/-z0_-O200_--drop-densest-as-needed.json
- tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json
- tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json
- tile.cpp
- version.hpp


Changes:

=====================================
.gitignore
=====================================
@@ -35,6 +35,7 @@ tile-join
 tippecanoe-decode
 tippecanoe-enumerate
 tippecanoe-json-tool
+tippecanoe-overzoom
 unit
 
 # Tests


=====================================
CHANGELOG.md
=====================================
@@ -1,3 +1,7 @@
+# 2.53.0
+
+* Stop trying to add features to the tile after the feature limit is reached
+
 # 2.52.0
 
 * Fix accidental loss (at all zooms) of features that specify an explicit minzoom


=====================================
catch/catch.hpp
=====================================
The diff for this file was not included because it is too large.

=====================================
tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json
=====================================
@@ -9,7 +9,7 @@
 "maxzoom": "0",
 "minzoom": "0",
 "name": "tests/loop/out/-z0_-O200_--cluster-densest-as-needed.json.check.mbtiles",
-"strategies": "[{\"coalesced_as_needed\":999,\"feature_count_desired\":1000}]",
+"strategies": "[{\"coalesced_as_needed\":999,\"feature_count_desired\":201}]",
 "type": "overlay",
 "version": "2"
 }, "features": [


=====================================
tests/loop/out/-z0_-O200_--drop-densest-as-needed.json
=====================================
@@ -9,7 +9,7 @@
 "maxzoom": "0",
 "minzoom": "0",
 "name": "tests/loop/out/-z0_-O200_--drop-densest-as-needed.json.check.mbtiles",
-"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":1000}]",
+"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":201}]",
 "type": "overlay",
 "version": "2"
 }, "features": [


=====================================
tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json
=====================================
@@ -9,7 +9,7 @@
 "maxzoom": "0",
 "minzoom": "0",
 "name": "tests/loop/out/-z0_-O200_--drop-fraction-as-needed.json.check.mbtiles",
-"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":1000}]",
+"strategies": "[{\"dropped_as_needed\":999,\"feature_count_desired\":201}]",
 "type": "overlay",
 "version": "2"
 }, "features": [


=====================================
tests/muni/out/-Z11_-z13_-O100_--cluster-densest-as-needed.json
=====================================
The diff for this file was not included because it is too large.

=====================================
tile.cpp
=====================================
@@ -1875,7 +1875,7 @@ long long write_tile(decompressor *geoms, std::atomic<long long> *geompos_in, ch
 			unsigned long long sfindex = sf.index;
 
 			if (sf.geometry.size() > 0) {
-				if (lead_features_count > max_tile_size) {
+				if (lead_features_count > max_tile_size || (lead_features_count + other_multiplier_cluster_features_count > max_tile_features && !prevent[P_FEATURE_LIMIT])) {
 					// Even being maximally conservative, each feature is still going to be
 					// at least one byte in the output tile, so this can't possibly work.
 					skipped++;
@@ -2110,33 +2110,35 @@ long long write_tile(decompressor *geoms, std::atomic<long long> *geompos_in, ch
 				tasks = 1;
 			}
 
-			pthread_t pthreads[tasks];
-			std::vector<simplification_worker_arg> args;
-			args.resize(tasks);
-			for (int i = 0; i < tasks; i++) {
-				args[i].task = i;
-				args[i].tasks = tasks;
-				args[i].features = &features;
-				args[i].shared_nodes = &shared_nodes;
-				args[i].shared_nodes_map = shared_nodes_map;
-				args[i].nodepos = nodepos;
-
-				if (tasks > 1) {
-					if (thread_create(&pthreads[i], NULL, simplification_worker, &args[i]) != 0) {
-						perror("pthread_create");
-						exit(EXIT_PTHREAD);
+			{
+				pthread_t pthreads[tasks];
+				std::vector<simplification_worker_arg> args;
+				args.resize(tasks);
+				for (int i = 0; i < tasks; i++) {
+					args[i].task = i;
+					args[i].tasks = tasks;
+					args[i].features = &features;
+					args[i].shared_nodes = &shared_nodes;
+					args[i].shared_nodes_map = shared_nodes_map;
+					args[i].nodepos = nodepos;
+
+					if (tasks > 1) {
+						if (thread_create(&pthreads[i], NULL, simplification_worker, &args[i]) != 0) {
+							perror("pthread_create");
+							exit(EXIT_PTHREAD);
+						}
+					} else {
+						simplification_worker(&args[i]);
 					}
-				} else {
-					simplification_worker(&args[i]);
 				}
-			}
 
-			if (tasks > 1) {
-				for (int i = 0; i < tasks; i++) {
-					void *retval;
+				if (tasks > 1) {
+					for (int i = 0; i < tasks; i++) {
+						void *retval;
 
-					if (pthread_join(pthreads[i], &retval) != 0) {
-						perror("pthread_join");
+						if (pthread_join(pthreads[i], &retval) != 0) {
+							perror("pthread_join");
+						}
 					}
 				}
 			}
@@ -2261,6 +2263,7 @@ long long write_tile(decompressor *geoms, std::atomic<long long> *geompos_in, ch
 				}
 
 				if (layer_features[x].geometry.size() == 0) {
+					layer_features[x] = serial_feature();
 					continue;
 				}
 
@@ -2301,6 +2304,7 @@ long long write_tile(decompressor *geoms, std::atomic<long long> *geompos_in, ch
 				}
 
 				layer.features.push_back(std::move(feature));
+				layer_features[x] = serial_feature();
 			}
 
 			if (layer.features.size() > 0) {


=====================================
version.hpp
=====================================
@@ -1,6 +1,6 @@
 #ifndef VERSION_HPP
 #define VERSION_HPP
 
-#define VERSION "v2.52.0"
+#define VERSION "v2.53.0"
 
 #endif



View it on GitLab: https://salsa.debian.org/debian-gis-team/tippecanoe/-/compare/7b34685f9208a509e267028beded89766a8526ba...d9af26dc197843aa82a497a3919f0571cf464f66

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/tippecanoe/-/compare/7b34685f9208a509e267028beded89766a8526ba...d9af26dc197843aa82a497a3919f0571cf464f66
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20240412/17dada1a/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list