mirror of
https://github.com/mapbox/tippecanoe.git
synced 2025-01-22 04:18:01 +00:00
Don't coalesce features that have different IDs.
Remove the 700-point limit on coalesced features, since polygon merging is no longer a performance problem.
This commit is contained in:
parent
82a2b5dfdc
commit
2e32004589
@ -1,3 +1,10 @@
|
||||
## 1.27.4
|
||||
|
||||
* Support CSV point input
|
||||
* Don't coalesce features that have different IDs but are otherwise identical
|
||||
* Remove the 700-point limit on coalesced features, since polygon merging
|
||||
is no longer a performance problem
|
||||
|
||||
## 1.27.3
|
||||
|
||||
* Clean up duplicated code for reading tiles from a directory
|
||||
|
@ -240,8 +240,8 @@ tippecanoe -z5 -o filtered.mbtiles -j '{ "ne_10m_admin_0_countries": [ "all", [
|
||||
### Reordering features within each tile
|
||||
|
||||
* `-pi` or `--preserve-input-order`: Preserve the original input order of features as the drawing order instead of ordering geographically. (This is implemented as a restoration of the original order at the end, so that dot-dropping is still geographic, which means it also undoes `-ao`).
|
||||
* `-ao` or `--reorder`: Reorder features to put ones with the same properties in sequence, to try to get them to coalesce. You probably don't want to use this.
|
||||
* `-ac` or `--coalesce`: Coalesce adjacent line and polygon features that have the same properties. You probably don't want to use this.
|
||||
* `-ao` or `--reorder`: Reorder features to put ones with the same properties in sequence, to try to get them to coalesce. You probably want to use this if you use `--coalesce`.
|
||||
* `-ac` or `--coalesce`: Coalesce adjacent line and polygon features that have the same properties. This can be useful if you have lots of small polygons with identical attributes and you would like to merge them together.
|
||||
* `-ar` or `--reverse`: Try reversing the directions of lines to make them coalesce and compress better. You probably don't want to use this.
|
||||
|
||||
### Adding calculated attributes
|
||||
|
177
tests/coalesce-id/in.json
Normal file
177
tests/coalesce-id/in.json
Normal file
File diff suppressed because one or more lines are too long
348
tests/coalesce-id/out/-z1_--coalesce_--reorder.json
Normal file
348
tests/coalesce-id/out/-z1_--coalesce_--reorder.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
15
tile.cpp
15
tile.cpp
@ -116,6 +116,19 @@ int coalcmp(const void *v1, const void *v2) {
|
||||
return cmp;
|
||||
}
|
||||
|
||||
if (c1->has_id != c2->has_id) {
|
||||
return (int) c1->has_id - (int) c2->has_id;
|
||||
}
|
||||
|
||||
if (c1->has_id && c2->has_id) {
|
||||
if (c1->id < c2->id) {
|
||||
return -1;
|
||||
}
|
||||
if (c1->id > c2->id) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return metacmp(c1->m, c1->keys, c1->values, c1->stringpool, c2->m, c2->keys, c2->values, c2->stringpool);
|
||||
}
|
||||
|
||||
@ -1765,7 +1778,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
||||
}
|
||||
#endif
|
||||
|
||||
if (additional[A_COALESCE] && out.size() > 0 && out[y].geom.size() + layer_features[x].geom.size() < 700 && coalcmp(&layer_features[x], &out[y]) == 0 && layer_features[x].type != VT_POINT) {
|
||||
if (additional[A_COALESCE] && out.size() > 0 && coalcmp(&layer_features[x], &out[y]) == 0 && layer_features[x].type != VT_POINT) {
|
||||
for (size_t g = 0; g < layer_features[x].geom.size(); g++) {
|
||||
out[y].geom.push_back(layer_features[x].geom[g]);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#ifndef VERSION_HPP
|
||||
#define VERSION_HPP
|
||||
|
||||
#define VERSION "tippecanoe v1.27.3\n"
|
||||
#define VERSION "tippecanoe v1.27.4\n"
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user