org.opengis.filter.FilterFactory2.between()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(14.4k)|赞(0)|评价(0)|浏览(169)

本文整理了Java中org.opengis.filter.FilterFactory2.between()方法的一些代码示例,展示了FilterFactory2.between()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。FilterFactory2.between()方法的具体详情如下:
包路径:org.opengis.filter.FilterFactory2
类名称:FilterFactory2
方法名:between

FilterFactory2.between介绍

暂无

代码示例

代码示例来源:origin: geotools/geotools

public Object visit(PropertyIsBetween filter, Object arg1) {
  Expression expression = filter.getExpression();
  Expression lower = filter.getLowerBoundary();
  Expression upper = filter.getUpperBoundary();
  List expressions = (List) expression.accept(this, null);
  List lowerExpressions = (List) lower.accept(this, null);
  List upperExpressions = (List) upper.accept(this, null);
  final int combinedSize =
      expressions.size() * lowerExpressions.size() * upperExpressions.size();
  List combinedFilters = new ArrayList(combinedSize);
  for (Iterator lowers = lowerExpressions.iterator(); lowers.hasNext(); ) {
    Expression floor = (Expression) lowers.next();
    for (Iterator exprs = expressions.iterator(); exprs.hasNext(); ) {
      Expression prop = (Expression) exprs.next();
      for (Iterator uppers = upperExpressions.iterator(); uppers.hasNext(); ) {
        Expression roof = (Expression) uppers.next();
        Filter newFilter = ff.between(prop, floor, roof, filter.getMatchAction());
        combinedFilters.add(newFilter);
      }
    }
  }
  Filter unrolled = combineOred(combinedFilters);
  return unrolled;
}

代码示例来源:origin: geotools/geotools

/**
 * @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 left = (Expression) value[1].getValue();
    Expression middle = (Expression) value[0].getValue();
    Expression right = (Expression) value[2].getValue();
    return factory.between(middle, left, right);
  } catch (ClassCastException expressionRequired) {
    throw new SAXException("Illegal filter for " + element, expressionRequired);
  } catch (IllegalFilterException e) {
    throw new SAXException("Illegal filter for " + element);
  }
}

代码示例来源:origin: geotools/geotools

/**
 * Test the between operator.
 *
 * @throws IllegalFilterException If the constructed filter is not valid.
 */
public void testBetween() throws IllegalFilterException {
  // Set up the integer
  Literal lower = fac.literal(1001);
  Literal upper = fac.literal(1003);
  PropertyName pint = fac.property("testInteger");
  PropertyName plong = fac.property("testLong");
  PropertyName pfloat = fac.property("testFloat");
  assertAttributeName(fac.between(lower, lower, upper), new String[0]);
  assertAttributeName(fac.between(pint, lower, upper), "testInteger");
  assertAttributeName(fac.between(pint, pint, pint), "testInteger");
  assertAttributeName(
      fac.between(pint, plong, pfloat),
      new String[] {"testInteger", "testLong", "testFloat"});
}

代码示例来源:origin: geotools/geotools

static PropertyIsBetween propertyIsBetween() {
  return f.between(f.property("foo"), f.literal(1), f.literal(2));
}

代码示例来源:origin: geotools/geotools

public Object visit(PropertyIsBetween filter, Object extraData) {
  Expression expr = visit(filter.getExpression(), extraData);
  Expression lower = visit(filter.getLowerBoundary(), extraData);
  Expression upper = visit(filter.getUpperBoundary(), extraData);
  return getFactory(extraData).between(expr, lower, upper, filter.getMatchAction());
}

代码示例来源:origin: geotools/geotools

public void testGeometryFilter() throws IllegalFilterException {
    Disjoint geomFilter1 = ff.disjoint(testExp1, testExp4);
    Disjoint geomFilter2 = ff.disjoint(testExp2, testExp4);
    assertTrue(geomFilter1.equals(geomFilter2));
    geomFilter2 = ff.disjoint(testExp2, new LiteralExpressionImpl(new Double(45)));
    assertTrue(!geomFilter1.equals(geomFilter2));
    tFilter1 = ff.between(ff.literal(1), ff.literal(-1), ff.literal(3));
    assertTrue(!geomFilter1.equals(tFilter1));
  }
}

代码示例来源:origin: geotools/geotools

