use of uk.me.parabola.mkgmap.filters.LineMergeFilter in project mkgmap by openstreetmap.
the class MapBuilder method processLines.
/**
* Step through the lines, filter, simplify if necessary, and create a map
* line which is then added to the map.
*
* Note that the location and resolution of map elements is relative to the
* subdivision that they occur in.
*
* @param map The map to add points to.
* @param div The subdivision that the lines belong to.
* @param lines The lines to be added.
*/
private void processLines(Map map, Subdivision div, List<MapLine> lines) {
// Signal that we are beginning to draw the lines.
div.startLines();
int res = div.getResolution();
FilterConfig config = new FilterConfig();
config.setResolution(res);
config.setLevel(div.getZoom().getLevel());
config.setRoutable(doRoads);
// Maybe more efficient if merging before creating subdivisions.
if (mergeLines) {
LineMergeFilter merger = new LineMergeFilter();
lines = merger.merge(lines, res);
}
LayerFilterChain filters = new LayerFilterChain(config);
if (enableLineCleanFilters && (res < 24)) {
filters.addFilter(new RoundCoordsFilter());
filters.addFilter(new SizeFilter(MIN_SIZE_LINE));
if (reducePointError > 0)
filters.addFilter(new DouglasPeuckerFilter(reducePointError));
}
filters.addFilter(new LineSplitterFilter());
filters.addFilter(new RemoveEmpty());
filters.addFilter(new RemoveObsoletePointsFilter());
filters.addFilter(new LinePreparerFilter(div));
filters.addFilter(new LineAddFilter(div, map, doRoads));
for (MapLine line : lines) {
if (line.getMinResolution() > res)
continue;
filters.startFilter(line);
}
}
Aggregations