All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.profile.StopAtDistance Maven / Gradle / Ivy

package org.opentripplanner.profile;

import org.opentripplanner.api.parameter.QualifiedMode;
import org.opentripplanner.routing.core.State;
import org.opentripplanner.routing.vertextype.TransitStop;

/**
 * A stop cluster associated with its elapsed time from a search location and the path for reaching it.
 * Used in profile routing.
 * TODO rename this StopPath or something.
 */
public class StopAtDistance implements Comparable {

    public StopCluster stopCluster; // TODO rename to stopCluster, use StopCluster objects not strings?
    public QualifiedMode qmode;
    public int etime;
    public State state;

    /** 
     * @param state a state at a TransitStop, at the tail of a path
     * @param qmode the qualified mode (e.g. BICYCLE_RENT) used to produce this path
     */
    public StopAtDistance (State state, QualifiedMode qmode) {
        this.state = state;
        etime = (int) state.getElapsedTimeSeconds();
        // The mode from the state is not reliable for drive to transit or bicycle rental (which end with walking).
        // Use the more specific mode passed in from the caller.
        this.qmode = qmode;
        if (state.getVertex() instanceof TransitStop) {
            TransitStop tstop = (TransitStop) state.getVertex();
            stopCluster = state.getOptions().rctx.graph.index.stopClusterForStop.get(tstop.getStop());
        }
    }

    @Override
    public int compareTo(StopAtDistance that) {
        return this.etime - that.etime;
    }

    public String toString() {
        return String.format("stop cluster %s via mode %s at %d min", stopCluster.id, qmode, etime / 60);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy