// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.elevation; import java.util.Date; import java.util.List; import org.openstreetmap.josm.data.Bounds; import org.openstreetmap.josm.data.gpx.WayPoint; /** * @author Oliver Wieland <oliver.wieland@online.de> * Interface for an elevation profile providing special properties/values. */ public interface IElevationProfile { /** * Gets the name of the elevation profile. */ String getName(); /** * Gets the time stamp of first recorded track point. */ Date getStart(); /** * Gets the time stamp of last recorded track point. */ Date getEnd(); /** * Gets the minimum elevation height of all tracks and routes. */ int getMinHeight(); /** * Gets the maximum elevation height of all tracks and routes. */ int getMaxHeight(); /** * Gets the distance of the track in kilometers. */ double getDistance(); /** * Gets the average elevation height of all tracks and routes. */ int getAverageHeight(); /** * Gets the difference between min and max elevation. */ int getHeightDifference(); /** * Gets the elevation gain. * */ int getGain(); /** * Gets the total number of way points (sum of all way points of all tracks and routes). */ int getNumberOfWayPoints(); /** * Gets the list containing the way points. */ List<WayPoint> getWayPoints(); /** * Gets the first recorded way point. */ WayPoint getStartWayPoint(); /** * Gets the last recorded way point. */ WayPoint getEndWayPoint(); /** * Gets the way point with the highest elevation value. */ WayPoint getMaxWayPoint(); /** * Gets the way point with the lowest elevation value. */ WayPoint getMinWayPoint(); /** * Gets a flag indicating whether the associated way points * contained elevation data or not. This is the case if min * and max height are equal. */ boolean hasElevationData(); /** * Returns the time between start and end of the track. */ long getTimeDifference(); /** * Gets the elevation value for at the given data index point. */ int elevationValueAt(int i); /** * Gets the coordinate bounds of the elevation profile. * * @return the bounds */ Bounds getBounds(); /** * Gets the children of the segment (maybe null). */ List<IElevationProfile> getChildren(); /** * Gets the parent of the elevation profile. */ IElevationProfile getParent(); /** * Triggers model refresh. */ void updateElevationData(); }