diff --git a/mapbuilder/src/main/java/map/builder/App.java b/mapbuilder/src/main/java/map/builder/App.java index 86d03c863ede7e1d5df4ffdeab761cd179bb9ddb..b472731d101abacfafab87babadbfae9b28c3e39 100644 --- a/mapbuilder/src/main/java/map/builder/App.java +++ b/mapbuilder/src/main/java/map/builder/App.java @@ -65,6 +65,7 @@ public class App { // cleanup graph = null; + OSMConnectedComponentParser.cleanUp(roadNetworkBuilder, component); RoadNetwork roadNetwork = roadNetworkBuilder.build(); System.out.println("Turn restrictions count: " + roadNetwork.getTurnRestrictionsCount()); diff --git a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java index 003ba3ca6055ccf7332646b1806bf9026c0341a8..0632f018b92cb06c6267bea95f4201a398854143 100644 --- a/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java +++ b/mapbuilder/src/main/java/map/builder/osm/OSMConnectedComponentParser.java @@ -1,5 +1,10 @@ package map.builder.osm; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Map; + +import de.fuberlin.navigator.protos.map_builder.Node; import de.fuberlin.navigator.protos.map_builder.RoadNetwork; import de.fuberlin.navigator.protos.map_builder.Segment; import map.builder.utilities.ConnectedComponentGraph; @@ -24,4 +29,26 @@ public class OSMConnectedComponentParser { } } + public static void cleanUp(RoadNetwork.Builder roadNetworkBuilder, ArrayList<Long> component) { + Map<Long, Node> nodesMap = roadNetworkBuilder.getNodesMap(); + for (Iterator<Long> iterator = nodesMap.keySet().iterator(); iterator.hasNext();) { + Long key = iterator.next(); + System.out.println(component.contains(key)); + if (!component.contains(key)) { + iterator.remove(); + ; + } + } + Map<Long, Segment> segmentsMap = roadNetworkBuilder.getSegmentsMap(); + for (Iterator<Long> iterator = segmentsMap.keySet().iterator(); iterator.hasNext();) { + Long key = iterator.next(); + Long startNodeID = segmentsMap.get(key).getStartNode(); + Long endNodeID = segmentsMap.get(key).getEndNode(); + if ((!component.contains(startNodeID)) && (!component.contains(endNodeID))) { + iterator.remove(); + ; + } + } + } + } \ No newline at end of file