In surveying, we strive for the highest accuracy and precision possible. However, this is not always the case in mapmaking. Too-detailed geometries on small scale (zoomed-out) maps are bad for human perception; edges or lines appear jagged, and cause an unnecessary burden on the computer in trying to render them. For that reason, cartographers generalize the geometries used for mapmaking. There are a few algorithms designed for automated generalization. PostGIS provides an implementation of a widely used Douglas-Peucker algorithm in a ST_Simplify function.
The function accepts two arguments, the first being a geometry to be simplified, and the second being a tolerance parameter defining how aggressive the simplification can be. Tolerance is given in the same units as the geometry's coordinate system, and the bigger it is, the more simplified the output geometry becomes.
Here are some examples of simplification:

The problem with the ST_Simplify function is that it can break geometries that introduce self-intersections, for example (more on geometry validity in the next section). To address this, a safer variant called ST_SimplifyPreserveTopology was introduced. This function will do its best to avoid creating invalid geometries.
Please note that this function maintains topology within single rows only. It can--and it will--break topological relationships between adjacent geometries, for example, land parcels or river networks:

This is because the Simple Features model, which PostGIS uses, does not store any information about topological relationships between features. If topological correctness is required, the features should be stored in a PostGIS topology format (which is discussed in Chapter 8, PostGIS Topology ) instead.