use of org.opengis.filter.spatial.Contains in project polymap4-core by Polymap4.
the class LuceneQueryDialect method supports.
public static boolean supports(Filter _filter) {
final List notSupported = new ArrayList();
_filter.accept(new DefaultFilterVisitor() {
public Object visit(Beyond filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Contains filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Crosses filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Disjoint filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Divide expression, Object data) {
notSupported.add(expression);
return super.visit(expression, data);
}
public Object visit(DWithin filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(org.opengis.filter.expression.Function expression, Object data) {
notSupported.add(expression);
return super.visit(expression, data);
}
public Object visit(Intersects filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Multiply expression, Object data) {
notSupported.add(expression);
return super.visit(expression, data);
}
public Object visit(Overlaps filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Subtract expression, Object data) {
notSupported.add(expression);
return super.visit(expression, data);
}
public Object visit(Touches filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
public Object visit(Within filter, Object data) {
notSupported.add(filter);
return super.visit(filter, data);
}
}, notSupported);
return notSupported.isEmpty();
}
use of org.opengis.filter.spatial.Contains in project ddf by codice.
the class OpenSearchFilterVisitorTest method testMultipleFiltersWhereOneFilterIsIgnored.
/**
* Test that other {@link Filter}s are still visited when a {@link Filter} is ignored. The {@link
* Filter}s in this test are the same as {@link #testMultipleFilters} except that the temporal
* criteria is from {@link #testNotModifiedTemporalFilter()}.
*/
@Test
public void testMultipleFiltersWhereOneFilterIsIgnored() {
During duringFilter = (During) geotoolsFilterBuilder.attribute(SOME_ATTRIBUTE_NAME).during().dates(START_DATE, END_DATE);
Contains containsFilter = (Contains) geotoolsFilterBuilder.attribute(SPATIAL_ATTRIBUTE_NAME).containing().wkt(WKT_POLYGON);
And andFilter = geotoolsFilterBuilder.allOf(duringFilter, containsFilter);
OpenSearchFilterVisitorObject openSearchFilterVisitorObject = new OpenSearchFilterVisitorObject();
openSearchFilterVisitorObject.setCurrentNest(NestedTypes.AND);
OpenSearchFilterVisitorObject result = (OpenSearchFilterVisitorObject) openSearchFilterVisitor.visit(andFilter, openSearchFilterVisitorObject);
assertThat(result.getTemporalSearch(), is(nullValue()));
assertThat(result.getGeometrySearches(), contains(hasToString(is(WKT_POLYGON))));
}
use of org.opengis.filter.spatial.Contains in project ddf by codice.
the class OpenSearchFilterVisitorTest method testNotLocationSpatialFilter.
/**
* Spatial {@link Filter}s for attributes other than {@value SPATIAL_ATTRIBUTE_NAME} should be
* ignored.
*/
@Test
public void testNotLocationSpatialFilter() {
Contains containsFilter = (Contains) geotoolsFilterBuilder.attribute(SOME_ATTRIBUTE_NAME).containing().wkt(WKT_POLYGON);
OpenSearchFilterVisitorObject openSearchFilterVisitorObject = new OpenSearchFilterVisitorObject();
openSearchFilterVisitorObject.setCurrentNest(NestedTypes.AND);
OpenSearchFilterVisitorObject result = (OpenSearchFilterVisitorObject) openSearchFilterVisitor.visit(containsFilter, openSearchFilterVisitorObject);
assertThat(result.getGeometrySearches(), is(empty()));
}
use of org.opengis.filter.spatial.Contains in project coastal-hazards by USGS-CIDA.
the class FeatureCollectionExportTest method splitterTest.
@Test
// for now
@Ignore
public void splitterTest() throws Exception {
// get geometry
HttpComponentsWFSClient wfs1 = new HttpComponentsWFSClient();
wfs1.setupDatastoreFromEndpoint("http://cida-wiwsc-cchdev:8081/geoserver/wfs");
FilterFactory2 filterFactory = CommonFactoryFinder.getFilterFactory2(GeoTools.getDefaultHints());
PropertyIsEqualTo equals = filterFactory.equals(filterFactory.property("STATEFP"), filterFactory.literal(37));
SimpleFeatureCollection featureCollection = wfs1.getFeatureCollection("splitter:tl_2013_coastal_states", equals);
SimpleFeatureIterator features = featureCollection.features();
// only deal with one
Geometry geom = null;
if (features.hasNext()) {
SimpleFeature next = features.next();
geom = (Geometry) next.getDefaultGeometry();
}
// then use geometry as filter
HttpComponentsWFSClient wfs2 = new HttpComponentsWFSClient();
wfs2.setupDatastoreFromEndpoint("http://cida-wiwsc-cchdev:8081/geoserver/wfs");
FilterFactory2 filterFactory2 = CommonFactoryFinder.getFilterFactory2(GeoTools.getDefaultHints());
Contains contains = filterFactory2.contains(filterFactory2.property("the_geom"), filterFactory2.literal(geom));
SimpleFeatureCollection featureCollection2 = wfs2.getFeatureCollection("proxied:atl_cvi", contains);
SimpleFeatureType schema = GMLStreamingFeatureCollection.unwrapSchema(featureCollection2.getSchema());
FileDataStoreFactorySpi factory = FileDataStoreFinder.getDataStoreFactory("shp");
Map datastoreConfig = new HashMap<>();
datastoreConfig.put("url", FileUtils.getFile(FileUtils.getTempDirectory(), "splitter.shp").toURI().toURL());
ShapefileDataStore shpfileDataStore = (ShapefileDataStore) factory.createNewDataStore(datastoreConfig);
shpfileDataStore.createSchema(schema);
shpfileDataStore.forceSchemaCRS(DefaultGeographicCRS.WGS84);
SimpleFeatureStore featureStore = (SimpleFeatureStore) shpfileDataStore.getFeatureSource();
Transaction t = new DefaultTransaction();
// Copied directly from Import process
featureStore.setTransaction(t);
Query query = new Query();
query.setCoordinateSystem(DefaultGeographicCRS.WGS84);
SimpleFeatureIterator fi = featureCollection2.features();
SimpleFeatureBuilder fb = new SimpleFeatureBuilder(schema);
while (fi.hasNext()) {
SimpleFeature source = fi.next();
fb.reset();
for (AttributeDescriptor desc : schema.getAttributeDescriptors()) {
fb.set(desc.getName(), source.getAttribute(desc.getName()));
}
SimpleFeature target = fb.buildFeature(null);
target.setDefaultGeometry(source.getDefaultGeometry());
featureStore.addFeatures(DataUtilities.collection(target));
}
t.commit();
t.close();
}
use of org.opengis.filter.spatial.Contains in project ddf by codice.
the class OpenSearchFilterVisitorTest method testContains.
@Test
public void testContains() {
Contains containsFilter = (Contains) geotoolsFilterBuilder.attribute(SPATIAL_ATTRIBUTE_NAME).containing().wkt(WKT_POLYGON);
OpenSearchFilterVisitorObject openSearchFilterVisitorObject = new OpenSearchFilterVisitorObject();
openSearchFilterVisitorObject.setCurrentNest(NestedTypes.AND);
OpenSearchFilterVisitorObject result = (OpenSearchFilterVisitorObject) openSearchFilterVisitor.visit(containsFilter, openSearchFilterVisitorObject);
assertThat(result.getGeometrySearches(), contains(hasToString(is(WKT_POLYGON))));
}
Aggregations