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)");
}
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();
}
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();
}
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);
}
}
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);
}
Aggregations