Skip to content

Commit

Permalink
add test - filtering by scale denominator on layer level
Browse files Browse the repository at this point in the history
  • Loading branch information
talaj committed May 25, 2017
1 parent 15d499e commit 26faa58
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 0 deletions.
21 changes: 21 additions & 0 deletions test/data/layer_scale_denom_style.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<Map srs="+init=epsg:3857">
<Layer name="1" srs="+init=epsg:3857">
<Datasource>
<Parameter name="type">csv</Parameter>
<Parameter name="inline">
x, y
1, 2
</Parameter>
</Datasource>
</Layer>
<Layer name="2" srs="+init=epsg:3857" maximum-scale-denominator="200000">
<Datasource>
<Parameter name="type">csv</Parameter>
<Parameter name="inline">
x, y
3, 4
1, 4
</Parameter>
</Datasource>
</Layer>
</Map>
42 changes: 42 additions & 0 deletions test/unit/scale_denom_filter.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
#include "catch.hpp"

// mapnik
#include <mapnik/load_map.hpp>

// mapnik-vector-tile
#include "vector_tile_processor.hpp"

// libprotobuf
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wsign-conversion"
#include "vector_tile.pb.h"
#pragma GCC diagnostic pop


TEST_CASE("feature processor - filtering by scale denominator on layer level")
{
mapnik::Map map(256, 256);
mapnik::load_map(map, "test/data/layer_scale_denom_style.xml");
mapnik::vector_tile_impl::processor ren(map);
const double scale_denom = 200000;

{
mapnik::vector_tile_impl::tile out_tile = ren.create_tile(
2048, 2047, 12, 4096, 0, scale_denom);
vector_tile::Tile tile;
REQUIRE(tile.ParseFromString(out_tile.get_buffer()));
REQUIRE(2 == tile.layers_size());
CHECK(1 == tile.layers(0).features_size());
CHECK(2 == tile.layers(1).features_size());
}
{
// One layer is filtered out after change of scale denominator.
mapnik::vector_tile_impl::tile out_tile = ren.create_tile(
2048, 2047, 12, 4096, 0, scale_denom * 2.0);
vector_tile::Tile tile;
REQUIRE(tile.ParseFromString(out_tile.get_buffer()));
REQUIRE(1 == tile.layers_size());
CHECK(1 == tile.layers(0).features_size());
}
}

0 comments on commit 26faa58

Please sign in to comment.