private void testForSnapshot(final double time) { int snapshotIndex = (int) (time / this.snapshotPeriod); if (this.lastSnapshotIndex == -1) { this.lastSnapshotIndex = snapshotIndex; } while (snapshotIndex > this.lastSnapshotIndex) { this.lastSnapshotIndex++; double snapshotTime = this.lastSnapshotIndex * this.snapshotPeriod; doSnapshot(snapshotTime); } }
@Override public void handleEvent(final PersonDepartureEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).departure(getEventAgent(event.getPersonId(), event.getTime())); }
public static void convert(Scenario scenario, String eventFileName, String outFileName, double interval_s) { OTFFileWriter otfFileWriter = new OTFFileWriter(scenario, outFileName); EventsManager events = EventsUtils.createEventsManager(); SnapshotGenerator visualizer = new SnapshotGenerator(scenario.getNetwork(), interval_s, scenario.getConfig().qsim()); visualizer.addSnapshotWriter(otfFileWriter); events.addHandler(visualizer); new MatsimEventsReader(events).readFile(eventFileName); visualizer.finish(); otfFileWriter.finish(); }
System.err.println("Trying to close visualizer file up to this state, it may not be complete though."); this.visualizer.finish(); System.out.println("done.");
private void loadSnapshotWriters(final String outputDir) { if (this.writer != null) { this.visualizer.addSnapshotWriter(this.writer); } Collection<String> snapshotFormat = this.config.controler().getSnapshotFormat(); if (snapshotFormat.contains("transims")) { String snapshotFile = outputDir + "T.veh"; this.visualizer.addSnapshotWriter(new TransimsSnapshotWriter(snapshotFile)); } if (snapshotFormat.contains("googleearth")) { String snapshotFile = outputDir + "googleearth.kmz"; String coordSystem = this.config.global().getCoordinateSystem(); this.visualizer.addSnapshotWriter(new KmlSnapshotWriter(snapshotFile, TransformationFactory.getCoordinateTransformation(coordSystem, TransformationFactory.WGS84))); } }
private void prepare() { // create events this.events = EventsUtils.createEventsManager(); // create SnapshotGenerator this.visualizer = new SnapshotGenerator(this.network, this.config.qsim().getSnapshotPeriod(), this.config.qsim()); this.events.addHandler(this.visualizer); }
private void doSnapshot(final double time) { if (time >= skipUntil) { if (!this.snapshotWriters.isEmpty()) { Collection<AgentSnapshotInfo> positions = getVehiclePositions(time); for (SnapshotWriter writer : this.snapshotWriters) { writer.beginSnapshot(time); for (AgentSnapshotInfo position : positions) { writer.addAgent(position); } writer.endSnapshot(); } } } }
public SnapshotGenerator(final Network network, final double snapshotPeriod, final QSimConfigGroup config) { this.network = network; int initialCapacity = (int)(network.getLinks().size()*1.1); this.eventLinks = new HashMap<>(initialCapacity, 0.95f); this.linkList = new ArrayList<>(initialCapacity); this.eventAgents = new HashMap<>(1000, 0.95f); this.snapshotPeriod = snapshotPeriod; this.capCorrectionFactor = config.getFlowCapFactor() / network.getCapacityPeriod(); this.storageCapFactor = config.getStorageCapFactor(); this.snapshotStyle = config.getSnapshotStyle(); if (! Double.isNaN( config.getLinkWidthForVis() )){ this.linkWidthCalculator.setLinkWidthForVis( config.getLinkWidthForVis() ); } if (! Double.isNaN(network.getEffectiveLaneWidth())){ this.linkWidthCalculator.setLaneWidth(network.getEffectiveLaneWidth()); } reset(-1); }
public void makeMVI(Carriers carriers, String outfile, double snapshotInterval){ OTFFileWriter otfFileWriter = new OTFFileWriter(scenario, outfile); EventsManager events = EventsUtils.createEventsManager(); CarrierAgentTracker carrierAgentTracker = new CarrierAgentTracker(carriers, scenario.getNetwork(), new CarrierScoringFunctionFactory() { @Override public ScoringFunction createScoringFunction(Carrier carrier) { return getNoScoring(); } }); CarrierConfig carrierConfig = new CarrierConfig(); carrierConfig.setPhysicallyEnforceTimeWindowBeginnings(true); FreightQSimFactory mobsimFactory = new FreightQSimFactory(scenario, events, carrierAgentTracker, carrierConfig); Mobsim mobsim = mobsimFactory.get(); SnapshotGenerator visualizer = new SnapshotGenerator(scenario.getNetwork(), snapshotInterval, scenario.getConfig().qsim()); visualizer.addSnapshotWriter(otfFileWriter); events.addHandler(visualizer); mobsim.run(); visualizer.finish(); otfFileWriter.finish(); }
this.visualizer.finish(); System.out.println("done.");
@Override public void handleEvent(final PersonArrivalEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).arrival(getEventAgent(event.getPersonId(), event.getTime())); }
@Override public void handleEvent(final PersonStuckEvent event) { testForSnapshot(event.getTime()); if (event.getLinkId() != null) { // link id is optional - agent can be teleporting or whatever. this.eventLinks.get(event.getLinkId()).stuck(getEventAgent(event.getPersonId(), event.getTime())); } }
@Override public void handleEvent(final LinkEnterEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).enter(getEventAgent(delegate.getDriverOfVehicle(event.getVehicleId()), event.getTime())); }
@Override public void handleEvent(final LinkLeaveEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).leave(getEventAgent(delegate.getDriverOfVehicle(event.getVehicleId()), event.getTime())); }
@Override public void handleEvent(final VehicleEntersTrafficEvent event) { testForSnapshot(event.getTime()); this.eventLinks.get(event.getLinkId()).wait2link(getEventAgent(event.getPersonId(), event.getTime())); delegate.handleEvent(event); }