This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository mapnik-vector-tile.
commit 10fe62556f7bedd591001b8cc03b3a01e8613b41 Author: Bas Couwenberg <[email protected]> Date: Fri Mar 11 13:29:24 2016 +0100 Imported Upstream version 1.0.4+dfsg --- CHANGELOG.md | 5 +++ Makefile | 2 +- bench/vtile-transform.cpp | 1 + package.json | 2 +- src/vector_tile_geometry_feature.hpp | 8 ++-- test/data/0.0.0.vector-b.mvt | Bin 2835 -> 2840 bytes test/data/simplified_geometry.geojson | 1 + test/data/simplified_geometry_pbf.geojson | 1 + test/test_utils.cpp | 1 + test/unit/encoding/geometry_to_feature_pbf.cpp | 50 +++++++++++++++++++++++++ test/vector_tile.cpp | 18 ++++++++- test/vector_tile_pbf.cpp | 15 +++++++- test/vector_tile_rasterize.cpp | 2 +- 13 files changed, 95 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40f0524..d767b5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 1.0.4 + +- Updated the version of the clipper again, fixing more problems with intersections. +- Fixed bug in `vector_tile_geometry_feature.hpp` that was causing a segfault. + ## 1.0.3 - Updated the version of clipper after a bug was found in clipper that would result in invalid polygons where interior rings were outside another exterior ring. diff --git a/Makefile b/Makefile index 459d54c..df4348f 100755 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ MAPNIK_PLUGINDIR := $(shell mapnik-config --input-plugins) BUILDTYPE ?= Release -CLIPPER_REVISION=b82601d67830a84179888360e3dea645c1125a26 +CLIPPER_REVISION=150f2c4f58a72c051bcad76c84f10362797bf5ab PROTOZERO_REVISION=v1.3.0 GYP_REVISION=3464008 diff --git a/bench/vtile-transform.cpp b/bench/vtile-transform.cpp index 5bc78ba..ae39f4e 100644 --- a/bench/vtile-transform.cpp +++ b/bench/vtile-transform.cpp @@ -1,3 +1,4 @@ +#include <mapnik/geometry_correct.hpp> #include <mapnik/projection.hpp> #include <mapnik/geometry_transform.hpp> #include <mapnik/util/file_io.hpp> diff --git a/package.json b/package.json index 3167d67..a8db03d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mapnik-vector-tile", - "version": "1.0.3", + "version": "1.0.4", "description": "Mapnik Vector Tile API", "main": "./package.json", "repository" : { diff --git a/src/vector_tile_geometry_feature.hpp b/src/vector_tile_geometry_feature.hpp index 250f394..fc10a88 100644 --- a/src/vector_tile_geometry_feature.hpp +++ b/src/vector_tile_geometry_feature.hpp @@ -63,11 +63,11 @@ struct geometry_to_feature_pbf_visitor feature_writer.add_packed_uint32(Feature_Encoding::TAGS, feature_tags.begin(), feature_tags.end()); builder_.make_not_empty(); } + else + { + feature_writer.rollback(); + } } - if (!success) - { - layer_writer.rollback(); - } } void operator() (mapnik::geometry::geometry_collection<std::int64_t> const& collection) diff --git a/test/data/0.0.0.vector-b.mvt b/test/data/0.0.0.vector-b.mvt index 295bf58..4ab38ac 100644 Binary files a/test/data/0.0.0.vector-b.mvt and b/test/data/0.0.0.vector-b.mvt differ diff --git a/test/data/simplified_geometry.geojson b/test/data/simplified_geometry.geojson new file mode 100644 index 0000000..8ce0bdb --- /dev/null +++ b/test/data/simplified_geometry.geojson @@ -0,0 +1 @@ +{"type":"Polygon","coordinates":[[[160.36171875,11.2997786224589],[160.3828125,11.3011576095711],[160.408125,11.3039155638972],[160.408125,11.2997786224589],[160.425,11.3094313929343],[160.41234375,11.3411453475587],[160.3996875,11.3301148056307],[160.40953125,11.3700984927314],[160.39265625,11.3618264654176],[160.396875,11.3797488877286],[160.4053125,11.3893989555911],[160.40953125,11.3866418267411],[160.419375,11.4004272036667],[160.41515625,11.4059411672242],[160.419375,11.41145502372 [...] \ No newline at end of file diff --git a/test/data/simplified_geometry_pbf.geojson b/test/data/simplified_geometry_pbf.geojson new file mode 100644 index 0000000..8ce0bdb --- /dev/null +++ b/test/data/simplified_geometry_pbf.geojson @@ -0,0 +1 @@ +{"type":"Polygon","coordinates":[[[160.36171875,11.2997786224589],[160.3828125,11.3011576095711],[160.408125,11.3039155638972],[160.408125,11.2997786224589],[160.425,11.3094313929343],[160.41234375,11.3411453475587],[160.3996875,11.3301148056307],[160.40953125,11.3700984927314],[160.39265625,11.3618264654176],[160.396875,11.3797488877286],[160.4053125,11.3893989555911],[160.40953125,11.3866418267411],[160.419375,11.4004272036667],[160.41515625,11.4059411672242],[160.419375,11.41145502372 [...] \ No newline at end of file diff --git a/test/test_utils.cpp b/test/test_utils.cpp index f56ae15..5a3fca8 100644 --- a/test/test_utils.cpp +++ b/test/test_utils.cpp @@ -18,6 +18,7 @@ #include <mapnik/image.hpp> #include <mapnik/image_reader.hpp> #include <mapnik/util/file_io.hpp> +#include <mapnik/geometry_correct.hpp> #include <mapnik/json/geometry_parser.hpp> #include <string> #include <memory> diff --git a/test/unit/encoding/geometry_to_feature_pbf.cpp b/test/unit/encoding/geometry_to_feature_pbf.cpp new file mode 100644 index 0000000..66741ee --- /dev/null +++ b/test/unit/encoding/geometry_to_feature_pbf.cpp @@ -0,0 +1,50 @@ +#include "catch.hpp" + +// mapnik vector tile +#include "vector_tile_geometry_feature.hpp" +#include "vector_tile_layer.hpp" + +// mapnik +#include <mapnik/geometry.hpp> +#include <mapnik/feature.hpp> +#include <mapnik/feature_factory.hpp> +#include <mapnik/util/variant.hpp> + +// protozero +#include <protozero/pbf_writer.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 + +// std +#include <limits> + +// +// Unit tests for encoding of geometries to features +// + +TEST_CASE("encode feature pbf of degenerate linestring") +{ + mapnik::geometry::geometry_empty empty; + std::string empty_buffer = ""; + mapnik::vector_tile_impl::layer_builder_pbf empty_layer("foo", 4096, empty_buffer); + mapnik::feature_ptr empty_feature(mapnik::feature_factory::create(std::make_shared<mapnik::context_type>(),1)); + mapnik::vector_tile_impl::geometry_to_feature_pbf_visitor empty_visitor(*empty_feature, empty_layer); + empty_visitor(empty); + + mapnik::geometry::line_string<std::int64_t> line; + line.add_coord(10,10); + + std::string layer_buffer = ""; + mapnik::vector_tile_impl::layer_builder_pbf layer("foo", 4096, layer_buffer); + mapnik::feature_ptr f(mapnik::feature_factory::create(std::make_shared<mapnik::context_type>(),1)); + mapnik::vector_tile_impl::geometry_to_feature_pbf_visitor visitor(*f, layer); + visitor(line); + + REQUIRE(layer_buffer == empty_buffer); + REQUIRE(layer.empty == true); +} diff --git a/test/vector_tile.cpp b/test/vector_tile.cpp index 1f3ee0d..7a8edd7 100644 --- a/test/vector_tile.cpp +++ b/test/vector_tile.cpp @@ -15,6 +15,7 @@ #include <mapnik/memory_datasource.hpp> #include <mapnik/projection.hpp> #include <mapnik/proj_transform.hpp> +#include <mapnik/util/file_io.hpp> #include <mapnik/util/fs.hpp> #include <mapnik/util/geometry_to_geojson.hpp> #include <mapnik/vertex_adapters.hpp> @@ -34,6 +35,9 @@ #include "vector_tile.pb.h" #pragma GCC diagnostic pop +// std +#include <fstream> + TEST_CASE("vector tile from simplified geojson") { unsigned tile_size = 256 * 1000; @@ -90,8 +94,18 @@ TEST_CASE("vector tile from simplified geojson") CHECK( n_err == 0 ); std::string geojson_string; CHECK( mapnik::util::to_geojson(geojson_string,projected_geom) ); - //std::clog << geojson_string << std::endl; - CHECK( geojson_string == "{\"type\":\"Polygon\",\"coordinates\":[[[160.36171875,11.2997786224589],[160.3828125,11.3011576095711],[160.408125,11.3039155638972],[160.408125,11.2997786224589],[160.425,11.3094313929343],[160.41234375,11.3411453475587],[160.3996875,11.3301148056307],[160.40953125,11.3700984927314],[160.39265625,11.3618264654176],[160.396875,11.3797488877286],[160.4053125,11.3893989555911],[160.40953125,11.3866418267411],[160.419375,11.4004272036667],[160.41515625,11.40594 [...] + std::string geojson_file = "./test/data/simplified_geometry.geojson"; + mapnik::util::file input(geojson_file); + if (input.open()) + { + std::string json_string(input.data().get(), input.size()); + CHECK (geojson_string == json_string); + } + if (!mapnik::util::exists(geojson_file) || (std::getenv("UPDATE") != nullptr)) + { + std::ofstream out(geojson_file); + out << geojson_string; + } } TEST_CASE("vector tile transform -- should not throw on coords outside merc range") diff --git a/test/vector_tile_pbf.cpp b/test/vector_tile_pbf.cpp index 6150bad..21fdb66 100644 --- a/test/vector_tile_pbf.cpp +++ b/test/vector_tile_pbf.cpp @@ -14,6 +14,7 @@ #include <mapnik/projection.hpp> #include <mapnik/proj_transform.hpp> #include <mapnik/geometry_is_empty.hpp> +#include <mapnik/util/file_io.hpp> #include <mapnik/util/geometry_to_geojson.hpp> #include <mapnik/geometry_reprojection.hpp> #include <mapnik/geometry_transform.hpp> @@ -414,8 +415,18 @@ TEST_CASE("pbf vector tile from simplified geojson") CHECK( n_err == 0 ); std::string geojson_string; CHECK( mapnik::util::to_geojson(geojson_string,projected_geom) ); - //std::clog << geojson_string << std::endl; - CHECK( geojson_string == "{\"type\":\"Polygon\",\"coordinates\":[[[160.36171875,11.2997786224589],[160.3828125,11.3011576095711],[160.408125,11.3039155638972],[160.408125,11.2997786224589],[160.425,11.3094313929343],[160.41234375,11.3411453475587],[160.3996875,11.3301148056307],[160.40953125,11.3700984927314],[160.39265625,11.3618264654176],[160.396875,11.3797488877286],[160.4053125,11.3893989555911],[160.40953125,11.3866418267411],[160.419375,11.4004272036667],[160.41515625,11 [...] + std::string geojson_file = "./test/data/simplified_geometry_pbf.geojson"; + mapnik::util::file input(geojson_file); + if (input.open()) + { + std::string json_string(input.data().get(), input.size()); + CHECK (geojson_string == json_string); + } + if (!mapnik::util::exists(geojson_file) || (std::getenv("UPDATE") != nullptr)) + { + std::ofstream out(geojson_file); + out << geojson_string; + } break; } } diff --git a/test/vector_tile_rasterize.cpp b/test/vector_tile_rasterize.cpp index 61dfcfb..4f43a34 100644 --- a/test/vector_tile_rasterize.cpp +++ b/test/vector_tile_rasterize.cpp @@ -122,7 +122,7 @@ TEST_CASE("vector tile rasterize -- should try to decode windfail tile") // now `tile` should contain all the data std::string buffer2; out_tile.serialize_to_string(buffer2); - CHECK(2835 == buffer2.size()); + CHECK(2840 == buffer2.size()); std::ofstream stream_out("./test/data/0.0.0.vector-b.mvt",std::ios_base::out|std::ios_base::binary); stream_out << buffer2; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapnik-vector-tile.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

