Search in sources :

Example 1 with STRtree

use of org.locationtech.jts.index.strtree.STRtree in project presto by prestodb.

the class BenchmarkJtsStrTreeBuild method buildRtree.

@Benchmark
@OperationsPerInvocation(1)
public void buildRtree(BenchmarkData data, Blackhole blackhole) {
    STRtree rtree = new STRtree();
    for (Envelope envelope : data.getBuildEnvelopes()) {
        rtree.insert(envelope, envelope);
    }
    rtree.build();
    blackhole.consume(rtree);
}
Also used : STRtree(org.locationtech.jts.index.strtree.STRtree) Envelope(org.locationtech.jts.geom.Envelope) Benchmark(org.openjdk.jmh.annotations.Benchmark) OperationsPerInvocation(org.openjdk.jmh.annotations.OperationsPerInvocation)

Example 2 with STRtree

use of org.locationtech.jts.index.strtree.STRtree in project OpenTripPlanner by opentripplanner.

the class ShowGraph method buildSpatialIndex.

/*
     * Iterate through all vertices and their (outgoing) edges. If they are of 'interesting' types, 
     * add them to the corresponding spatial index.
     */
public synchronized void buildSpatialIndex() {
    vertexIndex = new STRtree();
    edgeIndex = new STRtree();
    Envelope env;
    // int xminx, xmax, ymin, ymax;
    for (Vertex v : graph.getVertices()) {
        Coordinate c = v.getCoordinate();
        env = new Envelope(c);
        vertexIndex.insert(env, v);
        for (Edge e : v.getOutgoing()) {
            if (e.getGeometry() == null)
                continue;
            if (e instanceof StreetTransitLink || e instanceof StreetEdge || e instanceof PathwayEdge) {
                env = e.getGeometry().getEnvelopeInternal();
                edgeIndex.insert(env, e);
            }
        }
    }
    vertexIndex.build();
    edgeIndex.build();
}
Also used : TransitStopVertex(org.opentripplanner.routing.vertextype.TransitStopVertex) Vertex(org.opentripplanner.routing.graph.Vertex) IntersectionVertex(org.opentripplanner.routing.vertextype.IntersectionVertex) Coordinate(org.locationtech.jts.geom.Coordinate) STRtree(org.locationtech.jts.index.strtree.STRtree) StreetTransitLink(org.opentripplanner.routing.edgetype.StreetTransitLink) StreetEdge(org.opentripplanner.routing.edgetype.StreetEdge) PathwayEdge(org.opentripplanner.routing.edgetype.PathwayEdge) Envelope(org.locationtech.jts.geom.Envelope) StreetEdge(org.opentripplanner.routing.edgetype.StreetEdge) PathwayEdge(org.opentripplanner.routing.edgetype.PathwayEdge) Edge(org.opentripplanner.routing.graph.Edge)

Example 3 with STRtree

use of org.locationtech.jts.index.strtree.STRtree in project onebusaway-application-modules by camsys.

the class HierarchicalSTRtreeFactory method add.

public void add(double lat, double lon, T element) {
    STRtree tree = null;
    for (Map.Entry<CoordinateBounds, STRtree> entry : _treesByBounds.entrySet()) {
        CoordinateBounds bounds = entry.getKey();
        if (bounds.contains(lat, lon)) {
            tree = entry.getValue();
            break;
        }
    }
    if (tree == null) {
        double gLat = Math.floor(lat / _latStep) * _latStep;
        double gLon = Math.floor(lon / _lonStep) * _lonStep;
        CoordinateBounds b = new CoordinateBounds(gLat, gLon, gLat + _latStep, gLon + _lonStep);
        tree = new STRtree();
        _treesByBounds.put(b, tree);
    }
    Envelope env = new Envelope(lon, lon, lat, lat);
    tree.insert(env, element);
}
Also used : STRtree(org.locationtech.jts.index.strtree.STRtree) Envelope(org.locationtech.jts.geom.Envelope) Map(java.util.Map) HashMap(java.util.HashMap) CoordinateBounds(org.onebusaway.geospatial.model.CoordinateBounds)

Example 4 with STRtree

use of org.locationtech.jts.index.strtree.STRtree in project onebusaway-application-modules by camsys.

the class BlockGeospatialServiceImpl method buildShapeSpatialIndex.

