OSMPedestrianProcessor.java
package org.heigit.ors.routing.graphhopper.extensions.reader.osmfeatureprocessors;
import com.graphhopper.reader.ReaderWay;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class OSMPedestrianProcessor {
private final List<String> allowed;
public OSMPedestrianProcessor() {
allowed = new ArrayList<>();
allowed.add("yes");
allowed.addAll(Arrays.asList("yes", "designated", "permissive", "destination"));
}
/**
* Determine if the way is pedestrianised, i.e. that a person should be able to traverse it on foot.
*
* @param way
* @return
*/
public boolean isPedestrianisedWay(ReaderWay way) {
boolean isPedestrian = false;
if (way.hasTag("highway")) {
String highwayType = way.getTag("highway");
switch (highwayType) {
case "footway", "living_street", "pedestrian", "path", "track" -> isPedestrian = true;
default -> {
}
}
}
if (way.hasTag("public_transport") && way.getTag("public_transport").equals("platform"))
isPedestrian = true;
if (way.hasTag("foot")) {
String footTag = way.getTag("foot");
if (allowed.contains(footTag)) {
isPedestrian = true;
}
}
return isPedestrian;
}
}