Search in sources :

Example 41 with SearchEnvelope

use of org.apache.jena.geosparql.spatial.SearchEnvelope in project jena by apache.

the class GenericCardinalGeomPropertyFunction method checkSecondFilter.

@Override
protected boolean checkSecondFilter(SpatialArguments spatialArguments, GeometryWrapper targetGeometryWrapper) {
    // Test Geometry against the Geometry from Object to see if it is a success.
    // Used when checking against bound Subjects.
    // Cardinal functions only check against the search envelope.
    SearchEnvelope searchEnvelope = spatialArguments.getSearchEnvelope();
    try {
        GeometryWrapper srs = targetGeometryWrapper.convertSRS(searchEnvelope.getSrsURI());
        Envelope targetEnvelope = srs.getEnvelope();
        boolean result = searchEnvelope.check(targetEnvelope);
        return result;
    } catch (FactoryException | MismatchedDimensionException | TransformException ex) {
        throw new ExprEvalException(ex.getMessage() + ": " + targetGeometryWrapper.asLiteral(), ex);
    }
}
Also used : FactoryException(org.opengis.util.FactoryException) GeometryWrapper(org.apache.jena.geosparql.implementation.GeometryWrapper) TransformException(org.opengis.referencing.operation.TransformException) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) Envelope(org.locationtech.jts.geom.Envelope) MismatchedDimensionException(org.opengis.geometry.MismatchedDimensionException) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 42 with SearchEnvelope

use of org.apache.jena.geosparql.spatial.SearchEnvelope in project jena by apache.

the class GenericCardinalGeomPropertyFunction method buildSearchEnvelope.

@Override
protected SearchEnvelope buildSearchEnvelope(GeometryWrapper geometryWrapper, SRSInfo indexSRSInfo) {
    CardinalDirection direction = getCardinalDirection();
    SearchEnvelope searchEnvelope = SearchEnvelope.build(geometryWrapper, indexSRSInfo, direction);
    return searchEnvelope;
}
Also used : CardinalDirection(org.apache.jena.geosparql.spatial.CardinalDirection) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope)

Example 43 with SearchEnvelope

use of org.apache.jena.geosparql.spatial.SearchEnvelope in project jena by apache.

the class GenericSpatialGeomPropertyFunction method extractObjectArguments.

@Override
protected SpatialArguments extractObjectArguments(Node predicate, PropFuncArg object, SRSInfo indexSRSInfo) {
    try {
        // Check minimum arguments.
        List<Node> objectArgs = object.getArgList();
        if (objectArgs.size() < 1) {
            throw new ExprEvalException(FmtUtils.stringForNode(predicate) + ": Minimum of 1 arguments.");
        } else if (objectArgs.size() > 2) {
            throw new ExprEvalException(FmtUtils.stringForNode(predicate) + ": Maximum of 2 arguments.");
        }
        Node geomLit = object.getArg(GEOM_POS);
        // Find the limit.
        int limit;
        if (objectArgs.size() > LIMIT_POS) {
            NodeValue limitNode = NodeValue.makeNode(objectArgs.get(LIMIT_POS));
            if (!limitNode.isInteger()) {
                throw new ExprEvalException("Not an integer: " + FmtUtils.stringForNode(limitNode.asNode()));
            }
            limit = limitNode.getInteger().intValue();
        } else {
            limit = DEFAULT_LIMIT;
        }
        GeometryWrapper geometryWrapper = GeometryWrapper.extract(geomLit);
        SearchEnvelope searchEnvelope = buildSearchEnvelope(geometryWrapper, indexSRSInfo);
        return new SpatialArguments(limit, geometryWrapper, searchEnvelope);
    } catch (DatatypeFormatException ex) {
        throw new ExprEvalException(ex.getMessage(), ex);
    }
}
Also used : NodeValue(org.apache.jena.sparql.expr.NodeValue) DatatypeFormatException(org.apache.jena.datatypes.DatatypeFormatException) Node(org.apache.jena.graph.Node) GeometryWrapper(org.apache.jena.geosparql.implementation.GeometryWrapper) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) ExprEvalException(org.apache.jena.sparql.expr.ExprEvalException)

