org.geotools.filter
Class CartesianDistanceFilter

java.lang.Object
  extended byorg.geotools.filter.AbstractFilter
      extended byorg.geotools.filter.AbstractFilterImpl
          extended byorg.geotools.filter.GeometryFilterImpl
              extended byorg.geotools.filter.CartesianDistanceFilter
All Implemented Interfaces:
Filter, FilterType, GeometryDistanceFilter, GeometryFilter

public class CartesianDistanceFilter
extends GeometryFilterImpl
implements GeometryDistanceFilter

Defines geometry filters with a distance element.

These filters are defined in the filter spec by the DistanceBufferType, which contains an additioinal field for a distance. The two filters that use the distance buffer type are Beyond and DWithin.

From the spec: The spatial operators DWithin and Beyond test whether the value of a geometric property is within or beyond a specified distance of the specified literal geometric value. Distance values are expressed using the Distance element.

For now this code does not take into account the units of distance, we will assume that the filter units are the same as the geometry being filtered, and that they are cartesian.

Version:
$Id: CartesianDistanceFilter.java,v 1.3 2003/07/23 16:14:31 cholmesny Exp $
Author:
Chris Holmes, TOPP
Task:
REVISIT: add units for distance.

Field Summary
 
Fields inherited from class org.geotools.filter.GeometryFilterImpl
leftGeometry, rightGeometry
 
Fields inherited from class org.geotools.filter.AbstractFilter
filterType, permissiveConstruction
 
Fields inherited from interface org.geotools.filter.Filter
ALL, NONE
 
Fields inherited from interface org.geotools.filter.FilterType
BETWEEN, COMPARE_EQUALS, COMPARE_GREATER_THAN, COMPARE_GREATER_THAN_EQUAL, COMPARE_LESS_THAN, COMPARE_LESS_THAN_EQUAL, COMPARE_NOT_EQUALS, FID, GEOMETRY_BBOX, GEOMETRY_BEYOND, GEOMETRY_CONTAINS, GEOMETRY_CROSSES, GEOMETRY_DISJOINT, GEOMETRY_DWITHIN, GEOMETRY_EQUALS, GEOMETRY_INTERSECTS, GEOMETRY_OVERLAPS, GEOMETRY_TOUCHES, GEOMETRY_WITHIN, LIKE, LOGIC_AND, LOGIC_NOT, LOGIC_OR, NULL
 
Constructor Summary
protected CartesianDistanceFilter(short filterType)
          Constructor which flags the operator as between.
 
Method Summary
 void accept(FilterVisitor visitor)
          Used by FilterVisitors to perform some action on this filter instance.
 boolean contains(Feature feature)
          Determines whether or not a given feature is 'inside' this filter.
 boolean equals(java.lang.Object oFilter)
          Returns true if the passed in object is the same as this filter.
 double getDistance()
          Gets the distance allowed by this filter.
 int hashCode()
          Override of hashCode method.
 void setDistance(double distance)
          Sets the distance allowed by this filter.
 java.lang.String toString()
          Returns a string representation of this filter.
 
Methods inherited from class org.geotools.filter.GeometryFilterImpl
addLeftGeometry, addRightGeometry, getLeftGeometry, getRightGeometry
 
Methods inherited from class org.geotools.filter.AbstractFilterImpl
and, not, or
 
Methods inherited from class org.geotools.filter.AbstractFilter
getFilterType, isCompareFilter, isGeometryDistanceFilter, isGeometryFilter, isLogicFilter, isMathFilter, isSimpleFilter
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.geotools.filter.GeometryFilter
addLeftGeometry, addRightGeometry, getLeftGeometry, getRightGeometry
 
Methods inherited from interface org.geotools.filter.Filter
and, getFilterType, not, or
 

Constructor Detail

CartesianDistanceFilter

protected CartesianDistanceFilter(short filterType)
                           throws IllegalFilterException
Constructor which flags the operator as between.

Parameters:
filterType - The type of filter to create - dwithin and beyond are allowed.
Throws:
IllegalFilterException - If a filter other than dwithin or beyond is attempted.
Method Detail

setDistance

public void setDistance(double distance)
Sets the distance allowed by this filter.

Specified by:
setDistance in interface GeometryDistanceFilter
Parameters:
distance - the length beyond which this filter is valid or not.

getDistance

public double getDistance()
Gets the distance allowed by this filter.

Specified by:
getDistance in interface GeometryDistanceFilter
Returns:
distance the length beyond which this filter is valid or not.

contains

public boolean contains(Feature feature)
Determines whether or not a given feature is 'inside' this filter.

Specified by:
contains in interface GeometryDistanceFilter
Overrides:
contains in class GeometryFilterImpl
Parameters:
feature - Specified feature to examine.
Returns:
Flag confirming whether or not this feature is inside the filter.

toString

public java.lang.String toString()
Returns a string representation of this filter.

Overrides:
toString in class GeometryFilterImpl
Returns:
String representation of the between filter.

equals

public boolean equals(java.lang.Object oFilter)
Returns true if the passed in object is the same as this filter. Checks to make sure the filter types are the same as well as all three of the values.

Specified by:
equals in interface GeometryDistanceFilter
Overrides:
equals in class GeometryFilterImpl
Parameters:
oFilter - The filter to test equality against.
Returns:
True if the objects are equal.

hashCode

public int hashCode()
Override of hashCode method.

Overrides:
hashCode in class GeometryFilterImpl
Returns:
a code to hash this object by.

accept

public void accept(FilterVisitor visitor)
Used by FilterVisitors to perform some action on this filter instance. Typicaly used by Filter decoders, but may also be used by any thing which needs infomration from filter structure. Implementations should always call: visitor.visit(this); It is importatant that this is not left to a parent class unless the parents API is identical.

Specified by:
accept in interface Filter
Overrides:
accept in class GeometryFilterImpl
Parameters:
visitor - The visitor which requires access to this filter, the method must call visitor.visit(this);


Copyright © GeoTools. All Rights Reserved.