public CountSimComparisonWriter(final List<CountSimComparison> countSimCompList) { super(); this.countComparisonFilter = new CountSimComparisonTimeFilter(countSimCompList); }
public void run() { this.compare(); }
/** * Creates the CountsSimReal24Graph for all the data. AWTV = average weekday traffic volumes. * <br><br> * Notes:<ul> * <li> I think that "weekday" means "day-of-week", i.e. the method does not care when it is sunday. kai, sep'16 * </ul> * @param visible true if initially visible * @return the ScreenOverlay Feature */ private ScreenOverlayType createAWTVGraph() { CountsGraph awtv = new CountsSimReal24Graph(this.countComparisonFilter.getCountsForHour(null), this.iterationNumber, "awtv graph"); awtv.createChart(0); String filename = "awtv.png"; try { writeChartToKmz(filename, awtv.getChart()); return createOverlayBottomRight("./" + filename, "AWTV"); } catch (IOException e) { e.printStackTrace(); } return null; }
public void testGraphCreation() { CountsFixture fixture = new CountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.run(); CountsHtmlAndGraphsWriter cgw = new CountsHtmlAndGraphsWriter(this.getOutputDirectory(), cca.getComparison(),1); cgw.addGraphsCreator(new CountsSimRealPerHourGraphCreator("sim vs. real volumes per hour")); cgw.addGraphsCreator(new CountsErrorGraphCreator("Error Plots")); cgw.addGraphsCreator(new CountsLoadCurveGraphCreator("Load curve graph")); cgw.addGraphsCreator(new CountsSimReal24GraphCreator("average working day sim and count volumes")); cgw.createHtmlAndGraphs(); assertTrue(cgw.getOutput().getGraphs().size()>0); } }
public void testKMLCreation() { CountsFixture fixture = new CountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca=fixture.getCCA(); cca.run(); String filename = this.getOutputDirectory() + "countscompare.kmz"; CountSimComparisonKMLWriter kmlWriter = new CountSimComparisonKMLWriter( cca.getComparison(), fixture.getNetwork(), new IdentityTransformation()); kmlWriter.setIterationNumber(0); kmlWriter.writeFile(filename); assertTrue(new File(filename).length() > 0); } }
@Test public void testDistanceFilter() { final PtCountsFixture fixture = new PtAlightCountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.setCountCoordUsingDistanceFilter(4000.0, "11"); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); assertEquals("Distance filter not working", 24, csc_list.size()); } }
public void testTableCreation() { CountsFixture fixture = new CountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.run(); CountSimComparisonTableWriter ctw = new CountSimComparisonTableWriter(cca.getComparison(), Locale.ENGLISH); ctw.writeFile(this.getOutputDirectory() + "/countTable.txt"); File f = new File(this.getOutputDirectory() + "/countTable.txt"); assertTrue(f.length() > 0.0); } }
/** * Creates the CountsErrorGraph for all the data * @param visible true if initially visible * @return the ScreenOverlay Feature */ private ScreenOverlayType createBoxPlotErrorGraph() { CountsGraph ep; try { ep = new BoxPlotErrorGraph(this.countComparisonFilter.getCountsForHour(null), this.iterationNumber, null, "error graph"); ep.createChart(0); } catch (IllegalArgumentException e) { log.error("Could not create BoxPlot-ErrorGraph.", e); return null; } String filename = "errorGraphBoxPlot.png"; try { writeChartToKmz(filename, ep.getChart()); return createOverlayBottomRight(filename, "Error Graph [Box-Plot]"); } catch (IOException e) { e.printStackTrace(); } return null; }
/** * Creates CountsLoadCurveGraphs for each link and puts them in the kmz as pngs */ private void createCountsLoadCurveGraphs() { CountsLoadCurveGraphCreator cgc = new CountsLoadCurveGraphCreator(""); List<CountsGraph> graphs = cgc.createGraphs(this.countComparisonFilter.getCountsForHour(null), this.iterationNumber); this.countsLoadCurveGraphMap = new HashMap<>(graphs.size()); String linkid; StringBuffer filename; for (CountsGraph cg : graphs) { try { filename = new StringBuffer(); linkid = ((CountsLoadCurveGraph) cg).getLinkId(); filename.append(linkid); filename.append(PNG); writeChartToKmz(filename.toString(), cg.getChart()); this.countsLoadCurveGraphMap.put(linkid, filename.toString()); } catch (IOException e) { e.printStackTrace(); } } }
/** * Creates the CountsErrorGraph for all the data * @param visible true if initially visible * @return the ScreenOverlay Feature */ private ScreenOverlayType createBoxPlotNormalizedErrorGraph() { CountsGraph ep; try { ep = new BoxPlotNormalizedErrorGraph(this.countComparisonFilter.getCountsForHour(null), this.iterationNumber, null, "error graph"); ep.createChart(0); } catch (IllegalArgumentException e) { log.error("Could not create BoxPlot-NormalizedErrorGraph.", e); return null; } String filename = "errorGraphNormalizedBoxPlot.png"; try { writeChartToKmz(filename, ep.getChart()); return createOverlayBottomRight(filename, "Normalized Error Graph [Box-Plot]"); } catch (IOException e) { e.printStackTrace(); } return null; }
/** * Creates CountsGEHCurveGraphs for each link and puts them in the kmz as pngs */ private void createCountsGEHCurveGraphs() { CountsGEHCurveGraphCreator cgc = new CountsGEHCurveGraphCreator(""); List<CountsGraph> graphs = cgc.createGraphs(this.countComparisonFilter.getCountsForHour(null), this.iterationNumber); this.countsGEHCurveGraphMap = new HashMap<>(graphs.size()); String linkId; StringBuffer filename; for (CountsGraph cg : graphs) { try { filename = new StringBuffer(); linkId = ((CountsGEHCurveGraph) cg).getLinkId(); filename.append(linkId); filename.append("_GEH"); filename.append(PNG); writeChartToKmz(filename.toString(), cg.getChart()); this.countsGEHCurveGraphMap.put(linkId, filename.toString()); } catch (IOException e) { e.printStackTrace(); } } }
public void testDistanceFilter() { CountsFixture fixture = new CountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.setDistanceFilter(Double.valueOf(0.5), "1"); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); assertEquals("Distance filter not working", 0, csc_list.size()); }
public void testCompare() { CountsFixture fixture = new CountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); int cnt=0; for (CountSimComparison csc : csc_list) { assertEquals("Wrong sim value set", 2*cnt, csc.getSimulationValue(), 0.0); cnt++; cnt=cnt%24; }//while }
public CountsComparisonAlgorithm getCCA() { final CalcLinkStats linkStats = new AttributeFactory().createLinkStats(this.network); CountsComparisonAlgorithm cca = new CountsComparisonAlgorithm(new CountsComparisonAlgorithm.VolumesForId() { @Override public double[] getVolumesForStop(Id<TransitStopFacility> locationId) { return linkStats.getAvgLinkVolumes(Id.create(locationId, Link.class)); } }, this.counts, this.network, 1.0); // cca.setDistanceFilter(100.0, "0"); return cca; }
/** * Creates the string for the foldername * @param timestep * @return a timestep specific standard string */ private String createFolderName(final int timestep) { StringBuilder buffer = new StringBuilder(30); buffer.append("Traffic from "); buffer.append(this.timestepToString(timestep - 1)); buffer.append(" to "); buffer.append(this.timestepToString(timestep)); buffer.append(" o'clock"); return buffer.toString(); }
/** * Creates a placemark * * @param linkid * @param csc * @param relativeError * @param timestep * @return the Placemark instance with description and name set */ private PlacemarkType createPlacemark(final String linkid, final CountSimComparison csc, final double relativeError, final double normalizedRelativeError, final double gehValue, final int timestep, final String imagePath) { PlacemarkType placemark = this.kmlObjectFactory.createPlacemarkType(); placemark.setDescription(createPlacemarkDescription(linkid, csc, relativeError, normalizedRelativeError, gehValue, timestep, imagePath)); return placemark; }
@Test public void testDistanceFilter() { PtCountsFixture fixture = new PtOccupancyCountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.setCountCoordUsingDistanceFilter(3000.0, "11"); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); assertEquals("Distance filter not working", 72, csc_list.size()); } }
@Test public void testCompare() { PtCountsFixture fixture = new PtAlightCountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); int cnt = 0; for (CountSimComparison csc : csc_list) { if (cnt != 8 && cnt!=32) { assertEquals("Wrong sim value set", 0d, csc.getSimulationValue(), 0d); } else if(cnt==8) { assertEquals("Wrong sim value set", 500d, csc.getSimulationValue(), 0d); }else{ assertEquals("Wrong sim value set", 150d, csc.getSimulationValue(), 0d); } cnt++; } }
/** * */ @Deprecated // we should try to rather make CountSimComparisonKMLWriter more general. kai, dec'13 public PtCountSimComparisonWriter(final List<CountSimComparison> boardCountSimCompList, final List<CountSimComparison> alightCountSimCompList, final List<CountSimComparison> occupancyCountSimCompList) { if ( boardCountSimCompList != null ) { this.boardCountComparisonFilter = new CountSimComparisonTimeFilter(boardCountSimCompList); } if ( alightCountSimCompList!=null ) { this.alightCountComparisonFilter = new CountSimComparisonTimeFilter(alightCountSimCompList); } if ( occupancyCountSimCompList != null ) { this.occupancyCountComparisonFilter = new CountSimComparisonTimeFilter(occupancyCountSimCompList); } }
@Test public void testDistanceFilter() { PtCountsFixture fixture = new PtBoardCountsFixture(); fixture.setUp(); CountsComparisonAlgorithm cca = fixture.getCCA(); cca.setCountCoordUsingDistanceFilter(Double.valueOf(5000), "11"); cca.run(); List<CountSimComparison> csc_list = cca.getComparison(); assertEquals("Distance filter not working", 24, csc_list.size()); } }