6

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?

1 Answer 1

4
+50

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

¹ code reference
² code reference
³ code reference
code reference
code reference

1
  • 2
    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.
    – user30184
    Commented Sep 24, 2023 at 13:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.