uk.me.parabola.mkgmap.filters
Class DouglasPeuckerFilter

java.lang.Object
  extended by uk.me.parabola.mkgmap.filters.DouglasPeuckerFilter
All Implemented Interfaces:
MapFilter

public class DouglasPeuckerFilter
extends java.lang.Object
implements MapFilter

This is a filter that smooths out lines at low resolutions. If the element has no size at all at the given resolution, then it is not passed on down the chain at all is excluded from the map at that resolution.


Constructor Summary
DouglasPeuckerFilter(double filterDistance)
           
 
Method Summary
 void doFilter(MapElement element, MapFilterChain next)
          This applies to both lines and polygons.
protected  void douglasPeucker(java.util.List<Coord> points, int startIndex, int endIndex, double allowedError)
          Reduces point density by Douglas-Peucker algorithm
 void init(FilterConfig config)
          Initialise the filter and pass in parameters that may be needed for the run.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DouglasPeuckerFilter

public DouglasPeuckerFilter(double filterDistance)
Method Detail

init

public void init(FilterConfig config)
Description copied from interface: MapFilter
Initialise the filter and pass in parameters that may be needed for the run.

Specified by:
init in interface MapFilter
Parameters:
config - Configuration information, giving parameters of the map level that is being produced through this filter.

doFilter

public void doFilter(MapElement element,
                     MapFilterChain next)
This applies to both lines and polygons. We are going to smooth out the points in the line so that you do not get jaggies.

Specified by:
doFilter in interface MapFilter
Parameters:
element - A map element that will be a line or a polygon.
next - This is used to pass the possibly transformed element onward.

douglasPeucker

protected void douglasPeucker(java.util.List<Coord> points,
                              int startIndex,
                              int endIndex,
                              double allowedError)
Reduces point density by Douglas-Peucker algorithm

Parameters:
points - The list of points to simplify.
startIndex - First index of segment. The point with this index will not be changed
endIndex - Last index of segment. The point with this index will not be changed
allowedError - Maximal allowed error to be introduced by simplification. returns number of removed points.