Search in sources :

Example 61 with SearchEnvelope

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

the class GenericSpatialBoxPropertyFunctionTest method testExtractObjectArguments_3args_fail.

/**
 * Test of extractObjectArguments method, of class
 * GenericSpatialBoxPropertyFunction.
 */
@Test(expected = ExprEvalException.class)
public void testExtractObjectArguments_3args_fail() {
    GenericSpatialBoxPropertyFunction instance = new WithinBoxPF();
    Node predicate = NodeFactory.createURI(SpatialExtension.WITHIN_BOX_PROP);
    // Geometry and Envelope parameters
    float latMin = 0;
    float lonMin = 1;
    float latMax = 2;
    float lonMax = 3;
    int limit = 10;
    List<Node> objectNodes = Arrays.asList(NodeValue.makeFloat(latMin).asNode(), NodeValue.makeFloat(lonMin).asNode(), NodeValue.makeFloat(latMax).asNode());
    PropFuncArg object = new PropFuncArg(objectNodes);
    // Function arguments
    Literal geometry = ConvertLatLonBox.toLiteral(latMin, lonMin, latMax, lonMax);
    GeometryWrapper geometryWrapper = GeometryWrapper.extract(geometry);
    SearchEnvelope searchEnvelope = SearchEnvelope.build(geometryWrapper, SpatialIndexTestData.WGS_84_SRS_INFO);
    SpatialArguments expResult = new SpatialArguments(limit, geometryWrapper, searchEnvelope);
    SpatialArguments result = instance.extractObjectArguments(predicate, object, SpatialIndexTestData.WGS_84_SRS_INFO);
// assertEquals(expResult, result);
}
Also used : SpatialArguments(org.apache.jena.geosparql.spatial.property_functions.SpatialArguments) Node(org.apache.jena.graph.Node) Literal(org.apache.jena.rdf.model.Literal) GeometryWrapper(org.apache.jena.geosparql.implementation.GeometryWrapper) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope) PropFuncArg(org.apache.jena.sparql.pfunction.PropFuncArg) Test(org.junit.Test)

Example 62 with SearchEnvelope

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

the class GenericSpatialPropertyFunction method checkUnbound.

private QueryIterator checkUnbound(Binding binding, ExecutionContext execCxt, Node subject, int limit) {
    QueryIterConcat queryIterConcat = new QueryIterConcat(execCxt);
    if (limit < 0) {
        limit = Integer.MAX_VALUE;
    }
    // Find all Features in the spatial index which are within the rough search envelope.
    SearchEnvelope searchEnvelope = spatialArguments.searchEnvelope;
    HashSet<Resource> features = searchEnvelope.check(spatialIndex);
    Var subjectVar = Var.alloc(subject.getName());
    int count = 0;
    for (Resource feature : features) {
        boolean isMatched;
        if (requireSecondFilter()) {
            // Check all the GeometryLiterals of the Feature in a fine-grained test.
            isMatched = checkBound(execCxt, feature.asNode());
        } else {
            // Second filter is not required so accept the case.
            isMatched = true;
        }
        if (isMatched) {
            // Exit on limit of zero.
            count++;
            if (count > limit) {
                break;
            }
            QueryIterator queryIter = QueryIterSingleton.create(binding, subjectVar, feature.asNode(), execCxt);
            queryIterConcat.add(queryIter);
        }
    }
    return queryIterConcat;
}
Also used : QueryIterConcat(org.apache.jena.sparql.engine.iterator.QueryIterConcat) QueryIterator(org.apache.jena.sparql.engine.QueryIterator) Var(org.apache.jena.sparql.core.Var) Resource(org.apache.jena.rdf.model.Resource) SearchEnvelope(org.apache.jena.geosparql.spatial.SearchEnvelope)

Example 63 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 64 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)

Example 65 with SearchEnvelope

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

the class NorthGeomPFTest method testBuildSearchEnvelope.

/**
 * Test of buildSearchEnvelope method, of class NorthGeomPF.
 */
@Test
public void testBuildSearchEnvelope() {
    GeometryWrapper geometryWrapper = SpatialIndexTestData.PARIS_GEOMETRY_WRAPPER;
    NorthGeomPF instance = new NorthGeomPF();
    SearchEnvelope expResult = SearchEnvelope.build(geometryWrapper, SpatialIndexTestData.WGS_84_SRS_INFO, CardinalDirection.NORTH);
    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)

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