diff --git a/include/mapnik/util/geometry_to_wkt.hpp b/include/mapnik/util/geometry_to_wkt.hpp index 2c1c1829d..9b92a8868 100644 --- a/include/mapnik/util/geometry_to_wkt.hpp +++ b/include/mapnik/util/geometry_to_wkt.hpp @@ -32,6 +32,8 @@ namespace mapnik { namespace util { bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom); +bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom); + }} diff --git a/src/wkt/geometry_to_wkt.cpp b/src/wkt/geometry_to_wkt.cpp index 64d652434..3460dfec4 100644 --- a/src/wkt/geometry_to_wkt.cpp +++ b/src/wkt/geometry_to_wkt.cpp @@ -36,13 +36,12 @@ bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom) return boost::spirit::karma::generate(sink, generator, geom); } -/* -inline bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom) +bool to_wkt(std::string & wkt, mapnik::geometry::geometry const& geom) { using sink_type = std::back_insert_iterator; static const mapnik::wkt::wkt_generator_grammar> generator; sink_type sink(wkt); return boost::spirit::karma::generate(sink, generator, geom); } -*/ + }} diff --git a/test/unit/serialization/wkb_test.cpp b/test/unit/serialization/wkb_test.cpp index 7e25bf2a2..97c292486 100644 --- a/test/unit/serialization/wkb_test.cpp +++ b/test/unit/serialization/wkb_test.cpp @@ -100,7 +100,7 @@ TEST_CASE("Well-known-geometries") REQUIRE(mapnik::util::parse_hex(columns[2], twkb)); mapnik::geometry::geometry geom_0 = mapnik::geometry_utils::from_wkb(wkb.data(), wkb.size(), mapnik::wkbAuto); mapnik::geometry::geometry geom_1 = mapnik::geometry_utils::from_twkb(twkb.data(), twkb.size()); - // compare WKTs + // compare WKTs as doubles std::string wkt0, wkt1; REQUIRE(mapnik::util::to_wkt(wkt0, geom_0)); REQUIRE(mapnik::util::to_wkt(wkt1, geom_1)); @@ -112,6 +112,25 @@ TEST_CASE("Well-known-geometries") REQUIRE(spatially_equal(geom_0, geom_1)); #endif } + + // compare WKTS as ints + // note: mapnik::util::to_wkt used in mapnik-vt + std::string wkt2, wkt3; + mapnik::geometry::line_string geom_2; + geom_2.emplace_back(0,0); + geom_2.emplace_back(1,1); + geom_2.emplace_back(2,2); + mapnik::geometry::line_string geom_3; + geom_3.emplace_back(0,0); + geom_3.emplace_back(1,1); + geom_3.emplace_back(2,2); + REQUIRE(mapnik::util::to_wkt(wkt0, geom_2)); + REQUIRE(mapnik::util::to_wkt(wkt1, geom_3)); + if (!mapnik::geometry::is_empty(geom_2) && !mapnik::geometry::is_empty(geom_3)) + { + REQUIRE(wkt2 == wkt3); + // compare spatially (NOTE: GeometryCollection comparison also enforces strict order) + } } } }