public void testCompareFilter() throws IllegalFilterException {
  testExp1 = new LiteralExpressionImpl(Integer.valueOf(45));
  testExp2 = new LiteralExpressionImpl(Integer.valueOf(45));
  testExp3 = new AttributeExpressionImpl(testSchema, "testInteger");
  testExp4 = new AttributeExpressionImpl(testSchema, "testInteger");
  PropertyIsEqualTo cFilter1 = ff.equals(testExp1, testExp3);
  PropertyIsEqualTo cFilter2 = ff.equals(testExp1, testExp3);
  assertTrue(cFilter1.equals(cFilter2));
  cFilter2 = ff.equals(testExp2, testExp4);
  assertTrue(cFilter1.equals(cFilter2));
  // see if converters make this work
  cFilter2 = ff.equals(ff.literal(new Double(45.0)), testExp3);
  assertTrue(cFilter1.equals(cFilter2));
  tFilter1 = ff.between(testExp1, testExp2, testExp3);
  assertTrue(!cFilter1.equals(tFilter1));
}

代码示例来源:origin: geotools/geotools

@Test
public void testNonSpatialFilter() {
  Filter filter = ff.between(ff.property("someAtt"), ff.literal(2), ff.literal(4));
  SpatialIndexFeatureCollection collection = null;
  try {
    collection = new SpatialIndexFeatureCollection(delegate);
  } catch (IOException e) {
    LOGGER.log(Level.FINER, e.getMessage(), e);
  }
  SimpleFeatureCollection sub = collection.subCollection(filter);
  assertEquals(3, sub.size());
}

代码示例来源:origin: geotools/geotools

public void testBetweenStrings() throws IllegalFilterException {
  // Set up the integer
  Literal testLiteralLower = new LiteralExpressionImpl("blorg");
  PropertyName testAttribute = new AttributeExpressionImpl(testSchema, "testString");
  Literal testLiteralUpper = new LiteralExpressionImpl("tron");
  // String tests
  PropertyIsBetween filter = fac.between(testAttribute, testLiteralLower, testLiteralUpper);
  assertTrue(filter.evaluate(testFeature));
  // Test for false positive.
  testLiteralLower = new LiteralExpressionImpl("zebra");
  testLiteralUpper = new LiteralExpressionImpl("zikes");
  filter = fac.between(testAttribute, testLiteralLower, testLiteralUpper);
  assertFalse(filter.evaluate(testFeature));
}

代码示例来源:origin: geotools/geotools

public void testNullBetween() {
  Filter f = fac.between(fac.property("nullInt"), fac.literal(10), fac.literal(20));
  Assert.assertFalse(f.evaluate(testFeature));
}

代码示例来源:origin: geotools/geotools

@Override
public Object visit(PropertyIsBetween filter, Object extraData) {
  Class targetType =
      getTargetType(
          filter.getLowerBoundary(),
          filter.getExpression(),
          filter.getUpperBoundary());
  Expression lb = optimize(filter.getLowerBoundary(), extraData, targetType);
  Expression ex = optimize(filter.getExpression(), extraData, targetType);
  Expression ub = optimize(filter.getUpperBoundary(), extraData, targetType);
  return getFactory(extraData).between(ex, lb, ub, filter.getMatchAction());
}

代码示例来源:origin: geotools/geotools

/**
 * Test the between operator.
 *
 * @throws IllegalFilterException If the constructed filter is not valid.
 */
public void testBetween() throws IllegalFilterException {
  // Set up the integer
  Literal testLiteralLower = fac.literal(1001);
  PropertyName testAttribute = fac.property("testInteger");
  Literal testLiteralUpper = fac.literal(1003);
  // String tests
  PropertyIsBetween filter = fac.between(testAttribute, testLiteralLower, testLiteralUpper);
  assertTrue(filter.evaluate(testFeature));
  // Test for false positive.
  testLiteralLower = fac.literal(1);
  testLiteralUpper = fac.literal(1000);
  filter = fac.between(testAttribute, testLiteralLower, testLiteralUpper);
  // LOGGER.finer( filter.toString());
  // LOGGER.finer( "contains feature: " + filter.evaluate(testFeature));
  assertFalse(filter.evaluate(testFeature));
}

代码示例来源:origin: geotools/geotools

