001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.tools;
003
004import org.openstreetmap.josm.data.coor.LatLon;
005import org.openstreetmap.josm.data.osm.BBox;
006
007/**
008 * A method to look up a property of the earth surface.
009 * 
010 * User input for the {@link GeoPropertyIndex}.
011 * @param <T> the property
012 */
013public interface GeoProperty<T> {
014
015    /**
016     * Look up the property for a point.
017     * @param ll the point coordinates
018     * @return property value at that point. Must not be null.
019     */
020    T get(LatLon ll);
021
022    /**
023     * Look up the property for a coordinate rectangle.
024     * @param box the rectangle
025     * @return the property, if it is the same in the entire rectangle;
026     * null otherwise
027     */
028    T get(BBox box);
029
030}