
org.opentripplanner.street.model.edge.ElevatorBoardEdge Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
The newest version!
package org.opentripplanner.street.model.edge;
import java.util.List;
import javax.annotation.Nonnull;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.LineString;
import org.opentripplanner.framework.geometry.GeometryUtils;
import org.opentripplanner.framework.i18n.I18NString;
import org.opentripplanner.framework.i18n.NonLocalizedString;
import org.opentripplanner.framework.tostring.ToStringBuilder;
import org.opentripplanner.street.model.vertex.ElevatorOffboardVertex;
import org.opentripplanner.street.model.vertex.ElevatorOnboardVertex;
import org.opentripplanner.street.search.state.State;
import org.opentripplanner.street.search.state.StateEditor;
/**
* A relatively high cost edge for boarding an elevator.
*
* @author mattwigway
*/
public class ElevatorBoardEdge extends Edge implements BikeWalkableEdge, ElevatorEdge {
/**
* The polyline geometry of this edge. It's generally a polyline with two coincident points, but
* some elevators have horizontal dimension, e.g. the ones on the Eiffel Tower.
*/
private final LineString geometry;
private ElevatorBoardEdge(ElevatorOffboardVertex from, ElevatorOnboardVertex to) {
super(from, to);
geometry =
GeometryUtils.makeLineString(
List.of(new Coordinate(from.getX(), from.getY()), new Coordinate(to.getX(), to.getY()))
);
}
public static ElevatorBoardEdge createElevatorBoardEdge(
ElevatorOffboardVertex from,
ElevatorOnboardVertex to
) {
return connectToGraph(new ElevatorBoardEdge(from, to));
}
@Override
public String toString() {
return ToStringBuilder.of(this.getClass()).addObj("from", fromv).addObj("to", tov).toString();
}
@Override
@Nonnull
public State[] traverse(State s0) {
StateEditor s1 = createEditorForDrivingOrWalking(s0, this);
if (s1 == null) {
return State.empty();
}
var streetPreferences = s0.getPreferences().street();
s1.incrementWeight(streetPreferences.elevator().boardCost());
s1.incrementTimeInSeconds(streetPreferences.elevator().boardTime());
return s1.makeStateArray();
}
@Override
public I18NString getName() {
// TODO: i18n
return new NonLocalizedString("Elevator");
}
/**
* Since board edges always are called Elevator, the name is utterly and completely bogus but is
* never included in plans.
*/
@Override
public boolean hasBogusName() {
return true;
}
@Override
public LineString getGeometry() {
return geometry;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy