org.geotools.filter
Class CartesianDistanceFilter

Object
  extended by FilterAbstract
      extended by AbstractFilter
          extended by BinaryComparisonAbstract
              extended by GeometryFilterImpl
                  extended by CartesianDistanceFilter
All Implemented Interfaces:
FilterType, GeometryDistanceFilter, GeometryFilter, BinaryComparisonOperator, Filter, MultiValuedFilter, BinarySpatialOperator, DistanceBufferOperator, SpatialOperator
Direct Known Subclasses:
BeyondImpl, DWithinImpl

public abstract 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.

Author:
Chris Holmes, TOPP
TODO:
REVISIT: add units for distance.

Nested Class Summary
 
Nested classes/interfaces inherited from interface MultiValuedFilter
MultiValuedFilter.MatchAction
 
Field Summary
 
Fields inherited from class GeometryFilterImpl
matchAction
 
Fields inherited from class BinaryComparisonAbstract
expression1, expression2
 
Fields inherited from class AbstractFilter
filterType, permissiveConstruction
 
Fields inherited from class FilterAbstract
factory
 
Fields inherited from interface Filter
ALL, NONE
 
Fields inherited from interface 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
 
Fields inherited from interface Filter
EXCLUDE, INCLUDE
 
Constructor Summary
protected CartesianDistanceFilter(FilterFactory factory)
           
protected CartesianDistanceFilter(FilterFactory factory, Expression e1, Expression e2)
           
protected CartesianDistanceFilter(FilterFactory factory, Expression e1, Expression e2, MultiValuedFilter.MatchAction matchAction)
           
protected CartesianDistanceFilter(short filterType)
          Constructor which flags the operator as between.
 
Method Summary
 boolean equals(Object oFilter)
          Returns true if the passed in object is the same as this filter.
 double getDistance()
          Gets the distance allowed by this filter.
 String getDistanceUnits()
          Gets the units of measure that can be used to interpret the distance value held by this object.
 int hashCode()
          Override of hashCode method.
 void setDistance(double distance)
          Sets the distance allowed by this filter.
 void setUnits(String units)
           
 String toString()
          Returns a string representation of this filter.
 
Methods inherited from class GeometryFilterImpl
addLeftGeometry, addRightGeometry, evaluate, evaluate, evaluateInternal, getGeometries, getLeftGeometry, getLeftGeometry, getMatchAction, getRightGeometry, getRightGeometry, setExpression1, setExpression2
 
Methods inherited from class BinaryComparisonAbstract
and, comparable, eval, eval, getExpression1, getExpression2, isMatchingCase, not, or
 
Methods inherited from class AbstractFilter
accept, contains, getFilterType, isCompareFilter, isGeometryDistanceFilter, isGeometryFilter, isLogicFilter, isMathFilter, isSimpleFilter
 
Methods inherited from class FilterAbstract
accept, accepts, eval, eval, eval
 
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface GeometryDistanceFilter
contains
 
Methods inherited from interface GeometryFilter
addLeftGeometry, addRightGeometry, getLeftGeometry, getRightGeometry
 
Methods inherited from interface Filter
accept, and, evaluate, getFilterType, not, or
 
Methods inherited from interface BinarySpatialOperator
getExpression1, getExpression2
 
Methods inherited from interface MultiValuedFilter
getMatchAction
 
Methods inherited from interface Filter
accept, evaluate
 

Constructor Detail

CartesianDistanceFilter

protected CartesianDistanceFilter(FilterFactory factory)

CartesianDistanceFilter

protected CartesianDistanceFilter(FilterFactory factory,
                                  Expression e1,
                                  Expression e2)

CartesianDistanceFilter

protected CartesianDistanceFilter(FilterFactory factory,
                                  Expression e1,
                                  Expression e2,
                                  MultiValuedFilter.MatchAction matchAction)

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
Specified by:
getDistance in interface DistanceBufferOperator
Returns:
distance the length beyond which this filter is valid or not.

getDistanceUnits

public String getDistanceUnits()
Description copied from interface: DistanceBufferOperator
Gets the units of measure that can be used to interpret the distance value held by this object. An implementation may throw an exception if these units differ from the units of the coordinate system of its geometry or the feature's geometry.

Specified by:
getDistanceUnits in interface DistanceBufferOperator

setUnits

public void setUnits(String units)

toString

public 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(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.


Copyright © 1996-2014 Geotools. All Rights Reserved.