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

org.opentripplanner.scripting.api.OtpsSPT Maven / Gradle / Ivy

/* This program is free software: you can redistribute it and/or
 modify it under the terms of the GNU Lesser General Public License
 as published by the Free Software Foundation, either version 3 of
 the License, or (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see . */

package org.opentripplanner.scripting.api;

import java.util.ArrayList;
import java.util.List;

import org.opentripplanner.analyst.request.SampleFactory;
import org.opentripplanner.routing.spt.ShortestPathTree;

/**
 * A shortest-path-tree, the result of a plan request on a router.
 * 
 * Example of use (python script):
 * 
 *   router = otp.getRouter()
 *   req = otp.createRequest()
 *   req.setDateTime(...)
 *   spt = router.plan(req)
 * 
* * @author laurent */ public class OtpsSPT { private ShortestPathTree spt; private SampleFactory sampleFactory; protected OtpsSPT(ShortestPathTree spt, SampleFactory sampleFactory) { this.spt = spt; this.sampleFactory = sampleFactory; } /** * Evaluate the SPT at a given point. * * @param lat * @param lon * @return */ public OtpsEvaluatedIndividual eval(double lat, double lon) { return eval(new OtpsIndividual(lat, lon, null, null)); } /** * Evaluate the SPT for a single individual. * * @param individual * @return The evualuated value, or NULL if no evaluation can be done (out of range, non snappable). */ public OtpsEvaluatedIndividual eval(OtpsIndividual individual) { return individual.eval(spt, sampleFactory); } /** * Evaluate the SPT for a whole population. * * @param population * @return The list of evualuated values; can be smaller than the population itself as * non-evaluated values will not be returned in the list. */ public List eval(Iterable population) { List retval = new ArrayList<>(); // Size? for (OtpsIndividual individual : population) { OtpsEvaluatedIndividual evaluated = eval(individual); if (evaluated != null) retval.add(evaluated); } return retval; } /** * Get the exact location of the origin of the search (from or to place, depending on the * arriveBy option). * * @return */ public OtpsLatLon getSnappedOrigin() { return new OtpsLatLon(spt.getOptions().rctx.origin.getLat(), spt.getOptions().rctx.origin.getLon()); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy