use of ddf.catalog.pubsub.predicate.GeospatialPredicate in project ddf by codice.
the class PredicateTest method testGeospatialEvaluatorPointRadiusContains.
@Test
public void testGeospatialEvaluatorPointRadiusContains() throws Exception {
LOGGER.debug("************************** START: testGeospatialEvaluator_PointRadius_Contains() ***********************");
// WKT specifies points in LON LAT order
String geometryWkt = "POINT (44.5 34.5)";
String operation = "point_radius";
// 0.6 degrees
double distance = 0.6 * NM_PER_DEG_LAT * METERS_PER_NM;
// latitude in
// meters
double radiusInDegrees = (distance * 180.0) / (Math.PI * EQUATORIAL_RADIUS_IN_METERS);
LOGGER.debug("distance (in meters) = " + distance + ", radiusInDegrees = " + radiusInDegrees);
GeospatialPredicate predicate = new GeospatialPredicate(geometryWkt, operation, radiusInDegrees);
Geometry geoCriteria = predicate.getGeoCriteria();
LOGGER.debug("geoCriteria.toText() = {}", geoCriteria.toText());
String geospatialXml = "<gml:Polygon xmlns:gml=\"http://www.opengis.net/gml\" gml:id=\"BGE-1\">\n" + " <gml:exterior>\n" + " <gml:LinearRing>\n" + " <gml:pos>34.0 44.0</gml:pos>\n" + " <gml:pos>33.0 44.0</gml:pos>\n" + " <gml:pos>33.0 45.0</gml:pos>\n" + " <gml:pos>34.0 45.0</gml:pos>\n" + " <gml:pos>34.0 44.0</gml:pos>\n" + " </gml:LinearRing>\n" + " </gml:exterior>\n" + "</gml:Polygon>";
Geometry input = GeospatialEvaluator.buildGeometry(geospatialXml);
LOGGER.debug("input.toText() = {}", input.toText());
GeospatialEvaluationCriteria gec = new GeospatialEvaluationCriteriaImpl(geoCriteria, operation, input, radiusInDegrees);
boolean status = GeospatialEvaluator.evaluate(gec);
assertTrue(status);
LOGGER.debug("************************** END: testGeospatialEvaluator_PointRadius_Contains() ***********************");
}
use of ddf.catalog.pubsub.predicate.GeospatialPredicate in project ddf by codice.
the class SubscriptionFilterVisitor method visit.
/**
* Intersects filter maps to a OVERLAPS Spatial search criteria.
*/
@Override
public Object visit(Intersects filter, Object data) {
LOGGER.debug("ENTERING: Intersects filter");
LOGGER.debug("Must have received OVERLAPS query criteria.");
org.locationtech.jts.geom.Geometry jtsGeometry = getJtsGeometery((LiteralExpressionImpl) filter.getExpression2());
Predicate predicate = new GeospatialPredicate(jtsGeometry, SpatialOperator.OVERLAPS.name(), 0.0);
LOGGER.debug("EXITING: Intersects filter");
return predicate;
}
use of ddf.catalog.pubsub.predicate.GeospatialPredicate in project ddf by codice.
the class PredicateTest method testGeospatialPredicateNullMetadata.
@Test
public void testGeospatialPredicateNullMetadata() throws IOException {
String methodName = "testGeospatialPredicateNullMetadata()";
LOGGER.debug("*************** START: {} *****************", methodName);
String geometryWkt = "POLYGON ((40 34, 40 33, 44.5 33, 44.5 34, 40 34))";
String operation = "overlaps";
double distance = 0.0000001;
GeospatialPredicate predicate = new GeospatialPredicate(geometryWkt, operation, distance);
MetacardImpl metacard = new MetacardImpl();
metacard.setLocation("POINT (41 34)");
HashMap<String, Object> properties = new HashMap<>();
properties.put(PubSubConstants.HEADER_CONTENT_TYPE_KEY, "type1,version1");
properties.put(PubSubConstants.HEADER_OPERATION_KEY, PubSubConstants.CREATE);
properties.put(PubSubConstants.HEADER_ENTRY_KEY, metacard);
// No Contextual map added to properties containing indexed metadata
Event testEvent = new Event("topic", properties);
assertTrue(predicate.matches(testEvent));
LOGGER.debug("*************** END: {} *****************", methodName);
}
use of ddf.catalog.pubsub.predicate.GeospatialPredicate in project ddf by codice.
the class PredicateTest method testGeospatialPredicateNullOperation.
@Test
public void testGeospatialPredicateNullOperation() throws IOException {
String methodName = "testGeospatialPredicateNullOperation";
LOGGER.debug("*************** START: {} *****************", methodName);
String geometryWkt = "POLYGON ((40 34, 40 33, 44.5 33, 44.5 34, 40 34))";
String operation = "overlaps";
double distance = 0.0000001;
GeospatialPredicate predicate = new GeospatialPredicate(geometryWkt, operation, distance);
MetacardImpl metacard = new MetacardImpl();
metacard.setLocation("POINT (41 34)");
metacard.setMetadata(TestDataLibrary.getCatAndDogEntry());
HashMap<String, Object> properties = new HashMap<>();
properties.put(PubSubConstants.HEADER_CONTENT_TYPE_KEY, "type1,version1");
properties.put(PubSubConstants.HEADER_OPERATION_KEY, null);
properties.put(PubSubConstants.HEADER_ENTRY_KEY, metacard);
Map<String, Object> contextualMap = constructContextualMap(metacard);
properties.put(PubSubConstants.HEADER_CONTEXTUAL_KEY, contextualMap);
Event testEvent = new Event("topic", properties);
assertTrue(predicate.matches(testEvent));
LOGGER.debug("*************** END: {} *****************", methodName);
}
use of ddf.catalog.pubsub.predicate.GeospatialPredicate in project ddf by codice.
the class PredicateTest method testGeospatialEvaluatorPointRadiusNotContains.
@Test
public void testGeospatialEvaluatorPointRadiusNotContains() throws Exception {
LOGGER.debug("************************** START: testGeospatialEvaluator_PointRadius_NotContains() ***********************");
// WKT specifies points in LON LAT order
String geometryWkt = "POINT (44.5 34.5)";
String operation = "point_radius";
double distance = 500.0;
double radiusInDegrees = (distance * 180.0) / (Math.PI * EQUATORIAL_RADIUS_IN_METERS);
GeospatialPredicate predicate = new GeospatialPredicate(geometryWkt, operation, radiusInDegrees);
Geometry geoCriteria = predicate.getGeoCriteria();
LOGGER.debug("geoCriteria.toText() {}", geoCriteria.toText());
String geospatialXml = "<gml:Polygon xmlns:gml=\"http://www.opengis.net/gml\" gml:id=\"BGE-1\">\n" + " <gml:exterior>\n" + " <gml:LinearRing>\n" + " <gml:pos>24.0 22.0</gml:pos>\n" + " <gml:pos>23.0 22.0</gml:pos>\n" + " <gml:pos>23.0 24.0</gml:pos>\n" + " <gml:pos>24.0 24.0</gml:pos>\n" + " <gml:pos>24.0 22.0</gml:pos>\n" + " </gml:LinearRing>\n" + " </gml:exterior>\n" + "</gml:Polygon>";
Geometry input = GeospatialEvaluator.buildGeometry(geospatialXml);
LOGGER.debug("input.toText() = {}", input.toText());
GeospatialEvaluationCriteria gec = new GeospatialEvaluationCriteriaImpl(geoCriteria, operation, input, radiusInDegrees);
boolean status = GeospatialEvaluator.evaluate(gec);
assertFalse(status);
LOGGER.debug("************************** END: testGeospatialEvaluator_PointRadius_NotContains() ***********************");
}
Aggregations