Skip to content

Commit

Permalink
Fix output of features added to the bin after its closure
Browse files Browse the repository at this point in the history
  • Loading branch information
e-n-f committed Sep 30, 2024
1 parent 2a699f5 commit 399c7f0
Showing 1 changed file with 20 additions and 18 deletions.
38 changes: 20 additions & 18 deletions clip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1611,24 +1611,6 @@ mvt_tile assign_to_bins(mvt_tile const &features, std::vector<mvt_layer> const &
} else /* EXIT */ {
auto const &found = active.find({e.layer, e.feature});
if (found != active.end()) {
if (outfeatures[found->outfeature].size() > 1) {
feature_out(outfeatures[found->outfeature], outlayer,
keep, exclude, exclude_prefix, attribute_accum,
tile_stringpool, accumulate_numeric);
mvt_feature &nfeature = outlayer.features.back();
mvt_value val;
val.type = mvt_uint;
val.numeric_value.uint_value = outfeatures[found->outfeature].size() - 1;

std::string attrname;
if (accumulate_numeric.size() == 0) {
attrname = "tippecanoe:count";
} else {
attrname = accumulate_numeric + ":count";
}
outlayer.tag(nfeature, attrname, val);
}

active.erase(found);
} else {
fprintf(stderr, "event mismatch: can't happen\n");
Expand All @@ -1637,6 +1619,26 @@ mvt_tile assign_to_bins(mvt_tile const &features, std::vector<mvt_layer> const &
}
}

for (size_t i = 0; i < outfeatures.size(); i++) {
if (outfeatures[i].size() > 1) {
feature_out(outfeatures[i], outlayer,
keep, exclude, exclude_prefix, attribute_accum,
tile_stringpool, accumulate_numeric);
mvt_feature &nfeature = outlayer.features.back();
mvt_value val;
val.type = mvt_uint;
val.numeric_value.uint_value = outfeatures[i].size() - 1;

std::string attrname;
if (accumulate_numeric.size() == 0) {
attrname = "tippecanoe:count";
} else {
attrname = accumulate_numeric + ":count";
}
outlayer.tag(nfeature, attrname, val);
}
}

mvt_tile ret;
ret.layers.push_back(outlayer);
return ret;
Expand Down

0 comments on commit 399c7f0

Please sign in to comment.