Class STArealPolygonInterpolator

  • All Implemented Interfaces:
    IInterpolator

    public class STArealPolygonInterpolator
    extends BaseInterpolation
    implements IInterpolator
    The method being implemented is from the polygon interpolation methods described in Boubrahimi et. al, 2018.
    Author:
    Original Soukaina Filali Boubrahimi, refactored by Dustin Kempton, Data Mining Lab, Georgia State University
    • Constructor Detail

      • STArealPolygonInterpolator

        public STArealPolygonInterpolator​(IInterpolationFactory factory,
                                          ITemporalAligner aligner,
                                          IGeometryValidator multipolyValidator,
                                          IGeometryValidator simplifyValidator,
                                          org.joda.time.Duration step,
                                          double areaBufferDistance)
        Constructor for the Areal Polygon Interpolator method.
        Parameters:
        factory - The factory object used to create new event and trajectory objects that are returned as results
        aligner - The temporal aligner that adjusts the start and end time of event reports to be some integer multiple of a step size away from an epoch
        multipolyValidator - The polygon validator object that cleans up the interpolated polygons, mostly used for complex geometry objects that may contain multiple polygons
        simplifyValidator - A simple polygon validator that is really only used to verify that the points in the polygon are listed in counter clockwise order and are a minimum distance from each other, otherwise they are removed to simplify the polygon input
        step - The temporal step size between interpolated polygons
        areaBufferDistance - The buffer that is added to input polygons to perform a simple interpolation action, the larger the value the less similar the interpolated polygon will be to the original. The value must be a positive value, greater than zero. The default used previously was 1.5, so that might be a good place to start.
    • Method Detail

      • interpolateTrajectory

        public ISTInterpolationTrajectory interpolateTrajectory​(ISTInterpolationTrajectory inTrajectory)
        Description copied from class: BaseInterpolation
        Interpolates new event reports between the reports contained within the input trajectory and returns a new trajectory object with the new data. The original event reports are copied and temporally aligned with a epoch and a set cadence rate. The original trajectory shall remain unedited.
        Specified by:
        interpolateTrajectory in interface IInterpolator
        Overrides:
        interpolateTrajectory in class BaseInterpolation
        Parameters:
        inTrajectory - The input trajectory that is to be interpolated.
        Returns:
        An interpolated trajectory that is a representation of the input if it had reports at the desired cadence rate.
      • interpolateBetween

        public List<ISTInterpolationEvent> interpolateBetween​(ISTInterpolationEvent first,
                                                              ISTInterpolationEvent second)
        Description copied from class: BaseInterpolation
        Interpolates new event reports between the two reports that are passed in and returns a list of the interpolated polygon representations. The original event reports are copied to be the first and last elements in the returned list. They are also temporally aligned with an epoch and a set cadence rate. The original objects shall remain unedited.
        Specified by:
        interpolateBetween in interface IInterpolator
        Overrides:
        interpolateBetween in class BaseInterpolation
        Parameters:
        first - The first element to interpolate between
        second - The end element to interpolate between
        Returns:
        A list of interpolated polygon objects between the two input objects
      • interpolateBeforeAtTime

        public ISTInterpolationEvent interpolateBeforeAtTime​(ISTInterpolationEvent ev,
                                                             org.joda.time.DateTime dateTime)
        Description copied from interface: IInterpolator
        Interpolates a new event report at a specified time using a default movement rate as the method to determine where the input event would be at the given time. The original event is assumed to be at the time period it is supposed to be, and therefore does not have its time stamp adjusted prior to interpolation. The original object remains unmodified and only a new event is returned at the interpolated time.
        Specified by:
        interpolateBeforeAtTime in interface IInterpolator
        Parameters:
        ev - The event to apply an interpolation method to
        dateTime - The date and time of the object report to be interpolated. This time must be prior to the date and time of the input event. Otherwise an exception is thrown.
        Returns:
        An object that is at an interpolated point prior to the input event.
      • interpolateAfterAtTime

        public ISTInterpolationEvent interpolateAfterAtTime​(ISTInterpolationEvent ev,
                                                            org.joda.time.DateTime dateTime)
        Description copied from interface: IInterpolator
        Interpolates a new event report at a specified time using a default movement rate as the method to determine where the input event would be at the given time. The original event is assumed to be at the time period it is supposed to be, and therefore does not have its time stamp adjusted prior to interpolation. The original object remains unmodified and only a new event is returned at the interpolated time.
        Specified by:
        interpolateAfterAtTime in interface IInterpolator
        Parameters:
        ev - The event to apply an interpolation method to
        dateTime - The date and time of the object report to be interpolated. This time must be after the date and time of the input event. Otherwise an exception is thrown.
        Returns:
        An object that is at an interpolated point after the input event.
      • interpolateAtTime

        public ISTInterpolationEvent interpolateAtTime​(ISTInterpolationEvent first,
                                                       ISTInterpolationEvent second,
                                                       org.joda.time.DateTime dateTime)
        Description copied from interface: IInterpolator
        Interpolates a new event report at a specified time. The original event reports are assumed to be at the time period they are supposed to be, and therefore there is not any adjustment made to their time stamp prior to interpolation. The original objects remain unmodified and only a new event is returned at the interpolated time.
        Specified by:
        interpolateAtTime in interface IInterpolator
        Parameters:
        first - The first element to interpolate between
        second - The second element to interpolate between
        dateTime - The date and time of the object report to be interpolated
        Returns:
        An object that is at an interpolated point between the inputs
      • createInterpolatedSTEvent

        protected ISTInterpolationEvent createInterpolatedSTEvent​(org.joda.time.DateTime startTime,
                                                                  org.joda.time.DateTime endTime,
                                                                  EventType type,
                                                                  org.locationtech.jts.geom.Coordinate[] i_coordinates)
        Description copied from class: BaseInterpolation
        This method is used to produce and verify the polygon of an event with the input data.
        Specified by:
        createInterpolatedSTEvent in class BaseInterpolation
        Parameters:
        startTime - The start time of the event
        endTime - The end time of the event
        type - The type of the event
        i_coordinates - The coordinates of the polygon to use in the event
        Returns: