Search in sources :

Example 6 with Stop

use of com.conveyal.gtfs.model.Stop in project graphhopper by graphhopper.

the class GraphHopperGtfsIT method testBoardingArea.

@Test
public void testBoardingArea() {
    Stop boardingArea = graphHopperGtfs.getGtfsStorage().getGtfsFeeds().values().iterator().next().stops.get("BOARDING_AREA");
    assertEquals(4, boardingArea.location_type, "Boarding area can be read (doesn't do anything though)");
}
Also used : Stop(com.conveyal.gtfs.model.Stop) Test(org.junit.jupiter.api.Test)

Example 7 with Stop

use of com.conveyal.gtfs.model.Stop in project graphhopper by graphhopper.

the class PtMVTResource method doGetXyz.

@GET
@Path("{z}/{x}/{y}.mvt")
@Produces("application/x-protobuf")
public Response doGetXyz(@Context HttpServletRequest httpReq, @Context UriInfo uriInfo, @PathParam("z") int zInfo, @PathParam("x") int xInfo, @PathParam("y") int yInfo, @QueryParam(Parameters.Details.PATH_DETAILS) List<String> pathDetails) {
    Coordinate nw = num2deg(xInfo, yInfo, zInfo);
    Coordinate se = num2deg(xInfo + 1, yInfo + 1, zInfo);
    BBox bbox = new BBox(nw.x, se.x, se.y, nw.y);
    if (!bbox.isValid())
        throw new IllegalStateException("Invalid bbox " + bbox);
    List<Geometry> features = new ArrayList<>();
    gtfsStorage.getStopIndex().query(bbox, edgeId -> {
        for (PtGraph.PtEdge ptEdge : gtfsStorage.getPtGraph().backEdgesAround(edgeId)) {
            if (ptEdge.getType() == GtfsStorage.EdgeType.EXIT_PT) {
                GtfsStorage.PlatformDescriptor fromPlatformDescriptor = ptEdge.getAttrs().platformDescriptor;
                Stop stop = gtfsStorage.getGtfsFeeds().get(fromPlatformDescriptor.feed_id).stops.get(fromPlatformDescriptor.stop_id);
                Map<String, Object> properties = new HashMap<>(2);
                properties.put("feed_id", fromPlatformDescriptor.feed_id);
                properties.put("stop_id", fromPlatformDescriptor.stop_id);
                Point feature = geometryFactory.createPoint(new Coordinate(stop.stop_lon, stop.stop_lat));
                feature.setUserData(properties);
                features.add(feature);
            }
        }
    });
    VectorTile.Tile.Builder mvtBuilder = VectorTile.Tile.newBuilder();
    mvtBuilder.addLayers(createLayer(new Envelope(se, nw), new MvtLayerParams(256, 4096), features, "stops"));
    return Response.ok(mvtBuilder.build().toByteArray(), PBF).build();
}
Also used : Stop(com.conveyal.gtfs.model.Stop) HashMap(java.util.HashMap) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) ArrayList(java.util.ArrayList) PtGraph(com.graphhopper.gtfs.PtGraph) GtfsStorage(com.graphhopper.gtfs.GtfsStorage) VectorTile(com.wdtinc.mapbox_vector_tile.VectorTile) ByteString(com.google.protobuf.ByteString) BBox(com.graphhopper.util.shapes.BBox) MvtLayerParams(com.wdtinc.mapbox_vector_tile.build.MvtLayerParams)

Example 8 with Stop

use of com.conveyal.gtfs.model.Stop in project graphhopper by graphhopper.

the class GtfsReader method addDelayedBoardEdge.