public void testLogicFilter() throws IllegalFilterException {
  testExp1 = new LiteralExpressionImpl(Integer.valueOf(45));
  testExp2 = new LiteralExpressionImpl(Integer.valueOf(45));
  testExp3 = new AttributeExpressionImpl(testSchema, "testInteger");
  testExp4 = new AttributeExpressionImpl(testSchema, "testInteger");
  PropertyIsEqualTo cFilter1 = ff.equals(testExp1, testExp2);
  PropertyIsEqualTo cFilter2 = ff.equals(testExp2, testExp4);
  org.opengis.filter.Filter logFilter1 = ff.and(cFilter1, cFilter2);
  org.opengis.filter.Filter logFilter2 = ff.and(cFilter1, cFilter2);
  assertTrue(logFilter1.equals(logFilter2));
  logFilter1 = ff.not(cFilter2);
  assertTrue(!logFilter1.equals(logFilter2));
  cFilter1 = ff.equals(testExp1, testExp3);
  logFilter2 = ff.not(cFilter1);
  assertTrue(logFilter1.equals(logFilter2));
  assertTrue(!logFilter1.equals(ff.between(testExp1, testExp2, testExp3)));
  Or logFilter3 = ff.or(logFilter1, logFilter2);
  Or logFilter4 = ff.or(logFilter1, logFilter2);
  assertTrue(logFilter3.equals(logFilter4));
  // Questionable behavior.  Is this what we want?
  Or logFilter5 = ff.or(cFilter1, logFilter3);
  // does not change structure of logFilter3
  Or logFilter6 = ff.or(logFilter4, cFilter1);
  // different structure, but same result
  assertTrue(logFilter5.equals(logFilter6)); // do we want these equal?
  assertTrue(logFilter4.equals(logFilter3)); // shouldn't they be equal?
}

代码示例来源:origin: geotools/geotools

@Test
public void testBetween() {
  PropertyIsBetween between =
      ff.between(ff.property("a"), ff.property("b"), ff.property("c"));
  NullHandlingVisitor visitor = new NullHandlingVisitor();
  Filter result = (Filter) between.accept(visitor, null);
  assertTrue(result instanceof And);
  Filter expected =
      ff.and(
          Arrays.asList(
              between,
              propertyNotNull("a"),
              propertyNotNull("b"),
              propertyNotNull("c")));
  assertEquals(expected, result);
  between = ff.between(ff.property("a"), ff.property("b"), ff.literal(10));
  result = (Filter) between.accept(visitor, null);
  assertTrue(result instanceof And);
  expected = ff.and(Arrays.asList(between, propertyNotNull("a"), propertyNotNull("b")));
  assertEquals(expected, result);
  between = ff.between(ff.property("a"), ff.literal(5), ff.literal(10));
  result = (Filter) between.accept(visitor, null);
  assertTrue(result instanceof And);
  expected = ff.and(Arrays.asList(between, propertyNotNull("a")));
  assertEquals(expected, result);
  between = ff.between(ff.literal(7), ff.literal(5), ff.literal(10));
  result = (Filter) between.accept(visitor, null);
  assertEquals(between, result);
}

代码示例来源:origin: geotools/geotools

@Test
public void testAndTemporalBetween() throws Exception {
  final Instant start = instant("2016-01-01T00:00:00.000-0500");
  final Instant end = instant("2106-01-02T00:00:00.000-0500");
  final Filter f =
      ff.and(
          ff.bbox("geom", -10, -10, 10, 10, null),
          ff.between(ff.literal("someDate"), ff.literal(start), ff.literal(end)));
  final Envelope env = (Envelope) f.accept(visitor, null);
  assertEquals(new Envelope(-10, 10, -10, 10), env);
}

代码示例来源:origin: geotools/geotools

@Test
public void testBetweenFilter() throws Exception {
  PropertyIsBetween bf =
      ff.between(
          ff.property("measurement/result"),
          ff.literal(1),
          ff.literal(2),
          MatchAction.ALL);
  PropertyIsBetween unrolled = (PropertyIsBetween) bf.accept(visitor, null);
  assertEquals(MatchAction.ALL, ((PropertyIsBetween) unrolled).getMatchAction());
  Expression att = unrolled.getExpression();
  assertTrue(att instanceof PropertyName);
  String propertyName = ((PropertyName) att).getPropertyName();
  assertEquals("results_value", propertyName);
}

代码示例来源:origin: geotools/geotools

