Interface Weighting

All Known Implementing Classes:
AbstractAdjustedWeighting, AbstractWeighting, AvoidEdgesWeighting, CustomWeighting, FastestWeighting, QueryGraphWeighting, ShortestWeighting, SpeedWeighting

public interface Weighting
Specifies how the best route is calculated.
Author:
Peter Karich
  • Field Details

  • Method Details

    • calcMinWeightPerDistance

      double calcMinWeightPerDistance()
      Used only for the heuristic estimation in A*
      Returns:
      minimal weight per meter. E.g. if you calculate the fastest way the return value is '1/max_velocity' or a shortest weighting would return 1.
    • calcEdgeWeight

      double calcEdgeWeight(EdgeIteratorState edgeState, boolean reverse)
      This method calculates the weight of a given EdgeIteratorState. E.g. a high value indicates that the edge should be avoided during shortest path search. Make sure that this method is very fast and optimized as this is called potentially millions of times for one route or a lot more for nearly any preprocessing phase.
      Parameters:
      edgeState - the edge for which the weight should be calculated
      reverse - if the specified edge is specified in reverse direction e.g. from the reverse case of a bidirectional search.
      Returns:
      the calculated weight with the specified velocity has to be in the range of 0 and +Infinity. Make sure your method does not return NaN which can e.g. occur for 0/0.
    • calcEdgeMillis

      long calcEdgeMillis(EdgeIteratorState edgeState, boolean reverse)
      This method calculates the time taken (in milliseconds) to travel along the specified edgeState. It is typically used for post-processing and on only a few thousand edges.
    • calcTurnWeight

      double calcTurnWeight(int inEdge, int viaNode, int outEdge)
    • calcTurnMillis

      long calcTurnMillis(int inEdge, int viaNode, int outEdge)
    • hasTurnCosts

      boolean hasTurnCosts()
      This method can be used to check whether or not this weighting returns turn costs (or if they are all zero). This is sometimes needed to do safety checks as not all graph algorithms can be run edge-based and might yield wrong results when turn costs are applied while running node-based.
    • getName

      String getName()