public Network createSmallNetwork(Network net, SignalSystemsData data) { Map<Id<SignalSystem>, Set<Id<Link>>> signalsToLinks = DgSignalsUtils.calculateSignalizedLinksPerSystem(data); final Set<Id<Link>> signalizedLinks = new HashSet<>(); for (Set<Id<Link>> linkSet : signalsToLinks.values()) { signalizedLinks.addAll(linkSet); } NetworkFilterManager filterManager = new NetworkFilterManager(net); filterManager.addLinkFilter( new NetworkLinkFilter() { @Override public boolean judgeLink(Link l) { if (signalizedLinks.contains(l.getId())) { return true; } return false; } }); Network newNetwork = filterManager.applyFilters(); if (signalizedLinks.size() != newNetwork.getLinks().size()) { throw new IllegalStateException("Network should contain all signalized links but not more!"); } return newNetwork; }
/** @param args */ public static void main(String[] args) { Network network = NetworkUtils.createNetwork(); new MatsimNetworkReader(network) .readFile( "../../../shared-svn/studies/jbischoff/multimodal/berlin/input/10pct/network.final10pct.xml.gz"); NetworkFilterManager m = new NetworkFilterManager(network); m.addLinkFilter( new NetworkLinkFilter() { @Override public boolean judgeLink(Link l) { if (l.getAllowedModes().contains(TransportMode.car)) return true; else return false; } }); Network network2 = m.applyFilters(); new NetworkWriter(network2) .write( "../../../shared-svn/studies/jbischoff/multimodal/berlin/input/10pct/network.final10pct_car.xml.gz"); }