From 466d65441b45a7985efeb87431bd2f0f70c04a56 Mon Sep 17 00:00:00 2001 From: Dane Springmeyer Date: Mon, 1 Jul 2019 13:50:53 -0700 Subject: [PATCH 1/2] Testcase (currently failing) for #97 --- test/fixtures/z15-road-segments.mvt | Bin 0 -> 6445 bytes test/vtcomposite-linestrings.test.js | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 test/fixtures/z15-road-segments.mvt diff --git a/test/fixtures/z15-road-segments.mvt b/test/fixtures/z15-road-segments.mvt new file mode 100644 index 0000000000000000000000000000000000000000..4fa220340cb6fc421c35eaf3ee4c3465d11f4924 GIT binary patch literal 6445 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 literal 0 HcmV?d00001 diff --git a/test/vtcomposite-linestrings.test.js b/test/vtcomposite-linestrings.test.js index f4af004..7bf6842 100644 --- a/test/vtcomposite-linestrings.test.js +++ b/test/vtcomposite-linestrings.test.js @@ -70,3 +70,23 @@ test('[composite] overzooming success (linestring), with buffer - different zoom assert.end(); }); }); + + +test('[composite] overzooming success (linestring), with buffer - z14 -> z15', function(assert) { + const buffer1 = fs.readFileSync(__dirname + '/fixtures/z15-road-segments.mvt'); + + const tiles = [ + {buffer: buffer1, z:15, x: 29570, y:20109} + ]; + + const zxy = {z:16, x:59140, y:40218}; + + composite(tiles, zxy, {buffer_size:4080}, (err, vtBuffer) => { + assert.notOk(err); + const outputInfo = vtinfo(vtBuffer); + // Currently failing since it drops a very large feature when buffer_size = 4080 + // Although it does not drop this feature when buffer_size = 4079 or 4081 + assert.equal(outputInfo.layers.roads._features.length,5); + assert.end(); + }); +}); \ No newline at end of file From df0f462fb1f3bb44106882f6da7b141ab0434545 Mon Sep 17 00:00:00 2001 From: Artem Pavlenko Date: Tue, 2 Jul 2019 10:07:12 +0100 Subject: [PATCH 2/2] remove re-setting `valid` to `false` inside the loop to avoid skipping valid geometries (ref #97) --- src/feature_builder.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/feature_builder.hpp b/src/feature_builder.hpp index 1fa7bd0..8c8f7d4 100644 --- a/src/feature_builder.hpp +++ b/src/feature_builder.hpp @@ -196,7 +196,6 @@ struct overzoomed_feature_builder bool valid = false; for (auto const& l : result) { - valid = false; if (l.size() > 1) { feature_builder.add_linestring(static_cast(l.size()));