Class InterpolationLibrary

java.lang.Object
org.onebusaway.gtfs_transformer.updates.InterpolationLibrary

public class InterpolationLibrary extends Object
Generic methods to support interpolation of values against a sorted key-value map given a new target key. Note that these interpolation methods do not conform to the GTFS-rt spec. For GTFS-rt compliant interpolation/extrapolation. Ported from onebusaway-application-modules.
Author:
bdferris
  • Constructor Details

    • InterpolationLibrary

      public InterpolationLibrary()
  • Method Details

    • interpolate

      public static <K extends Number, V extends Number> double interpolate(SortedMap<K,V> values, K target)
      Parameters:
      values - a sorted-map of key-value number pairs
      target - the target key used to interpolate a value
      Returns:
      an interpolated value for the target key
    • interpolate

      public static <K extends Number, V extends Number> double interpolate(SortedMap<K,V> values, K target, InterpolationLibrary.EOutOfRangeStrategy outOfRangeStrategy)
      Given a SortedMap with key-values that all extend from Number, interpolate using linear interpolation a value for a target key within the key-range of the map. For a key outside the range of the keys of the map, the outOfRange InterpolationLibrary.EOutOfRangeStrategy strategy will determine the interpolation behavior.
      Parameters:
      values - a sorted-map of key-value number pairs
      target - the target key used to interpolate a value
      outOfRangeStrategy - the strategy to use for a target key that outside the key-range of the value map
      Returns:
      an interpolated value for the target key
    • interpolate

      public static double interpolate(double[] keys, double[] values, double target, InterpolationLibrary.EOutOfRangeStrategy outOfRangeStrategy)
    • interpolate

      public static double interpolate(double[] keys, double[] values, double target, InterpolationLibrary.EOutOfRangeStrategy outOfRangeStrategy, InterpolationLibrary.EInRangeStrategy inRangeStrategy)
    • interpolatePair

      public static double interpolatePair(double fromValue, double toValue, double ratio)
      Simple numeric interpolation between two double values using the equation ratio * (toValue - fromValue) + fromValue
      Parameters:
      fromValue -
      toValue -
      ratio -
      Returns:
      ratio * (toValue - fromValue) + fromValue
    • interpolatePair

      public static double interpolatePair(double keyA, double valueA, double keyB, double valueB, double targetKey)
      Simple numeric interpolation between two pairs of key-values and a third key. Here, ratio = (targetKey - keyA) / (keyB - keyA) and the result is ratio * (valueB - valueA) + valueA.
      Returns:
      ratio * (toValue - fromValue) + fromValue
    • interpolate

      public static <KEY extends Number, VALUE, ANY_KEY extends KEY, ANY_VALUE extends VALUE> VALUE interpolate(InterpolationLibrary.InterpolationStrategy<KEY,VALUE> interpolationStrategy, InterpolationLibrary.EOutOfRangeStrategy outOfRangeStrategy, SortedMap<ANY_KEY,ANY_VALUE> values, ANY_KEY target)
      Given a SortedMap with key-values that of arbitrary type and a InterpolationLibrary.InterpolationStrategy to define interpolation over those types, interpolate a value for a target key within the key-range of the map. For a key outside the range of the keys of the map, the outOfRange InterpolationLibrary.EOutOfRangeStrategy strategy will determine the interpolation behavior.
      Parameters:
      interpolationStrategy - the interpolation strategy used to perform interpolation between key-value pairs of arbitrary type
      outOfRangeStrategy - the strategy to use for a target key that outside the key-range of the value map
      values - a sorted-map of key-value pairs
      target - the target key used to interpolate a value
      Returns:
      an interpolated value for the target key