private void buildShapeSpatialIndex() throws IOException, ClassNotFoundException {
    File path = _bundle.getShapeGeospatialIndexDataPath();
    if (!path.exists()) {
        _tree = null;
        return;
    }
    _log.info("loading shape point geospatial index...");
    Map<CoordinateBounds, List<AgencyAndId>> shapeIdsByGridCell = ObjectSerializationLibrary.readObject(path);
    _log.info("block shape geospatial nodes: " + shapeIdsByGridCell.size());
    if (shapeIdsByGridCell.isEmpty()) {
        _tree = null;
        return;
    }
    _tree = new STRtree(shapeIdsByGridCell.size());
    for (Map.Entry<CoordinateBounds, List<AgencyAndId>> entry : shapeIdsByGridCell.entrySet()) {
        CoordinateBounds b = entry.getKey();
        Envelope env = new Envelope(b.getMinLon(), b.getMaxLon(), b.getMinLat(), b.getMaxLat());
        List<AgencyAndId> shapeIds = entry.getValue();
        _tree.insert(env, shapeIds);
    }
    _tree.build();
}
Also used : AgencyAndId(org.onebusaway.gtfs.model.AgencyAndId) STRtree(org.locationtech.jts.index.strtree.STRtree) List(java.util.List) ArrayList(java.util.ArrayList) Envelope(org.locationtech.jts.geom.Envelope) File(java.io.File) Map(java.util.Map) HashMap(java.util.HashMap) CoordinateBounds(org.onebusaway.geospatial.model.CoordinateBounds)

Example 5 with STRtree

use of org.locationtech.jts.index.strtree.STRtree in project onebusaway-application-modules by camsys.

the class RoutesBeanServiceImpl method getRoutesWithRouteNameQuery.

private RoutesBean getRoutesWithRouteNameQuery(SearchQueryBean query) throws ServiceException {
    SearchResult<AgencyAndId> result = searchForRoutes(query);
    List<RouteBean> routeBeans = new ArrayList<RouteBean>();
    CoordinateBounds bounds = query.getBounds();
    for (AgencyAndId id : result.getResults()) {
        STRtree tree = _stopTreesByRouteId.get(id);
        if (tree == null) {
            _log.warn("stop tree not found for routeId=" + id);
            continue;
        }
        Envelope env = new Envelope(bounds.getMinLon(), bounds.getMaxLon(), bounds.getMinLat(), bounds.getMaxLat());
        HasItemsVisitor v = new HasItemsVisitor();
        tree.query(env, v);
        if (v.hasItems()) {
            RouteBean routeBean = _routeBeanService.getRouteForId(id);
            routeBeans.add(routeBean);
        }
    }
    boolean limitExceeded = BeanServiceSupport.checkLimitExceeded(routeBeans, query.getMaxCount());
    return constructResult(routeBeans, limitExceeded);
}
Also used : RouteBean(org.onebusaway.transit_data.model.RouteBean) AgencyAndId(org.onebusaway.gtfs.model.AgencyAndId) STRtree(org.locationtech.jts.index.strtree.STRtree) Envelope(org.locationtech.jts.geom.Envelope) CoordinateBounds(org.onebusaway.geospatial.model.CoordinateBounds)

Aggregations

STRtree (org.locationtech.jts.index.strtree.STRtree)14 Envelope (org.locationtech.jts.geom.Envelope)13 CoordinateBounds (org.onebusaway.geospatial.model.CoordinateBounds)4 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Coordinate (org.locationtech.jts.geom.Coordinate)3 AgencyAndId (org.onebusaway.gtfs.model.AgencyAndId)3 StopEntry (org.onebusaway.transit_data_federation.services.transit_graph.StopEntry)3 PostConstruct (javax.annotation.PostConstruct)2 Geometry (org.locationtech.jts.geom.Geometry)2 Refreshable (org.onebusaway.container.refresh.Refreshable)2 Benchmark (org.openjdk.jmh.annotations.Benchmark)2 OperationsPerInvocation (org.openjdk.jmh.annotations.OperationsPerInvocation)2 StreetEdge (org.opentripplanner.routing.edgetype.StreetEdge)2 Edge (org.opentripplanner.routing.graph.Edge)2 Vertex (org.opentripplanner.routing.graph.Vertex)2 File (java.io.File)1 HashSet (java.util.HashSet)1 List (java.util.List)1