diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/DPFilter.java b/brouter-map-creator/src/main/java/btools/mapcreator/DPFilter.java index b23d50b..2310fd1 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/DPFilter.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/DPFilter.java @@ -16,6 +16,25 @@ public class DPFilter /* * for each node (except first+last), eventually set the DP_SURVIVOR_BIT */ + public static void doDPFilter( ArrayList nodes ) + { + int first = 0; + int last = nodes.size()-1; + while( first < last && (nodes.get(first+1).bits & OsmNodeP.DP_SURVIVOR_BIT) != 0 ) + { + first++; + } + while( first < last && (nodes.get(last-1).bits & OsmNodeP.DP_SURVIVOR_BIT) != 0 ) + { + last--; + } + if ( last - first > 1 ) + { + doDPFilter( nodes, first, last ); + } + } + + public static void doDPFilter( ArrayList nodes, int first, int last ) { double maxSqDist = -1.; diff --git a/brouter-map-creator/src/main/java/btools/mapcreator/OsmNodeP.java b/brouter-map-creator/src/main/java/btools/mapcreator/OsmNodeP.java index dd70c65..1fa1fd0 100644 --- a/brouter-map-creator/src/main/java/btools/mapcreator/OsmNodeP.java +++ b/brouter-map-creator/src/main/java/btools/mapcreator/OsmNodeP.java @@ -252,7 +252,7 @@ public class OsmNodeP extends OsmLinkP mc.writeModeAndDesc( isReverse, link0.descriptionBitmap ); if ( !isReverse && linkNodes.size() > 2 ) // write geometry for forward links only { - DPFilter.doDPFilter( linkNodes, 0, linkNodes.size()-1 ); + DPFilter.doDPFilter( linkNodes ); origin = this; for( int i=1; i