public void testBBOX() throws Exception { // JE: this test fails but I am not sure if it is a bug or expected behaviour // I wrote this test so it may be correct but it maybe wrong. Someone that knows should // look at this. Filter f = ff.bbox(geomAtt, 10, 10, 20, 20, ""); runTest(f, new FilterCapabilities(BBOX.class), geomAtt); }
private org.opengis.filter.spatial.BBOX buildBbox(final String crs) throws CQLException { double maxY = this.resultStack.popDoubleValue(); double maxX = this.resultStack.popDoubleValue(); double minY = this.resultStack.popDoubleValue(); double minX = this.resultStack.popDoubleValue(); PropertyName property = this.resultStack.popPropertyName(); String strProperty = property.getPropertyName(); org.opengis.filter.spatial.BBOX bbox = filterFactory.bbox(strProperty, minX, minY, maxX, maxY, crs); return bbox; }
private BBOX bboxFilter(Envelope bbox) { return ff.bbox( wrapped.getSchema().getGeometryDescriptor().getLocalName(), bbox.getMinX(), bbox.getMinY(), bbox.getMaxX(), bbox.getMaxY(), null); }
@Test public void testBBOX() throws Exception { // JE: this test fails but I am not sure if it is a bug or expected behaviour // I wrote this test so it may be correct but it maybe wrong. Someone that knows should // look at this. Filter f = ff.bbox(geomAtt, 10, 10, 20, 20, ""); runTest(f, newCapabilities(BBOX.class), geomAtt); }
public void testResolveEmptyName() { // We use a geometry filter here to test that expression1 does not get filled with the // default geometry BBOX f = factory.bbox("", 0.0, 0.0, 1.0, 1.0, DefaultGeographicCRS.WGS84.toString()); assertEquals("", f.getExpression1().toString()); f = (BBOX) f.accept(new PropertyNameResolvingVisitor(featureType), null); assertEquals("", f.getExpression1().toString()); } }
public void testBboxFilterDefault() throws Exception { FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); // should match only "r2" BBOX bbox = ff.bbox("", 2, 3, 4, 5, "EPSG:4326"); FeatureCollection features = dataStore.getFeatureSource(tname("road")).getFeatures(bbox); checkSingleResult(features, "r2"); }
public void testBboxFilter() throws Exception { FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); // should match only "r2" BBOX bbox = ff.bbox(aname("geom"), 2, 3, 4, 5, "EPSG:4326"); FeatureCollection features = dataStore.getFeatureSource(tname("road")).getFeatures(bbox); checkSingleResult(features, "r2"); }
public void testFunctionANDGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter andFilter = ff.and(funtionFilter, geomFilter); andFilter.accept(visitor, null); assertEquals(funtionFilter.toString(), visitor.getFilterPost().toString()); assertEquals(geomFilter.toString(), visitor.getFilterPre().toString()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); andFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(andFilter, visitor.getFilterPre()); }
@Test public void testFunctionANDGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter andFilter = ff.and(funtionFilter, geomFilter); andFilter.accept(visitor, null); assertEquals(funtionFilter.toString(), visitor.getFilterPost().toString()); assertEquals(geomFilter.toString(), visitor.getFilterPre().toString()); simpleLogicalCaps.addName(testFunction.getName(), testFunction.getParameters().size()); visitor = newVisitor(simpleLogicalCaps); andFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(andFilter, visitor.getFilterPre()); }
public void testBBOX3DOutsideLine() throws Exception { // a bbox 3d well outside the line footprint BBOX3D bbox3d = FF.bbox("", new ReferencedEnvelope3D(2, 3, 1, 2, 100, 101, crs)); SimpleFeatureCollection fc = dataStore.getFeatureSource(tname(getLine3d())).getFeatures(bbox3d); assertEquals(0, fc.size()); }
public void testOutsideWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -300, -40, -200, 40, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertFalse(r.hasNext()); } }
public void testVisitLogicalORFilter() throws Exception { Filter f1 = createPropertyIsEqualToFilter(nameAtt, "david"); Filter f2 = createPropertyIsEqualToFilter("name", "jose"); Filter orFilter = ff.or(f1, f2); runTest(orFilter, simpleLogicalCaps, nameAtt); visitor = newVisitor(simpleLogicalCaps); f2 = ff.bbox(geomAtt, 10.0, 20.0, 10.0, 20.0, ""); orFilter = ff.or(f1, f2); orFilter.accept(visitor, null); // f1 could be pre-processed but since f2 can't all the processing has to be done on the // client side :-( assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); }
@Test public void testVisitLogicalORFilter() throws Exception { Filter f1 = createPropertyIsEqualToFilter(nameAtt, "david"); Filter f2 = createPropertyIsEqualToFilter("name", "jose"); Filter orFilter = ff.or(f1, f2); runTest(orFilter, simpleLogicalCaps, nameAtt); visitor = newVisitor(simpleLogicalCaps); f2 = ff.bbox(geomAtt, 10.0, 20.0, 10.0, 20.0, ""); orFilter = ff.or(f1, f2); orFilter.accept(visitor, null); // f1 could be pre-processed but since f2 can't all the processing has to be done on the // client side :-( assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); }
public void testBBoxLargerThanWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -200, -200, 200, 200, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(r.hasNext()); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertTrue(f.getAttribute(aname("geo")) instanceof Point); } } }
@Test public void testFunctionORGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter orFilter = ff.or(funtionFilter, geomFilter); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); simpleLogicalCaps.addName(testFunction.getName(), testFunction.getParameters().size()); visitor = newVisitor(simpleLogicalCaps); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(orFilter, visitor.getFilterPre()); }
public void testGetFeaturesWithLogicFilter() throws Exception { FilterFactory ff = dataStore.getFilterFactory(); PropertyIsEqualTo property = ff.equals(ff.property(aname("stringProperty")), ff.literal("one")); BBOX bbox = ff.bbox(aname("geometry"), -20, -20, 20, 20, "EPSG:4326"); And filter = ff.and(property, bbox); SimpleFeatureCollection features = featureSource.getFeatures(filter); assertEquals(1, features.size()); try (SimpleFeatureIterator iterator = features.features()) { assertTrue(iterator.hasNext()); SimpleFeature feature = (SimpleFeature) iterator.next(); assertEquals("one", feature.getAttribute(aname("stringProperty"))); assertEquals(new Double(1.1), feature.getAttribute(aname("doubleProperty"))); } }
public void testLargerThanHalfWorld() throws Exception { if (!isGeographySupportAvailable()) { return; } FilterFactory ff = CommonFactoryFinder.getFilterFactory(null); BBOX bbox = ff.bbox("", -140, -50, 140, 50, "EPSG:4326"); // should select everything without bombing out Query q = new Query(tname("geopoint")); q.setFilter(bbox); try (FeatureReader r = dataStore.getFeatureReader(q, Transaction.AUTO_COMMIT)) { assertTrue(r.hasNext()); while (r.hasNext()) { SimpleFeature f = (SimpleFeature) r.next(); assertTrue(f.getAttribute(aname("geo")) instanceof Point); } } }
public void testFunctionORGeometryFilter() throws Exception { simpleLogicalCaps.addType(BBOX.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10, 20, 10, 20, ""); Filter orFilter = ff.or(funtionFilter, geomFilter); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(orFilter, visitor.getFilterPre()); }
public void testNullParentNullAccessor() throws Exception { simpleLogicalCaps.addType(BBOX.class); simpleLogicalCaps.addType(FilterFunction_geometryType.class); visitor = newVisitor(simpleLogicalCaps); Filter funtionFilter = createFunctionFilter(); Filter geomFilter = ff.bbox(geomAtt, 10.0, 20.0, 10.0, 20.0, ""); Filter orFilter = ff.or(funtionFilter, geomFilter); visitor = new PostPreProcessFilterSplittingVisitor(new FilterCapabilities(), null, null); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPre()); assertEquals(orFilter, visitor.getFilterPost()); visitor = new PostPreProcessFilterSplittingVisitor(simpleLogicalCaps, null, null); orFilter.accept(visitor, null); assertEquals(Filter.INCLUDE, visitor.getFilterPost()); assertEquals(orFilter, visitor.getFilterPre()); }
public void testBBOX3DReadLine() throws Exception { BBOX3D bbox3d = FF.bbox("", new ReferencedEnvelope3D(2, 3, 1, 2, 0, 1, crs)); SimpleFeatureCollection fc = dataStore.getFeatureSource(tname(getLine3d())).getFeatures(bbox3d); try (SimpleFeatureIterator fr = fc.features()) { assertTrue(fr.hasNext()); LineString ls = (LineString) fr.next().getDefaultGeometry(); // 1 1 0, 2 2 0, 4 2 1, 5 1 1 assertEquals(4, ls.getCoordinates().length); assertTrue(new Coordinate(1, 1, 0).equals3D(ls.getCoordinateN(0))); assertTrue(new Coordinate(2, 2, 0).equals3D(ls.getCoordinateN(1))); assertTrue(new Coordinate(4, 2, 1).equals3D(ls.getCoordinateN(2))); assertTrue(new Coordinate(5, 1, 1).equals3D(ls.getCoordinateN(3))); } }