package com.revolsys.geometry.filter;
import java.util.function.Predicate;
import com.revolsys.geometry.model.BoundingBox;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.geometry.model.LineString;
public class GeometryFilter {
public static <T extends Geometry> Predicate<T> intersects(final BoundingBox boundingBox) {
return (geometry) -> {
if (boundingBox == null || geometry == null) {
return false;
} else {
final BoundingBox geometryBoundingBox = geometry.getBoundingBox();
return boundingBox.intersects(geometryBoundingBox);
}
};
}
public static Predicate<LineString> lineContainedWithinTolerance(final LineString line,
final double maxDistance) {
return new LineContainsWithinToleranceFilter(line, maxDistance, true);
}
public static Predicate<LineString> lineContainsWithinTolerance(final LineString line,
final double maxDistance) {
return new LineContainsWithinToleranceFilter(line, maxDistance);
}
public static Predicate<LineString> lineWithinDistance(final LineString line,
final double maxDistance) {
return new LineStringLessThanDistanceFilter(line, maxDistance);
}
}