Skip to content

Commit

Permalink
Merge pull request #239 from HSLdevcom/stop_transport_mode
Browse files Browse the repository at this point in the history
Add field 'vehicleMode' to Stop
  • Loading branch information
vesameskanen committed Aug 16, 2018
2 parents 89074b4 + 19232b6 commit 6577fe6
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 20 deletions.
45 changes: 25 additions & 20 deletions src/main/java/org/opentripplanner/gtfs/GtfsLibrary.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ public static String getRouteName(Route route) {
return route.getLongName();
}

public static TraverseMode getTraverseMode(Route route) {
int routeType = route.getType();
public static TraverseMode getTraverseMode(int routeType) {
/* TPEG Extension https://groups.google.com/d/msg/gtfs-changes/keT5rTPS7Y0/71uMz2l6ke0J */
if (routeType >= 100 && routeType < 200){ // Railway Service
return TraverseMode.RAIL;
Expand Down Expand Up @@ -130,27 +129,33 @@ public static TraverseMode getTraverseMode(Route route) {
}
/* Original GTFS route types. Should these be checked before TPEG types? */
switch (routeType) {
case 0:
return TraverseMode.TRAM;
case 1:
return TraverseMode.SUBWAY;
case 2:
return TraverseMode.RAIL;
case 3:
return TraverseMode.BUS;
case 4:
return TraverseMode.FERRY;
case 5:
return TraverseMode.CABLE_CAR;
case 6:
return TraverseMode.GONDOLA;
case 7:
return TraverseMode.FUNICULAR;
default:
throw new IllegalArgumentException("unknown gtfs route type " + routeType);
case 0:
return TraverseMode.TRAM;
case 1:
return TraverseMode.SUBWAY;
case 2:
return TraverseMode.RAIL;
case 3:
return TraverseMode.BUS;
case 4:
return TraverseMode.FERRY;
case 5:
return TraverseMode.CABLE_CAR;
case 6:
return TraverseMode.GONDOLA;
case 7:
return TraverseMode.FUNICULAR;
default:
throw new IllegalArgumentException("unknown gtfs route type " + routeType);
}
}

public static TraverseMode getTraverseMode(Route route) {
int routeType = route.getType();

return getTraverseMode(routeType);
}

private static class GtfsContextImpl implements GtfsContext {

private GtfsFeedId _feedId;
Expand Down
22 changes: 22 additions & 0 deletions src/main/java/org/opentripplanner/index/IndexGraphQLSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

Expand Down Expand Up @@ -1253,6 +1254,27 @@ public IndexGraphQLSchema(GraphIndex index) {
.description("The raw GTFS route type used by routes which pass through this stop. For the list of possible values, see: https://developers.google.com/transit/gtfs/reference/#routestxt and https://developers.google.com/transit/gtfs/reference/extended-route-types")
.type(Scalars.GraphQLInt)
.build())
.field(GraphQLFieldDefinition.newFieldDefinition()
.name("vehicleMode")
.description("Transport mode (e.g. `BUS`) used by routes which pass through this stop or `null` if mode cannot be determined, e.g. in case no routes pass through the stop. \n Note that also other types of vehicles may use the stop, e.g. tram replacement buses might use stops which have `TRAM` as their mode.")
.type(modeEnum)
.dataFetcher(environment -> {
try {
return GtfsLibrary.getTraverseMode(((Stop)environment.getSource()).getVehicleType());
} catch (IllegalArgumentException iae) {
//If 'vehicleType' is not specified, guess vehicle mode from list of patterns
return index.patternsForStop.get(environment.getSource())
.stream()
.map(pattern -> pattern.mode)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.entrySet()
.stream()
.max(Comparator.comparing(Map.Entry::getValue))
.map(e -> e.getKey())
.orElse(null);
}
})
.build())
.field(GraphQLFieldDefinition.newFieldDefinition()
.name("platformCode")
.description("Identifier of the platform, usually a number. This value is only present for stops that are part of a station")
Expand Down

0 comments on commit 6577fe6

Please sign in to comment.