Example 44 with SearchEnvelope

use of org.apache.jena.geosparql.spatial.SearchEnvelope in project jena by apache.

the class EastGeomPFTest method testBuildSearchEnvelope.

/**
 * Test of buildSearchEnvelope method, of class EastGeomPF.
 */
@Test
public void testBuildSearchEnvelope() {
    GeometryWrapper geometryWrapper = SpatialIndexTestData.PARIS_GEOMETRY_WRAPPER;
    EastGeomPF instance = new EastGeomPF();
    SearchEnvelope expResult = SearchEnvelope.build(geometryWrapper, SpatialIndexTestData.WGS_84_SRS_INFO, CardinalDirection.EAST);
    SearchEnvelope result = instance.buildSearchEnvelope(geometryWrapper, SpatialIndexTestData.WGS_84_SRS_INFO);
    assertEquals(expResult, result);
}
Also used : GeometryWrapper(org.apache.jena.geosparql.implementation.GeometryWrapper) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) Test(org.junit.Test)

Example 45 with SearchEnvelope

use of org.apache.jena.geosparql.spatial.SearchEnvelope in project jena by apache.

the class EastGeomPFTest method testCheckSearchEnvelope_no_wrap.

/**
 * Test of checkSearchEnvelope method, of class EastGeomPF.
 */
@Test
public void testCheckSearchEnvelope_no_wrap() {
    SpatialIndex spatialIndex = SpatialIndexTestData.createTestIndex();
    // Search Envelope
    GeometryWrapper geometryWrapper = SpatialIndexTestData.HONOLULU_GEOMETRY_WRAPPER;
    EastGeomPF instance = new EastGeomPF();
    // Needed to initialise the search.
    SearchEnvelope searchEnvelope = instance.buildSearchEnvelope(geometryWrapper, SpatialIndexTestData.WGS_84_SRS_INFO);
    HashSet<Resource> expResult = new HashSet<>(Arrays.asList(SpatialIndexTestData.LONDON_FEATURE, SpatialIndexTestData.HONOLULU_FEATURE, SpatialIndexTestData.NEW_YORK_FEATURE));
    HashSet<Resource> result = searchEnvelope.check(spatialIndex);
    assertEquals(expResult, result);
}
Also used : SpatialIndex(org.apache.jena.geosparql.spatial.SpatialIndex) GeometryWrapper(org.apache.jena.geosparql.implementation.GeometryWrapper) Resource(org.apache.jena.rdf.model.Resource) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) HashSet(java.util.HashSet) Test(org.junit.Test)

Aggregations

SearchEnvelope (org.apache.jena.geosparql.spatial.SearchEnvelope)65 GeometryWrapper (org.apache.jena.geosparql.implementation.GeometryWrapper)63 Test (org.junit.Test)57 Node (org.apache.jena.graph.Node)46 Literal (org.apache.jena.rdf.model.Literal)41 PropFuncArg (org.apache.jena.sparql.pfunction.PropFuncArg)41 SpatialArguments (org.apache.jena.geosparql.spatial.property_functions.SpatialArguments)39 Resource (org.apache.jena.rdf.model.Resource)9 HashSet (java.util.HashSet)8 SpatialIndex (org.apache.jena.geosparql.spatial.SpatialIndex)8 IntersectBoxGeomPF (org.apache.jena.geosparql.spatial.property_functions.box.IntersectBoxGeomPF)6 ExprEvalException (org.apache.jena.sparql.expr.ExprEvalException)6 DatatypeFormatException (org.apache.jena.datatypes.DatatypeFormatException)5 NodeValue (org.apache.jena.sparql.expr.NodeValue)5 CardinalDirection (org.apache.jena.geosparql.spatial.CardinalDirection)1 Var (org.apache.jena.sparql.core.Var)1 QueryIterator (org.apache.jena.sparql.engine.QueryIterator)1 QueryIterConcat (org.apache.jena.sparql.engine.iterator.QueryIterConcat)1 Envelope (org.locationtech.jts.geom.Envelope)1 MismatchedDimensionException (org.opengis.geometry.MismatchedDimensionException)1