mapbox / mapnik-vector-tile

Mapnik implemention of Mapbox Vector Tile specification
BSD 3-Clause "New" or "Revised" License
553 stars 117 forks source link

mapnik geometry types vs. ClipperLib types #226

Closed rouen-sk closed 7 years ago

rouen-sk commented 7 years ago

Hi, I am trying to build Mapnik vector tiles (1.2.0) as part of the C++/CLI wrapper to Mapnik (3.0.12). The build fails on multiple error within vector_tile_geometry_clipper.hpp - all of them basicaly pointing to "mismatch" between mapnik geometry types vs. Clipper types. For example:

Error C2664 'void mapnik::geometry::polygon<int64_t,mapnik::geometry::rings_container>::set_exterior_ring(mapnik::geometry::linear_ring<T> &&)': cannot convert argument 1 from 'std::vector<ClipperLib::IntPoint,std::allocator<_Ty>>' to 'mapnik::geometry::linear_ring<T> &&'

or

Error C2664 'double ClipperLib::Area(const ClipperLib::Path &)': cannot convert argument 1 from 'mapnik::geometry::linear_ring<T>' to 'const ClipperLib::Path &'

I have added clipper.hpp and clipper.cpp to mapnik vector tiles src directory from https://github.com/mapnik/clipper repository. What am I missing? Thanks!

flippmoke commented 7 years ago

Oh this is rather confusing, basically we have been using a script to convert the version of clipper from that repo into a proper version for Mapnik, look at how this is done here:

https://github.com/mapbox/mapnik-vector-tile/blob/master/Makefile#L16-L17

rouen-sk commented 7 years ago

Ah, thanks. I am using Visual Studio for build and this detail slipped my attention. I also needed to manually replace CLIPPER_INTPOINT_IMPL, CLIPPER_PATH_IMPL and CLIPPER_PATHS_IMPL with mapnik equivalents. Now the build is OK. Thanks.

flippmoke commented 7 years ago

We are about to roll out a complete replacement to clipper library, so pay attention to updates