public void testFullySupports() {
    FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2();
    try {
      logFilter = ff.and(gFilter, compFilter);
      assertTrue(capabilities.fullySupports(compFilter));
      assertTrue(!(capabilities.fullySupports(gFilter)));
      assertTrue(!(capabilities.fullySupports(logFilter)));
      logFilter =
          ff.and(
              compFilter,
              ff.between(ff.property("sample"), ff.literal(1), ff.literal(2)));
      assertTrue(capabilities.fullySupports(logFilter));
      logFilter =
          ff.or(
              logFilter,
              ff.between(ff.property("sample"), ff.literal(1), ff.literal(2)));
      assertTrue(capabilities.fullySupports(logFilter));
      logFilter = ff.and(logFilter, gFilter);
      assertTrue(!(capabilities.fullySupports(logFilter)));
    } catch (IllegalFilterException e) {
      LOGGER.fine("Bad filter " + e);
    }
  }
}

代码示例来源:origin: geotools/geotools

@Test
public void testSimplifyRedundant() {
  PropertyIsBetween between =
      ff.between(ff.property("a"), ff.property("b"), ff.property("c"));
  PropertyIsEqualTo equal = ff.equal(ff.property("a"), ff.property("b"), false);
  And and = ff.and(between, equal);
  NullHandlingVisitor nh = new NullHandlingVisitor();
  Filter nhResult = (Filter) and.accept(nh, null);
  SimplifyingFilterVisitor simplifier = new SimplifyingFilterVisitor();
  Filter simplified = (Filter) nhResult.accept(simplifier, null);
  assertTrue(simplified instanceof And);
  Filter expected =
      ff.and(
          Arrays.asList(
              between,
              equal,
              propertyNotNull("a"),
              propertyNotNull("b"),
              propertyNotNull("c")));
  assertEquals(expected, simplified);
}

代码示例来源:origin: geotools/geotools

@Test
public void testNullableAttributes() {
  SimpleFeatureTypeBuilder tb = new SimpleFeatureTypeBuilder();
  tb.nillable(true);
  tb.add("a", String.class);
  tb.nillable(false);
  tb.add("b", String.class);
  tb.nillable(true);
  tb.add("c", String.class);
  tb.setName("test");
  SimpleFeatureType schema = tb.buildFeatureType();
  PropertyIsBetween between =
      ff.between(ff.property("a"), ff.property("b"), ff.property("c"));
  NullHandlingVisitor visitor = new NullHandlingVisitor(schema);
  Filter result = (Filter) between.accept(visitor, null);
  assertTrue(result instanceof And);
  Filter expected =
      ff.and(Arrays.asList(between, propertyNotNull("a"), propertyNotNull("c")));
  assertEquals(expected, result);
}

代码示例来源:origin: geotools/geotools

public void testCapablities() {
  Capabilities capabilities = new Capabilities();
  capabilities.addType(Beyond.class); // add to SpatialCapabilities
  capabilities.addType(After.class); // add to TemporalCapabilities
  capabilities.addType(PropertyIsEqualTo.class); // add to ScalarCapabilities
  capabilities.addName("NullCheck"); // will enable PropertyIsNull use
  capabilities.addName("Mul"); // will enable hasSimpleArithmatic
  capabilities.addName("random"); // a function returning a random number
  capabilities.addName("Length", 1); // single argument function
  capabilities.addName("toDegrees", "radians"); // single argument function
  capabilities.addName("length", "expression");
  FilterFactory2 ff = CommonFactoryFinder.getFilterFactory2(null);
  Filter filter = ff.between(ff.literal(0), ff.property("x"), ff.literal(2));
  assertFalse("supports", capabilities.supports(filter));
  filter = ff.equals(ff.property("x"), ff.literal(2));
  assertTrue("supports", capabilities.supports(filter));
  filter = ff.after(ff.property("x"), ff.literal("1970-01-01 00:00:00"));
  assertTrue("supports", capabilities.supports(filter));
  assertTrue("fullySupports", capabilities.fullySupports(filter));
  Capabilities capabilities2 = new Capabilities();
  capabilities2.addAll(capabilities);
  capabilities2.addType(And.class);
  assertTrue(capabilities2.getContents().getScalarCapabilities().hasLogicalOperators());
  assertFalse(capabilities.getContents().getScalarCapabilities().hasLogicalOperators());
}

相关文章