I'm trying to simplify a city map by bundling neighbouring parallel roads together by taking their average and by removing roads that are unnecessary for the essential road structure (e.g. short roads that are enclosed by other roads). Are there any well-known algorithms that address this problem? I'm aware of the Ramer–Douglas–Peucker algorithm, but I don't think it's a good-enough fit for the problem. I'm using Qgis and Openstreetmap maps. Thank you in advance.