org.opentripplanner.inspector.TraversalPermissionsEdgeRenderer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of otp Show documentation
Show all versions of otp Show documentation
The OpenTripPlanner multimodal journey planning system
/* This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see . */
package org.opentripplanner.inspector;
import java.awt.Color;
import org.opentripplanner.inspector.EdgeVertexTileRenderer.EdgeVertexRenderer;
import org.opentripplanner.inspector.EdgeVertexTileRenderer.EdgeVisualAttributes;
import org.opentripplanner.inspector.EdgeVertexTileRenderer.VertexVisualAttributes;
import org.opentripplanner.routing.edgetype.*;
import org.opentripplanner.routing.edgetype.StreetEdge;
import org.opentripplanner.routing.graph.Edge;
import org.opentripplanner.routing.graph.Vertex;
import org.opentripplanner.routing.vertextype.*;
/**
* Render traversal permissions for each edge by color and label (walk, bicycle, car, stairs).
*
* @author laurent
*/
public class TraversalPermissionsEdgeRenderer implements EdgeVertexRenderer {
private static final Color LINK_COLOR_EDGE = Color.ORANGE;
private static final Color STAIRS_COLOR_EDGE = Color.PINK;
private static final Color STREET_COLOR_VERTEX = Color.DARK_GRAY;
private static final Color TRANSIT_STOP_COLOR_VERTEX = new Color(0.0f, 0.0f, 0.8f);
private static final Color TRANSIT_STATION_COLOR_VERTEX = new Color(0.4f, 0.0f, 0.8f);
private static final Color BIKE_RENTAL_COLOR_VERTEX = new Color(0.0f, 0.7f, 0.0f);
private static final Color PARK_AND_RIDE_COLOR_VERTEX = Color.RED;
private static final Color BARRIER_COLOR_VERTEX = new Color(0.5803922f, 0.21568628f,
0.24313726f);
@Override
public boolean renderEdge(Edge e, EdgeVisualAttributes attrs) {
if (e instanceof StreetEdge) {
StreetEdge pse = (StreetEdge) e;
if (pse.isStairs()) {
attrs.color = STAIRS_COLOR_EDGE;
attrs.label = "stairs";
} else {
attrs.color = getColor(pse.getPermission());
attrs.label = getLabel(pse.getPermission());
}
} else if (e instanceof StreetTransitLink) {
attrs.color = LINK_COLOR_EDGE;
attrs.label = "link";
} else if (e instanceof StreetBikeRentalLink) {
attrs.color = LINK_COLOR_EDGE;
attrs.label = "link";
} else if (e instanceof ParkAndRideLinkEdge) {
attrs.color = LINK_COLOR_EDGE;
attrs.label = "link";
} else {
return false;
}
return true;
}
@Override
public boolean renderVertex(Vertex v, VertexVisualAttributes attrs) {
if (v instanceof IntersectionVertex) {
attrs.color = STREET_COLOR_VERTEX;
if (v instanceof BarrierVertex) {
attrs.color = BARRIER_COLOR_VERTEX;
}
} else if (v instanceof TransitStop) {
attrs.color = TRANSIT_STOP_COLOR_VERTEX;
attrs.label = v.getName();
} else if (v instanceof TransitStation) {
attrs.color = TRANSIT_STATION_COLOR_VERTEX;
attrs.label = v.getName();
} else if (v instanceof BikeRentalStationVertex) {
attrs.color = BIKE_RENTAL_COLOR_VERTEX;
attrs.label = v.getName();
} else if (v instanceof ParkAndRideVertex) {
attrs.color = PARK_AND_RIDE_COLOR_VERTEX;
attrs.label = v.getName();
} else {
return false;
}
return true;
}
private Color getColor(StreetTraversalPermission permissions) {
/*
* We use the trick that there are 3 main traversal modes (WALK, BIKE and CAR) and 3 color
* channels (R, G, B).
*/
float r = 0.2f;
float g = 0.2f;
float b = 0.2f;
if (permissions.allows(StreetTraversalPermission.PEDESTRIAN))
g += 0.5f;
if (permissions.allows(StreetTraversalPermission.BICYCLE))
b += 0.5f;
if (permissions.allows(StreetTraversalPermission.CAR))
r += 0.5f;
// TODO CUSTOM_VEHICLE (?)
return new Color(r, g, b);
}
private String getLabel(StreetTraversalPermission permissions) {
StringBuffer sb = new StringBuffer();
if (permissions.allows(StreetTraversalPermission.PEDESTRIAN))
sb.append("walk,");
if (permissions.allows(StreetTraversalPermission.BICYCLE))
sb.append("bike,");
if (permissions.allows(StreetTraversalPermission.CAR))
sb.append("car,");
if (sb.length() > 0) {
sb.setLength(sb.length() - 1); // Remove last comma
} else {
sb.append("none");
}
return sb.toString();
}
@Override
public String getName() {
return "Traversal permissions";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy