From b0a944f499adc3b9bddc57274d967f610f4b7ef2 Mon Sep 17 00:00:00 2001 From: Aina Date: Wed, 7 Dec 2022 14:59:45 +0100 Subject: [PATCH 1/2] Add more metadata to pt leg. Add: - route_type - route_url - route_short_name - route_long_name --- .../main/java/com/graphhopper/gtfs/TripFromLabel.java | 7 +++++++ web-api/src/main/java/com/graphhopper/Trip.java | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java b/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java index 605a6ea746e..d290555a927 100644 --- a/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java +++ b/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java @@ -21,6 +21,7 @@ import com.conveyal.gtfs.GTFSFeed; import com.conveyal.gtfs.model.Stop; import com.conveyal.gtfs.model.StopTime; +import com.conveyal.gtfs.model.Route; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Maps; @@ -356,11 +357,17 @@ private List parsePartitionToLegs(List path, Graph g .forEach(stopsFromBoardHopDwellEdges::next); stopsFromBoardHopDwellEdges.finish(); List stops = stopsFromBoardHopDwellEdges.stops; + GTFSFeed gtfsFeed = gtfsStorage.getGtfsFeeds().get(feedId); + Route route = gtfsFeed.routes.get(tripDescriptor.getRouteId()); result.add(new Trip.PtLeg( feedId, partition.get(0).edge.getTransfers() == 0, tripDescriptor.getTripId(), tripDescriptor.getRouteId(), + route.route_type, + route.route_url == null ? "" : route.route_url.toString(), + route.route_short_name, + route.route_long_name, Optional.ofNullable(gtfsStorage.getGtfsFeeds().get(feedId).trips.get(tripDescriptor.getTripId())).map(t -> t.trip_headsign).orElse("extra"), stops, partition.stream().mapToDouble(t -> t.edge.getDistance()).sum(), diff --git a/web-api/src/main/java/com/graphhopper/Trip.java b/web-api/src/main/java/com/graphhopper/Trip.java index 99eda350448..fb6d0d803d6 100644 --- a/web-api/src/main/java/com/graphhopper/Trip.java +++ b/web-api/src/main/java/com/graphhopper/Trip.java @@ -102,8 +102,12 @@ public static class PtLeg extends Leg { public final List stops; public final String trip_id; public final String route_id; + public final int route_type; + public final String route_url; + public final String route_short_name; + public final String route_long_name; - public PtLeg(String feedId, boolean isInSameVehicleAsPrevious, String tripId, String routeId, String headsign, List stops, double distance, long travelTime, Geometry geometry) { + public PtLeg(String feedId, boolean isInSameVehicleAsPrevious, String tripId, String routeId, int routeType, String routeUrl, String routeShortName, String routeLongName, String headsign, List stops, double distance, long travelTime, Geometry geometry) { super("pt", stops.get(0).stop_name, geometry, distance); this.feed_id = feedId; this.isInSameVehicleAsPrevious = isInSameVehicleAsPrevious; @@ -112,6 +116,10 @@ public PtLeg(String feedId, boolean isInSameVehicleAsPrevious, String tripId, St this.trip_headsign = headsign; this.travelTime = travelTime; this.stops = stops; + this.route_type = routeType; + this.route_url = routeUrl; + this.route_short_name = routeShortName; + this.route_long_name = routeLongName; } @Override From feb27019788e1e91799a73350198fe66d174ae53 Mon Sep 17 00:00:00 2001 From: Aina Date: Wed, 7 Dec 2022 15:54:51 +0100 Subject: [PATCH 2/2] Check route exists in GTFS before extracting infos --- .../com/graphhopper/gtfs/TripFromLabel.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java b/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java index d290555a927..76632fe4a93 100644 --- a/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java +++ b/reader-gtfs/src/main/java/com/graphhopper/gtfs/TripFromLabel.java @@ -358,16 +358,27 @@ private List parsePartitionToLegs(List path, Graph g stopsFromBoardHopDwellEdges.finish(); List stops = stopsFromBoardHopDwellEdges.stops; GTFSFeed gtfsFeed = gtfsStorage.getGtfsFeeds().get(feedId); + + int routeType = -1; + String routeUrl = null; + String routeShortName = ""; + String routeLongName = ""; Route route = gtfsFeed.routes.get(tripDescriptor.getRouteId()); + if (route != null) { + routeType = route.route_type; + routeUrl = route.route_url == null ? "" : route.route_url.toString(); + routeShortName = route.route_short_name; + routeLongName = route.route_long_name; + } result.add(new Trip.PtLeg( feedId, partition.get(0).edge.getTransfers() == 0, tripDescriptor.getTripId(), tripDescriptor.getRouteId(), - route.route_type, - route.route_url == null ? "" : route.route_url.toString(), - route.route_short_name, - route.route_long_name, + routeType, + routeUrl, + routeShortName, + routeLongName, Optional.ofNullable(gtfsStorage.getGtfsFeeds().get(feedId).trips.get(tripDescriptor.getTripId())).map(t -> t.trip_headsign).orElse("extra"), stops, partition.stream().mapToDouble(t -> t.edge.getDistance()).sum(),