01: /*
02: * GeoTools - OpenSource mapping toolkit
03: * http://geotools.org
04: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation;
09: * version 2.1 of the License.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: */
16: package org.geotools.filter;
17:
18: import org.opengis.filter.spatial.DistanceBufferOperator;
19: import org.geotools.feature.Feature;
20:
21: /**
22: * Defines geometry filters with a distance element.
23: *
24: * <p>
25: * These filters are defined in the filter spec by the DistanceBufferType,
26: * which contains an additioinal field for a distance. The two filters that
27: * use the distance buffer type are Beyond and DWithin.
28: * </p>
29: *
30: * <p>
31: * From the spec: The spatial operators DWithin and Beyond test whether the
32: * value of a geometric property is within or beyond a specified distance of
33: * the specified literal geometric value. Distance values are expressed using
34: * the Distance element.
35: * </p>
36: *
37: * <p>
38: * For now this code does not take into account the units of distance, we will
39: * assume that the filter units are the same as the geometry being filtered.
40: * </p>
41: *
42: * <p></p>
43: *
44: * @author Chris Holmes, TOPP
45: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/library/api/src/main/java/org/geotools/filter/GeometryDistanceFilter.java $
46: * @version $Id: GeometryDistanceFilter.java 22294 2006-10-20 00:55:40Z desruisseaux $
47: *
48: * @task REVISIT: add units for distance. Should it just be a string? Or
49: * should it actually resolve the definition?
50: *
51: * @deprecated use {@link org.opengis.filter.spatial.DistanceBufferOperator}
52: *
53: */
54: public interface GeometryDistanceFilter extends GeometryFilter,
55: DistanceBufferOperator {
56: /**
57: * Returns true if the passed in object is the same as this filter. Checks
58: * to make sure the filter types are the same as well as all three of the
59: * values.
60: *
61: * @param obj The filter to test equality against.
62: *
63: * @return True if the objects are equal.
64: */
65: boolean equals(Object obj);
66:
67: /**
68: * Sets the distance allowed by this filter.
69: *
70: * @param distance the length beyond which this filter is valid or not.
71: *
72: * @throws IllegalFilterException for problems setting the distance.
73: */
74: void setDistance(double distance) throws IllegalFilterException;
75:
76: /**
77: * Determines whether or not a given feature is 'inside' this filter.
78: *
79: * @param feature Specified feature to examine.
80: *
81: * @return Flag confirming whether or not this feature is inside the
82: * filter.
83: *
84: * @deprecated use {@link org.opengis.filter.Filter#evaluate(Feature)}
85: *
86: */
87: boolean contains(Feature feature);
88:
89: /**
90: * Gets the distance allowed by this filter.
91: *
92: * @return distance the length beyond which this filter is valid or not.
93: *
94: * @deprecated use {@link DistanceBufferOperator#getDistance()}
95: */
96: double getDistance();
97: }
|