# GDAL MVT Writer simplification parameter

GDAL defines a MVT writer parameter to simplify lines and polygons on all zoomlevels except the maximum zoomlevel:

SIMPLIFICATION=float: Simplification factor for linear or polygonal geometries. The unit is the integer unit of tiles after quantification of geometry coordinates to tile coordinates. Applies to all zoom levels, unless SIMPLIFICATION_MAX_ZOOM is also defined.

I don´t really understand what number I should use or how to calculate the number. Is there a best practice? Can somebody clarify how to use this parameter?

The idea here is to pre-simplify complex areal or lineal geometries with a topology aware methodology before their vertices get translated into the lower resolution coordinate space of a tile. The goal is to avoid invalid geometries as much as possible.

Generally:

A best fit value for simplification is a function of geometric composition, complexity, vertex count, distribution and segment length - all unique to the geometries in question; to get a more general feel for the possible input values, I would suggest to establish an understanding of the effect of varying ε (epsilon) values in the Ramer–Douglas–Peucker algorithm.

Specifically:

If the SIMPLIFICATION flag is set to a value > 0, the OGR MVT feature generator¹ of the parent MVT writer class² applies the GEOS TopologyPreservingSimplifier algorithm³ on the intersection of a given (areal or lineal) geometry with the given tile bounds⁴, using a distance tolerance factor of

TILE_DIMENSION_AT_0 / 2^ZOOM / TILE_EXTENT * GIVEN_SIMPLIFICATION_VALUE


where

• TILE_DIMENSION_AT_0 defaults to 40075016.686 (derived from the default tiling scheme for Web Mercator⁵; given in meter)
• TILE_EXTENT defaults to 4096

• By an example, the height of a Web Mercator tile at zoom level 15 is about 1200 meters. That divided by the default MVT tile extent 4096 makes about 0.3 meters per tile integer unit. Using value 1 means that at Z 15 the tolerance in simplification is 0.3 meters. At other zoom levels the tolerance in meters is changing, but relative tolerance remains the same and the result of simplification looks visually the same at each zoom level. Without testing value 1 feels pretty small but make your own tests with a small dataset. Increase the number until you consider that the quality gets too bad. Commented Sep 24, 2023 at 13:25