mirror of
https://github.com/felt/tippecanoe.git
synced 2026-10-05 18:05:42 +02:00
Track the minzoom and maxzoom for each layer separately
This commit is contained in:
@@ -1729,6 +1729,10 @@ int read_input(std::vector<source> &sources, char *fname, const char *layername,
|
|||||||
|
|
||||||
std::map<std::string, layermap_entry> merged_lm = merge_layermaps(layermaps);
|
std::map<std::string, layermap_entry> merged_lm = merge_layermaps(layermaps);
|
||||||
|
|
||||||
|
for (auto ai = merged_lm.begin(); ai != merged_lm.end(); ++ai) {
|
||||||
|
ai->second.minzoom = minzoom;
|
||||||
|
ai->second.maxzoom = maxzoom;
|
||||||
|
}
|
||||||
mbtiles_write_metadata(outdb, fname, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, midlat, midlon, forcetable, attribution, merged_lm);
|
mbtiles_write_metadata(outdb, fname, minzoom, maxzoom, minlat, minlon, maxlat, maxlon, midlat, midlon, forcetable, attribution, merged_lm);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
+2
-2
@@ -242,11 +242,11 @@ void mbtiles_write_metadata(sqlite3 *outdb, const char *fname, int minzoom, int
|
|||||||
aprintf(&buf, ", ");
|
aprintf(&buf, ", ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto fk = layermap.find(lnames[i]);
|
||||||
aprintf(&buf, "{ \"id\": \"");
|
aprintf(&buf, "{ \"id\": \"");
|
||||||
quote(&buf, lnames[i].c_str());
|
quote(&buf, lnames[i].c_str());
|
||||||
aprintf(&buf, "\", \"description\": \"\", \"minzoom\": %d, \"maxzoom\": %d, \"fields\": {", minzoom, maxzoom);
|
aprintf(&buf, "\", \"description\": \"\", \"minzoom\": %d, \"maxzoom\": %d, \"fields\": {", fk->second.minzoom, fk->second.maxzoom);
|
||||||
|
|
||||||
auto fk = layermap.find(lnames[i]);
|
|
||||||
std::set<type_and_string>::iterator j;
|
std::set<type_and_string>::iterator j;
|
||||||
bool first = true;
|
bool first = true;
|
||||||
for (j = fk->second.file_keys.begin(); j != fk->second.file_keys.end(); ++j) {
|
for (j = fk->second.file_keys.begin(); j != fk->second.file_keys.end(); ++j) {
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ struct type_and_string {
|
|||||||
struct layermap_entry {
|
struct layermap_entry {
|
||||||
size_t id;
|
size_t id;
|
||||||
std::set<type_and_string> file_keys;
|
std::set<type_and_string> file_keys;
|
||||||
|
int minzoom;
|
||||||
|
int maxzoom;
|
||||||
|
|
||||||
layermap_entry(size_t _id) {
|
layermap_entry(size_t _id) {
|
||||||
id = _id;
|
id = _id;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"center": "-122.299805,37.892187,12",
|
"center": "-122.299805,37.892187,12",
|
||||||
"description": "tests/join-population/joined-i.mbtiles",
|
"description": "tests/join-population/joined-i.mbtiles",
|
||||||
"format": "pbf",
|
"format": "pbf",
|
||||||
"json": "{\"vector_layers\": [ { \"id\": \"tabblock_06001420\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 12, \"fields\": {\"ALAND10\": \"Number\", \"AWATER10\": \"Number\", \"BLOCKCE10\": \"String\", \"COUNTYFP10\": \"String\", \"FUNCSTAT10\": \"String\", \"INTPTLAT10\": \"String\", \"INTPTLON10\": \"String\", \"MTFCC10\": \"String\", \"NAME10\": \"String\", \"STATEFP10\": \"String\", \"TRACTCE10\": \"String\", \"UACE10\": \"String\", \"UATYP10\": \"String\", \"UR10\": \"String\", \"population\": \"Number\"} } ] }",
|
"json": "{\"vector_layers\": [ { \"id\": \"tabblock_06001420\", \"description\": \"\", \"minzoom\": 3, \"maxzoom\": 12, \"fields\": {\"ALAND10\": \"Number\", \"AWATER10\": \"Number\", \"BLOCKCE10\": \"String\", \"COUNTYFP10\": \"String\", \"FUNCSTAT10\": \"String\", \"INTPTLAT10\": \"String\", \"INTPTLON10\": \"String\", \"MTFCC10\": \"String\", \"NAME10\": \"String\", \"STATEFP10\": \"String\", \"TRACTCE10\": \"String\", \"UACE10\": \"String\", \"UATYP10\": \"String\", \"UR10\": \"String\", \"population\": \"Number\"} } ] }",
|
||||||
"maxzoom": "12",
|
"maxzoom": "12",
|
||||||
"minzoom": "0",
|
"minzoom": "0",
|
||||||
"name": "tests/join-population/joined-i.mbtiles",
|
"name": "tests/join-population/joined-i.mbtiles",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"center": "-122.299805,37.892187,12",
|
"center": "-122.299805,37.892187,12",
|
||||||
"description": "tests/join-population/joined.mbtiles",
|
"description": "tests/join-population/joined.mbtiles",
|
||||||
"format": "pbf",
|
"format": "pbf",
|
||||||
"json": "{\"vector_layers\": [ { \"id\": \"tabblock_06001420\", \"description\": \"\", \"minzoom\": 0, \"maxzoom\": 12, \"fields\": {\"ALAND10\": \"Number\", \"AWATER10\": \"Number\", \"BLOCKCE10\": \"String\", \"COUNTYFP10\": \"String\", \"FUNCSTAT10\": \"String\", \"INTPTLAT10\": \"String\", \"INTPTLON10\": \"String\", \"MTFCC10\": \"String\", \"NAME10\": \"String\", \"STATEFP10\": \"String\", \"TRACTCE10\": \"String\", \"UACE10\": \"String\", \"UATYP10\": \"String\", \"UR10\": \"String\", \"population\": \"Number\"} } ] }",
|
"json": "{\"vector_layers\": [ { \"id\": \"tabblock_06001420\", \"description\": \"\", \"minzoom\": 3, \"maxzoom\": 12, \"fields\": {\"ALAND10\": \"Number\", \"AWATER10\": \"Number\", \"BLOCKCE10\": \"String\", \"COUNTYFP10\": \"String\", \"FUNCSTAT10\": \"String\", \"INTPTLAT10\": \"String\", \"INTPTLON10\": \"String\", \"MTFCC10\": \"String\", \"NAME10\": \"String\", \"STATEFP10\": \"String\", \"TRACTCE10\": \"String\", \"UACE10\": \"String\", \"UATYP10\": \"String\", \"UR10\": \"String\", \"population\": \"Number\"} } ] }",
|
||||||
"maxzoom": "12",
|
"maxzoom": "12",
|
||||||
"minzoom": "0",
|
"minzoom": "0",
|
||||||
"name": "tests/join-population/joined.mbtiles",
|
"name": "tests/join-population/joined.mbtiles",
|
||||||
|
|||||||
@@ -71,6 +71,9 @@ void handle(std::string message, int z, unsigned x, unsigned y, std::map<std::st
|
|||||||
|
|
||||||
if (layermap.count(layer.name) == 0) {
|
if (layermap.count(layer.name) == 0) {
|
||||||
layermap.insert(std::pair<std::string, layermap_entry>(layer.name, layermap_entry(layermap.size())));
|
layermap.insert(std::pair<std::string, layermap_entry>(layer.name, layermap_entry(layermap.size())));
|
||||||
|
auto file_keys = layermap.find(layer.name);
|
||||||
|
file_keys->second.minzoom = z;
|
||||||
|
file_keys->second.maxzoom = z;
|
||||||
}
|
}
|
||||||
auto file_keys = layermap.find(layer.name);
|
auto file_keys = layermap.find(layer.name);
|
||||||
|
|
||||||
@@ -184,6 +187,13 @@ void handle(std::string message, int z, unsigned x, unsigned y, std::map<std::st
|
|||||||
|
|
||||||
features_added++;
|
features_added++;
|
||||||
outlayer.features.push_back(outfeature);
|
outlayer.features.push_back(outfeature);
|
||||||
|
|
||||||
|
if (z < file_keys->second.minzoom) {
|
||||||
|
file_keys->second.minzoom = z;
|
||||||
|
}
|
||||||
|
if (z > file_keys->second.maxzoom) {
|
||||||
|
file_keys->second.maxzoom = z;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user