Class EdgeElevationSmoothingRamer

java.lang.Object
com.graphhopper.reader.dem.EdgeElevationSmoothingRamer

public class EdgeElevationSmoothingRamer extends Object
Elevation data is read from DEM tiles that have data points for rectangular tiles usually having an edge length of 30 or 90 meter. Elevation in between the middle points of those tiles will be interpolated and weighted by the distance from a node to adjacent tile centers.

Ways that go along cliffs or ridges are particularly affected by ups and downs that do not reflect the actual elevation but may be artifacts originated from very accurately mapping when elevation has a lower resolution.

Author:
Peter Karich
  • Constructor Details

    • EdgeElevationSmoothingRamer

      public EdgeElevationSmoothingRamer()
  • Method Details

    • smooth

      public static void smooth(PointList pointList, double maxElevationDelta)
      This method removes elevation fluctuations up to maxElevationDelta. Compared to the smoothMovingAverage function this method has the advantage that the maximum slope of a PointList never increases (max(abs(slope_i))). The disadvantage is that the appearance might be still more spiky (at tower nodes) as a result when a bigger positive slope changes to a bigger negative slope.

      The underlying algorithm is an adapted Ramer-Douglas-Peucker algorithm (see #2634) with a maximum elevation change and: 1. only elevation changes are considered and any lat,lon difference is ignored 2. instead of removing the point the elevation will be calculated from the average slope of the first and last point of the specified pointList