int addDelayedBoardEdge(ZoneId zoneId, GtfsRealtime.TripDescriptor tripDescriptor, int stopSequence, int departureTime, int departureNode, BitSet validOnDay) {
    Trip trip = feed.trips.get(tripDescriptor.getTripId());
    final int departureTimelineNode = i++;
    StopTime stopTime = feed.stop_times.get(new Fun.Tuple2(tripDescriptor.getTripId(), stopSequence));
    Stop stop = feed.stops.get(stopTime.stop_id);
    nodeAccess.setNode(departureTimelineNode, stop.stop_lat, stop.stop_lon);
    nodeAccess.setAdditionalNodeField(departureTimelineNode, NodeType.INTERNAL_PT.ordinal());
    times.put(departureTimelineNode, departureTime);
    departureTimelineNodes.put(stopTime.stop_id, new TimelineNodeIdWithTripId(departureTimelineNode, tripDescriptor.getTripId(), trip.route_id));
    int dayShift = departureTime / (24 * 60 * 60);
    GtfsStorage.Validity validOn = new GtfsStorage.Validity(getValidOn(validOnDay, dayShift), zoneId, startDate);
    int validityId;
    if (gtfsStorage.getOperatingDayPatterns().containsKey(validOn)) {
        validityId = gtfsStorage.getOperatingDayPatterns().get(validOn);
    } else {
        validityId = gtfsStorage.getOperatingDayPatterns().size();
        gtfsStorage.getOperatingDayPatterns().put(validOn, validityId);
    }
    EdgeIteratorState boardEdge = graph.edge(departureTimelineNode, departureNode, 0.0, false);
    boardEdge.setName(getRouteName(feed, trip));
    setEdgeType(boardEdge, GtfsStorage.EdgeType.BOARD);
    gtfsStorage.getStopSequences().put(boardEdge.getEdge(), stopSequence);
    gtfsStorage.getTripDescriptors().put(boardEdge.getEdge(), tripDescriptor.toByteArray());
    boardEdge.setFlags(encoder.setValidityId(boardEdge.getFlags(), validityId));
    boardEdge.setFlags(encoder.setTransfers(boardEdge.getFlags(), 1));
    return boardEdge.getEdge();
}
Also used : Trip(com.conveyal.gtfs.model.Trip) Stop(com.conveyal.gtfs.model.Stop) EdgeIteratorState(com.graphhopper.util.EdgeIteratorState) Fun(org.mapdb.Fun) StopTime(com.conveyal.gtfs.model.StopTime)

Example 9 with Stop

use of com.conveyal.gtfs.model.Stop in project graphhopper by graphhopper.

the class GtfsReader method connectStopsToStreetNetwork.

private void connectStopsToStreetNetwork() {
    EdgeFilter filter = new EverythingButPt(encoder);
    for (Stop stop : feed.stops.values()) {
        QueryResult locationQueryResult = walkNetworkIndex.findClosest(stop.stop_lat, stop.stop_lon, filter);
        int streetNode;
        if (!locationQueryResult.isValid()) {
            streetNode = i++;
            nodeAccess.setNode(streetNode, stop.stop_lat, stop.stop_lon);
            graph.edge(streetNode, streetNode, 0.0, false);
        } else {
            streetNode = locationQueryResult.getClosestNode();
        }
        gtfsStorage.getStationNodes().put(stop.stop_id, streetNode);
    }
}
Also used : QueryResult(com.graphhopper.storage.index.QueryResult) Stop(com.conveyal.gtfs.model.Stop) EdgeFilter(com.graphhopper.routing.util.EdgeFilter)

Example 10 with Stop

use of com.conveyal.gtfs.model.Stop in project graphhopper by graphhopper.

the class PtLocationSnapper method findByStopId.

private Snap findByStopId(GHStationLocation station, int indexForErrorMessage) {
    for (Map.Entry<String, GTFSFeed> entry : gtfsStorage.getGtfsFeeds().entrySet()) {
        final Integer node = gtfsStorage.getStationNodes().get(new GtfsStorage.FeedIdWithStopId(entry.getKey(), station.stop_id));
        if (node != null) {
            Stop stop = gtfsStorage.getGtfsFeeds().get(entry.getKey()).stops.get(station.stop_id);
            final Snap stationSnap = new Snap(stop.stop_lat, stop.stop_lon);
            stationSnap.setClosestNode(node);
            return stationSnap;
        }
    }
    throw new PointNotFoundException("Cannot find station: " + station.stop_id, indexForErrorMessage);
}
Also used : Stop(com.conveyal.gtfs.model.Stop) PointNotFoundException(com.graphhopper.util.exceptions.PointNotFoundException) Map(java.util.Map) GTFSFeed(com.conveyal.gtfs.GTFSFeed) Snap(com.graphhopper.storage.index.Snap)

Aggregations

Stop (com.conveyal.gtfs.model.Stop)11 GTFSFeed (com.conveyal.gtfs.GTFSFeed)4 StopTime (com.conveyal.gtfs.model.StopTime)4 EdgeIteratorState (com.graphhopper.util.EdgeIteratorState)4 ArrayList (java.util.ArrayList)3 Collectors (java.util.stream.Collectors)3 IntArrayList (com.carrotsearch.hppc.IntArrayList)2 Transfer (com.conveyal.gtfs.model.Transfer)2 Trip (com.conveyal.gtfs.model.Trip)2 GtfsRealtime (com.google.transit.realtime.GtfsRealtime)2 EdgeFilter (com.graphhopper.routing.util.EdgeFilter)2 Weighting (com.graphhopper.routing.weighting.Weighting)2 Graph (com.graphhopper.storage.Graph)2 NodeAccess (com.graphhopper.storage.NodeAccess)2 Snap (com.graphhopper.storage.index.Snap)2 PointNotFoundException (com.graphhopper.util.exceptions.PointNotFoundException)2 Instant (java.time.Instant)2 java.util (java.util)2 Map (java.util.Map)2 Stream (java.util.stream.Stream)2