@Override public int compare(Lane o1, Lane o2) { if (o1.getStartsAtMeterFromLinkEnd() < o2.getStartsAtMeterFromLinkEnd()) { return -1; } else if (o1.getStartsAtMeterFromLinkEnd() > o2.getStartsAtMeterFromLinkEnd()) { return 1; } else { return 0; } } });
private void calculateEarliestTimeInDistance (double enterTime, double dist, Link link, Lane lane){ this.earliestTimeInDistance = enterTime + ((lane.getStartsAtMeterFromLinkEnd() - dist) / link.getFreespeed(enterTime)); // log.debug("link " + link.getId() + " enterTime: " + enterTime + " earliest time " + this.earliestTimeInDistance + " distance " + d); }
public CarLocator( Lane lane, Link link, double enterTime, double distance){ double dist = this.checkDistance(lane.getStartsAtMeterFromLinkEnd(), distance); this.calculateEarliestTimeInDistance(enterTime, dist, link, lane); }
if (firstLane.getStartsAtMeterFromLinkEnd() != link.getLength()) { throw new IllegalStateException("First Lane Id " + firstLane.getId() + " on Link Id " + link.getId() + "isn't starting at the beginning of the link!"); for (Id<Lane> toLaneId : toLaneIds){ Lane currentLane = lanesToLinkAssignment.getLanes().get(toLaneId); nextMetersFromLinkEnd = currentLane.getStartsAtMeterFromLinkEnd(); ModelLane currentQLane = new ModelLane(currentLane); laneList.add(currentQLane); lastQLane.addAToLane(currentQLane); laneLength = lastQLane.getLaneData().getStartsAtMeterFromLinkEnd() - nextMetersFromLinkEnd; lastQLane.setEndsAtMetersFromLinkEnd(nextMetersFromLinkEnd); laneLength = lastQLane.getLaneData().getStartsAtMeterFromLinkEnd(); lastQLane.setEndsAtMetersFromLinkEnd(0.0);
Link link = this.network.getLinks().get(l2l.getLinkId()); for (Lane l : l2l.getLanes().values()){ if (link.getLength() < l.getStartsAtMeterFromLinkEnd()) { log.error("Link Id " + link.getId() + " is shorter than an assigned lane with id " + l.getId()); return false;
private VisLane createVisLane(ModelLane qlane, double linkLength, double linkScale, double linkLengthCorrectionFactor) { String id = qlane.getLaneData().getId().toString(); double startPosition = (linkLength - qlane.getLaneData().getStartsAtMeterFromLinkEnd()) * linkScale * linkLengthCorrectionFactor; double endPosition = startPosition + (qlane.getLength() * linkScale * linkLengthCorrectionFactor); // log.error("lane " + qlane.getId() + " starts at: " + startPosition + " and ends at : " +endPosition); int alignment = qlane.getLaneData().getAlignment(); VisLane lane = new VisLane(id); lane.setStartPosition(startPosition); lane.setEndPosition(endPosition); lane.setAlignment(alignment); lane.setNumberOfLanes(qlane.getLaneData().getNumberOfRepresentedLanes()); return lane; }
startsAt.setMeterFromLinkEnd(bl.getStartsAtMeterFromLinkEnd()); xmllane.setStartsAt(startsAt);
assertEquals(laneId3, lane.getId()); assertEquals(linkId1, lane.getToLinkIds().get(0)); assertEquals(45.0, lane.getStartsAtMeterFromLinkEnd(), EPSILON); assertEquals(1.0, lane.getNumberOfRepresentedLanes()); assertEquals(0.725, lane.getCapacityVehiclesPerHour(), EPSILON); lane = lanes.get(1); assertEquals(laneId5, lane.getId()); assertEquals(60.0, lane.getStartsAtMeterFromLinkEnd(), EPSILON); assertEquals(2.5, lane.getNumberOfRepresentedLanes()); assertEquals(2, lane.getCapacityVehiclesPerHour(), EPSILON); assertEquals(laneId1, lane.getId()); assertEquals(linkId1, lane.getToLinkIds().get(0)); assertEquals(45.0, lane.getStartsAtMeterFromLinkEnd(), EPSILON); assertEquals(1900.0, lane.getCapacityVehiclesPerHour(), EPSILON); assertEquals(1.0, lane.getNumberOfRepresentedLanes());