Generalizing rivers and lakes - further generalization steps
The processing described so far produced only intermediate data. Here i will describe the further processing steps required to produce the generalized river and lake geometries.
Scale dependent generalization of the river lines
Rendering a map with rivers involves two things: From the river line network generated in the previous steps i first select a subset based on a chosen threshold for the importance rating. The choice of this threshold value of course depends primarily on the map scale. Beyond that the density of rivers shown in the map is also a design choice.
The selected rivers then need to be simplified to eliminate small details that can not properly be represented at the target map scale. The usual line simplification methods are not the best choice here, especially since there are additional constraints that need to be taken into account. Like with the coastlines i use a raster based approach.
The whole process is illustrated by the following images (from the Caspian Sea west coast). The coastline is generalized for z=8 and only included as visual guide.
|original OSM data (see also map)||presimplified and importance rated lines|
|zoom=6 generalized lines and areas||rendered map|
During simplification it needs to be ensured that the water lines stay consistent with the water areas and coastlines, therefore these are part of the process. This is currently not yet fully implemented - while lines are ensured to maintain connections to water areas and oceans these features are not ensured to maintain separation during the simplification process. This is visible in the above example as well as in other areas of the maps.
For rendering the river size information is used to adjust the line width the rivers are drawn in.
Generalizing the water areas
The process of generalizing the water areas is similar to that of the coastlines - with somewhat different parameters. Special care needs to be taken where water areas are close to the coast. Explicit connections need to be maintained while separation between inland water and ocean needs to be ensured elsewhere. These features are included in the new coastline_gen version.