Object cloneFilter( BinarySpatialOperator bso, Object extraData, Expression ex1, Expression ex2) { Beyond filter = (Beyond) bso; return ff.beyond(ex1, ex2, filter.getDistance(), filter.getDistanceUnits()); } }.transform(filter, extraData);
/** * * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated modifiable */ public Object parse(ElementInstance instance, Node node, Object value) throws Exception { Expression[] operands = OGCUtils.spatial(node, filterFactory, geometryFactory); double distance = ((Double) node.getChildValue(Double.class)).doubleValue(); Object units = node.getChild("Distance").getAttributeValue("units"); return filterFactory.beyond( operands[0], operands[1], distance, units == null ? null : units.toString()); } }
@Override public Filter replaceExpressions( Beyond filter, Expression expression1, Expression expression2) { return ff.beyond( expression1, expression2, filter.getDistance(), filter.getDistanceUnits(), filter.getMatchAction()); } });
/** * @throws SAXException * @see org.geotools.xml.schema.Type#getValue(org.geotools.xml.schema.Element, * org.geotools.xml.schema.ElementValue[], org.xml.sax.Attributes, java.util.Map) */ public Object getValue(Element element, ElementValue[] value, Attributes attrs, Map hints) throws SAXException { FilterFactory2 factory = FilterSchema.filterFactory(hints); try { Expression geometry1 = (Expression) value[0].getValue(); Expression geometry2 = (Expression) value[1].getValue(); Literal literal = (Literal) value[2]; double distance = ((Number) literal.getValue()).doubleValue(); return factory.beyond(geometry1, geometry2, distance, null); } catch (ClassCastException wrong) { throw new SAXException(wrong); } catch (IllegalFilterException illegalFilterException) { throw new SAXException(illegalFilterException); } }
public Object visit(Beyond filter, Object arg1) { Expression[][] exps = visitBinarySpatialOp(filter); List combinedFilters = new ArrayList(exps.length); for (int i = 0; i < exps.length; i++) { Expression left = exps[i][0]; Expression right = exps[i][1]; Filter unrolled = ff.beyond( left, right, filter.getDistance(), filter.getDistanceUnits(), filter.getMatchAction()); combinedFilters.add(unrolled); } Filter unrolled = combineOred(combinedFilters); return unrolled; }
public DistanceBufferOperator buildSpatialBeyondFilter() throws CQLException { String unit = this.resultStack.popStringValue(); double tolerance = this.resultStack.popDoubleValue(); Expression geom = this.resultStack.popExpression(); Expression property = this.resultStack.popExpression(); FilterFactory2 ff = (FilterFactory2) filterFactory; // TODO this cast must be removed. It depends of Geometry // implementation return ff.beyond(property, geom, tolerance, unit); }
if (value.getAttributes().getNamedItem("units") != null) units = value.getAttributes().getNamedItem("units").getTextContent(); return FILTER_FACT.beyond(left, right, distance, units);
static Beyond beyond() { return f.beyond(f.property("the_geom"), f.literal(geometry()), 1.0d, "m"); }
public static Beyond beyond() { return f.beyond(f.property("the_geom"), f.literal(geometry()), 1.0d, "m"); }
public Object visit(Beyond filter, Object extraData) { Expression geometry1 = visit(filter.getExpression1(), extraData); Expression geometry2 = visit(filter.getExpression2(), extraData); double distance = filter.getDistance(); String units = filter.getDistanceUnits(); return getFactory(extraData) .beyond(geometry1, geometry2, distance, units, filter.getMatchAction()); }
Filter filter = fac.beyond(property, literal, 5, "x", MatchAction.ANY); Filter expected = fac.or( new ArrayList<Filter>( Arrays.asList( fac.beyond(property, literal1, 5, "x", MatchAction.ANY), fac.beyond(property, literal2, 5, "x", MatchAction.ANY), fac.beyond(property, literal3, 5, "x", MatchAction.ANY)))); filter = fac.beyond(property, literal, 5, "x", MatchAction.ALL); expected = fac.and( new ArrayList<Filter>( Arrays.asList( fac.beyond(property, literal1, 5, "x", MatchAction.ANY), fac.beyond(property, literal2, 5, "x", MatchAction.ANY), fac.beyond(property, literal3, 5, "x", MatchAction.ANY)))); filter = fac.beyond(property, literal, 5, "x", MatchAction.ONE); expected = fac.or( new ArrayList<Filter>( Arrays.asList( fac.beyond( property, literal1, MatchAction.ONE),
new LiteralExpressionImpl(gf.createPolygon(gf.createLinearRing(coords2), null)); Beyond filter = fac.beyond(left, right, 20, "m"); LOGGER.finer(filter.toString()); LOGGER.finer("contains feature: " + filter.evaluate(testFeature)); assertFalse(filter.evaluate(testFeature)); filter = fac.beyond(left, right, 2, "m"); LOGGER.finer("contains feature: " + filter.evaluate(testFeature)); assertTrue(filter.evaluate(testFeature)); coords2[4] = new Coordinate(20, 20); right = fac.literal(gf.createPolygon(gf.createLinearRing(coords2), null)); filter = fac.beyond(left, right, 2, "m"); LOGGER.finer(filter.toString()); LOGGER.finer("contains feature: " + filter.evaluate(testFeature)); filter = fac.beyond(left, right, 2, "m"); LOGGER.finer(filter.toString()); LOGGER.finer("contains feature: " + filter.evaluate(testFeature));
private void assertBeyondFilter(int expectedMatches, double distance, String unit) throws IOException { FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null); final PropertyName geomProperty = ff.property(aname("geometry")); final ContentFeatureSource features = dataStore.getFeatureSource(tname("ft1")); // too short distance Beyond filter = ff.beyond(geomProperty, ff.literal(REFERENCE_POINT), distance, unit); FeatureCollection fc = features.getFeatures(filter); assertEquals(expectedMatches, fc.size()); } }
@Test public void testBeyond() { Coordinate[] coords = new Coordinate[] {new Coordinate(0, 0), new Coordinate(10, 10)}; LineString lineString = new GeometryFactory().createLineString(coords); Filter filter = ff.beyond(ff.property("name"), ff.literal(lineString), 100, "m"); Envelope env = (Envelope) filter.accept(visitor, null); assertEquals(infinity, env); }
@Test public void testNotBeyond() { Coordinate[] coords = new Coordinate[] {new Coordinate(0, 0), new Coordinate(10, 10)}; LineString lineString = new GeometryFactory().createLineString(coords); Filter filter = ff.beyond(ff.property("name"), ff.literal(lineString), 100, "m"); Envelope env = (Envelope) filter.accept(visitor, null); // the thing is not so smart to assess that not(beyond) -> within, but we have to make // sure that at least the returned envelope contains the real one assertEquals(infinity, env); }
Object cloneFilter(BinarySpatialOperator bso, Object extraData, Expression ex1, Expression ex2) { Beyond filter = (Beyond) bso; return ff.beyond(ex1, ex2, filter.getDistance(), filter.getDistanceUnits()); } }.transform(filter, extraData);
@Override public Filter[] visit(Beyond filter, Object extraData) { return boundedOp(filter, (g1, g2) -> ff.beyond(g1, g2, filter.getDistance(), filter.getDistanceUnits()), false); }
public Object visit(Beyond filter, Object extraData) { Expression geometry1= visit(filter.getExpression1(), extraData); Expression geometry2= visit(filter.getExpression2(), extraData); double distance=filter.getDistance(); String units=filter.getDistanceUnits(); return getFactory(extraData).beyond(geometry1, geometry2, distance, units); }
public Object visit(Beyond filter, Object extraData) { Expression geometry1 = visitBinaryChild(filter.getExpression1(), extraData, 0); Expression geometry2 = visitBinaryChild(filter.getExpression2(), extraData, 1); double distance = filter.getDistance(); String units = filter.getDistanceUnits(); return getFactory(extraData) .beyond(geometry1, geometry2, distance, units, filter.getMatchAction()); }
filter = fac.beyond(expr1, expr2, 0.1, ""); assertEquals(filter.getMatchAction(), MatchAction.ANY); filter = fac.beyond(expr1, expr2, 0.1, ""); assertEquals(filter.getMatchAction(), MatchAction.ANY); filter = fac.contains(expr1, expr2); filter = fac.beyond(expr1, expr2, 0.1, "", MatchAction.ALL); assertEquals(filter.getMatchAction(), MatchAction.ALL); filter = fac.beyond(expr1, expr2, 0.1, "", MatchAction.ONE); assertEquals(filter.getMatchAction(), MatchAction.ONE); filter = fac.contains(expr1, expr2, MatchAction.ALL);