Skip to content

Commit a6891de

Browse files
committed
Add stepFree as network config option
and reduce duplicate code
1 parent dc178d5 commit a6891de

File tree

4 files changed

+18
-53
lines changed

4 files changed

+18
-53
lines changed

src/main/java/com/conveyal/r5/analyst/cluster/TransportNetworkConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,10 @@ public class TransportNetworkConfig {
6969
*/
7070
public Double maxIncline;
7171

72+
/**
73+
* When used with certain TraversalPermissionLabelers (NoSteepInclinesTraversalPermissionLabeler for now), whether
74+
* to exclude pedestrian traversal of ways with highway=stairs tags and nodes with kerb=raised tags
75+
*/
76+
public boolean stepFree;
77+
7278
}

src/main/java/com/conveyal/r5/labeling/NoSteepInclinesTraversalPermissionLabeler.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.conveyal.r5.labeling;
22

33
import com.conveyal.osmlib.Way;
4+
import com.conveyal.r5.analyst.cluster.TransportNetworkConfig;
45
import com.conveyal.r5.streets.EdgeStore;
56

67
/**
@@ -10,8 +11,10 @@
1011
public class NoSteepInclinesTraversalPermissionLabeler extends USTraversalPermissionLabeler {
1112

1213
Double maxIncline;
13-
public NoSteepInclinesTraversalPermissionLabeler (Double maxIncline) {
14-
if (maxIncline != null) this.maxIncline = maxIncline;
14+
boolean stepFree;
15+
public NoSteepInclinesTraversalPermissionLabeler (TransportNetworkConfig config) {
16+
if (config.maxIncline != null) this.maxIncline = config.maxIncline;
17+
this.stepFree = config.stepFree;
1518
}
1619
@Override
1720
public RoadPermission getPermissions(Way way) {
@@ -33,6 +36,10 @@ else if (maxIncline != null) {
3336
}
3437
}
3538

39+
if (stepFree && way.hasTag("highway", "steps")) {
40+
rp.disallowPedestrians();
41+
}
42+
3643
return rp;
3744
}
3845

src/main/java/com/conveyal/r5/labeling/StepFreeTraversalPermissionLabeler.java

Lines changed: 0 additions & 45 deletions
This file was deleted.

src/main/java/com/conveyal/r5/streets/StreetLayer.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import com.conveyal.r5.labeling.RoadPermission;
1818
import com.conveyal.r5.labeling.SidewalkTraversalPermissionLabeler;
1919
import com.conveyal.r5.labeling.SpeedLabeler;
20-
import com.conveyal.r5.labeling.StepFreeTraversalPermissionLabeler;
2120
import com.conveyal.r5.labeling.StreetClass;
2221
import com.conveyal.r5.labeling.TraversalPermissionLabeler;
2322
import com.conveyal.r5.labeling.TypeOfEdgeLabeler;
@@ -222,8 +221,7 @@ public StreetLayer(TransportNetworkConfig config) {
222221
permissionLabeler = switch (config.traversalPermissionLabeler) {
223222
case "sidewalk" -> new SidewalkTraversalPermissionLabeler();
224223
case "noSidewalkCycling" -> new NoSidewalkCyclingTraversalPermissionLabeler();
225-
case "noSteepWays" -> new NoSteepInclinesTraversalPermissionLabeler(config.maxIncline);
226-
case "stepFree" -> new StepFreeTraversalPermissionLabeler(config.maxIncline);
224+
case "noSteepWays" -> new NoSteepInclinesTraversalPermissionLabeler(config);
227225
case null -> new USTraversalPermissionLabeler();
228226
default -> throw new IllegalArgumentException(
229227
"Unknown traversal permission labeler: " + config.traversalPermissionLabeler
@@ -233,9 +231,8 @@ public StreetLayer(TransportNetworkConfig config) {
233231
permissionLabeler = new USTraversalPermissionLabeler();
234232
}
235233

236-
if (permissionLabeler instanceof StepFreeTraversalPermissionLabeler) {
237-
stepFree = ((StepFreeTraversalPermissionLabeler) permissionLabeler).requireStepFree;
238-
}
234+
stepFree = config.stepFree;
235+
239236
}
240237

241238
/** Load street layer from an OSM-lib OSM DB */

0 commit comments

Comments
 (0)