- Use maintained
gyp
version - Add check if layer extent (size!) is !=0 to avoid devisions by zero + default initialise
scale_
to 1.0 - Fix bunch of compiler warnings e.g
warning: explicitly defaulted copy constructor is implicitly deleted [-Wdefaulted-function-deleted]
- Fix name resultion error (
../src/vector_tile_geometry_encoder_pbf.ipp:70:16: error: call to 'encode_geometry_pbf' is ambiguousreturn encode_geometry_pbf(geom, feature_, x_, y_);
) - Fix issue with command lengths causing extra executions of a loop in tileinfo
- Set up layer resolution as layer extent (4096 by default) per width or height. Previously, if the layer had a datasource of type Vector the resolution would be set as 256 per layer width or height which caused some incorrect interactions with some Mapnik plugins that use this value to modify geometries. From now on, these operations will be done depending on the layer extent and not the default 256.
This change will only affect those that are using the Postgis plugin with simplification enabled (
simplify_distance : true
) or the Pgraster plugin using overviews (use_overviews : true
) or raster prescaling (prescale_rasters: true
). None of the options above are the default ones for those plugins.
- Fix bug where on linestring and point data the clipping box passed to boost geometry was malformed.
- Changed the underlying storage of the tile buffer to be a unique ptr controlled string so that it could be passed off if necessary outside the tile class.
- Fixed packaging to include all relevant commits from 2.1.0
- Fixed handling of value type conversion/storage (#280)
- Minimized geometry conversions to clean up code duplication (#282)
- Release for new mapnik series compatability (3.1.x or possibly 4.0.0).
- Solved problem surrounded odd reprojection issues when dealing with low zoom level tiles and projections covering small geographic areas.
- Bug fix for possible massive allocations in invalid vector tiles
- Fixed mercator bounding box code so that it does not require tile size, removed spherical mercator class
- Added the ability to use SSE code to improve the performance of simplification prior to vector tile creation.
- Added back ability to build against external mapnik (see docs for instructions)
- Added support for variables @rafatower: mapbox#248
- Fixed a bug associated with image height and width when reading from an image resulting in a size of zero causing exceptions.
- Updated to use mapnik 3.0.14, previous version of mapnik will not work properly with this newest version.
- Corrected issues with resolution associated with mapnik queries that was allowing the buffer size of the vector tile to affect the resolution.
- Removed some duplicate code
- Removed fuzzer from library
- Updated protozero to 1.5.1
- Changed build system to build against preset version of mapnik and dependencies in mason
- Changed to use wagyu rather then the angus clipper.
- Fixed bug associated with reprojections.
- Upgraded to protozero 1.4.2
- Added ability to dynamically get include paths by requiring module in node.js
- Updated clipper
- Upgrade to clang-3.8
- Works with latest variant (stricter type matching)
- Big overhaul to the interface around the vector tile decoder
- Slight performance increase in decoder
- Fixed a bug around throwing on incorrect winding order incorrectly when the exterior ring in a polygon was dropped by its extent but an interior ring was included.
- Fix performance regression when passing raster through vector tile
- Corrected for numerical precision issue when using decoder where it was incorrectly considering very small triangles as having zero area.
- Changed defaults for
merge_from_buffer
. Now the tile loading API does not auto-upgrade from v1->v2 or validate by default. Theupgrade
andvalidate
behavior are now options tomerge_from_buffer
andmerge_from_compressed_buffer
- Removed boost simplification and implemented custom douglas peucker for big speed boost.
- Updated the version of the clipper used.
- Several updates to the version of the clipper used.
- Removed the code and its requirements in
vector_tile_geometry_intersects.hpp
as it is no longer used.
- 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.
- 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.
- Fixed a bug in
bench/vtile-encode.cpp
- Fixed an issue with mapnik core no longer having
to_utf8
in the same directory invector_tile_layer.ipp
- Added more errors and checks to
vector_tile_is_valid.hpp
- Updated to protozero v1.3.0
Extensive redesign in mapnik-vector-tile to properly support 2.0 of the Mapbox Vector Tile specification. A large number of changes have occured but a summary of these changes can be described as:
- Removed
backend_pbf
- Changed
processor
interface - Removed requirement on libprotobuf
Tile
class when using the library. - Created new
tile
andmerc_tile
class - Added different processing logic for v1 and v2 decoding
- Solved several small bugs around decoding and encoding
- Added many more exceptions around the processing of invalid tiles.
- Added
load_tile
andcomposite
headers - Organized tests directory and added many more tests
- Removed the concept of
is_solid
- Removed the concept of
path_multiplier
- Fixed bugs in
empty
concept. tile_size
is now directly related to the layerextent
- Encoding no longer allows repeated points in lines and polygons
- Corrected issues with winding order being reversed in some situations when decoding polygons
- Changed the default configuration values for
processor
- Fixed compile against latest Mapnik master (variant upgrade)
- Fixed premultiplication bug in raster encoding (#170)
- Had error in publish, republishing.
- Added the ability for the processor to continue processing invalid rings rather than throwing them out. This is exposed via the option
process_all_rings
. (default isfalse
meaning that all interior rings will be skipped if an invalid exterior ring is encountered) - Exposed the ability for different fill types to be used (default is
NonZero
meaning that winding order of input polygons is expected to be reversed for interior rings vs exterior rings) - Added the ability for multipolygons to be unioned or not, exposed as option
multipoly_polyon_union
(default istrue
meaning that overlapping polygons in a multipolygon will be unioned) - Added new test suite for geometries to increase code coverage
- Updated the geometry decoder so that it now supports a variety of geometry formats with the ability to return mapnik geometries in value types other then doubles.
- Removed repeated points of linestrings prior to them being encoded.
- Reversed the winding order of the geometries that comes out of the angus clipper so they are not reversed again prior to encoding
- Fixed an issue with nonZero fill not being applied on multipolygons
- Removed unrequired unioning clipping operations as union of different paths occurs during the intersection operation.
- Changed processor so that it now can optionally turn on and off strict enforcing of simple geometries from the clipper
- Updated angus clipper library used in Makefile to 6.4.0 (https://github.com/mapnik/clipper/tree/r496-mapnik)
- Changed the way painted is determined. Painted could not be marked as true but a vector tile would still be empty.
- Improvements to zlib compression API
- Fixed multipoint encoding (#144)
- Optimized decoding by filtering geometry parts not within bbox (#146)
- Optimized decoding by calling
vector.reserve
beforevector.emplace_back
(#119)
- Added
is_solid_extent
implementation based on protozero decoder
- Upgraded to protozero v1.0.0
- Fixed attribute handling bug in tile_datasource_pbf
- Remove geometries from clipping that never intersect with the bounding box of the tile (#135)
- Fix indexing error in tile_datasource_pbf (#132)
- Started to skip coordinates that are out of range (#121)
- Fix clipping box used when reprojecting data on the fly (#128)
- Fixed decoding of degenerate polygons - we need to gracefully support these as they are commonly in the wild based on that AGG clipper used in v0.7.1 and earlier (#123)
- Started to skip coordinates that cannot be reprojected (#117)
- Minor optimization in attribute encoding by using
emplace
instead ofinsert
- Now depends on
pbf_writer.hpp
for zigzag implementation (no change in behavior) - Minor code cleanup to avoid unnecessary compiler warnings
- Optimized coordinate transform that skips proj4 failures (#116)
- Added
tile_datasource_pbf
- It should be used in places where you need to plug in amapnik::datasource
to read from a binary encoded .pbf buffer. (@danpat #114) - Updated bundled clipper to https://github.com/mapnik/clipper/commit/bfad32ec4b41783497d076c2ec44c7cbf4ebe56b
- Clipper is now patched to avoid abort on out of range coordinates (#111)
- Fixed handling of geometry collections (#106)
- Added mapnik vector tile strategy for transform
- Updated test cases
- Now using
boost::geometry
to clip lines andClipperLib
to clip polygons - Now splitting geometry collections into multiple features
- Updated to new Mapnik 3.x geometry storage
- Added support for simplifying geometries using
boost::geometry::simplify
- Added
area_threshold
option to throw out small polygons
- Minor build fixes
- First release series to exclusively focus on upcoming Mapnik 3.x release.
- The 0.6.x series will no longer support Mapnik 3.x going forward and will instead only maintain Mapnik 2.x support
- Minor fixes to compile against latest Mapnik 3.x (works with ec2d644f6b698f)
tile_datasource
now has optional 6th arg to trigger exploding multipart geometries when decoding
- Adapted to vector tile v1.0.1 spec
- Fixed compile with g++ / clashing namespace with protobuf
- Fix build against latest Mapnik 3.x
- Optimize raster rendering by clipping rasters to unbuffered tile extent when overzooming
- Fixed bug in line intersection test
- Fixed setting of
painted
property when a raster is successfully added - Added support for testing line intersections in is_solid check
- Updated to work with latest Mapnik 3.x
- Improved test coverage
- Build fixes to work against latest Mapnik 3.x
- Minor build fixes
- Experimental support for encoding images in vector tile features.
- Fixed potential hang if trying to render a feature without geometries
- Additional optimizations and fixes to geometry encoding (#38 - avoid dropping vertex that forms horizontal or vertical right angle)
- Added initial support for Mapnik 3.x
- Refactored geometry encoder with fixes to drop duplicated/no-op verticies and/or close commands
npm install
no longer runsprotoc
- the responsibility for this is now up tonode-mapnik
- Optimized is_solid check
- Add back protoc running to avoid unintended node-mapnik breakages with older versions.
- Avoided 'Unknown command type (is_solid_extent): 0'
npm install
no longer runsprotoc
- the responsibility for this is now up tonode-mapnik
- Improved tile encoding: empty layers are no longer added
- All move_to commands and the last vertex in lines is no longer thrown out even with high
tolerance
- Rolled back the change from v0.3.4 - multipart geometries are now again not decoded correctly, but this
needs to stay this way for performance reasons at the cost of correct marker/labeling placement on each
geometry part - long term solutions tracked at mapnik/mapnik#2151. Re-enabled to v0.3.4 behavior by setting
-DEXPLODE_PARTS
inCXXFLAGS
.
- Fixed tile_datasource geometry decoding such that it polygons are closed (for hit_test results)
- Fixed tile_datasource geometry decoding such that it respects multipart geometries (#19)
- Added support in tileinfo demo program for reading zlib compressed tiles
- Removed dependence on clipper.hp unless
-DCONV_CLIPPER
is defined inCXXFLAGS
- Upgraded bundled cache.hpp test framework to
1.0 build 8
(kapouer)
- Fixed
mapnik::vector::tile_datasource
to respect the feature id if known
- Added support for reporting known attribute names for a given vector tile layer via
mapnik::vector::tile_datasource
descriptors
.
- API change: mapnik::vector::processor now requires a mapnik::request object as the third argument. The reason for this is to make it more viable for calling programs to avoid needing to mutate the map before passing to the processor. Now the
width
,height
,buffer_size
, andextent
will be taken from the mapnik::request object inside processor.apply(). For now thesrs
andlayers
will still be taken off the map.
- Fixed incorrect copy of protobuf writing backend when passed to the processor
- Marked tile_datasource implemented to avoid duplicate symbol errors if used from multiple compilation units
- Fixed casting between doubles and ints (solves test failures on 32 bit linux)
- Fixed accuracy of bbox filtering of features
- Removed tile_datasource validation that requested attributes exist in feature since current vector tiles do not guarantee that
tile_layer::keys
is populated with all possible attributes and rather only include those encounted by features processed.
- Now filtering features based on mapnik::query bbox and filtering attributes based on mapnik::query names. (#6)
- API change: Optimized spherical mercator math and reworked interface.
mapnik::vector::spherical_mercator
now is not templated on max zoom level and works with any zoom.mapnik::vector::spherical_mercator::xyz
now expects references to doubles instead of amapnik::box2d
.
- Removed stale and unused code
- Packaging fix
- Compile fix to use consistent headers
- packaging fix
- test / readme improvements
- Initial release