ES:OpenTripPlanner
Si comprendes el artículo original en inglés, por favor, ayuda a completar esta traducción al español. Lee las instrucciones sobre cómo traducir este wiki.
Parece que nadie está trabajando en la traducción en este momento. Anímate y colabora en la tarea de traducción.
Quick links |
---|
Demostraciones |
OpenTripPlanner (OTP) [1] es un esfuerzo de colaboración entre TriMet [2] (la agencia de transporte público que opera en Portland, OR, EE.UU.), OpenPlans [3], y los desarrolladores de Five Points [4], OneBusAway [5], y Graphserver [6], así como varios desarrolladores independientes, para desarrollar un sistema software de planificación de viaje multimodal de código abierto.
Características
- Diseñado para usar fuentes de datos libres como OpenStreetMap y con soporte de General Transit Feed Specification (GTFS) [7]
- Permite a los usuarios planificar un viaje pudiendo combinar multiples medios de transporte, tales como la bicicleta o andando para llegar hasta el transporte público.
- Intermodalidad entre los diferentes transportes públicos.
- El usuario puede especificar los horarios de salida y llegada para el transporte público.
- Criterios opcionales de rutado
- Viaje más rápido
- Menor número de transbordos
- Un "triángulo de preferencia para la bicicleta" que permite al usuario ajustar su ruta entre rutas más rápidas, más llanas, y más amigables para las bicis.
- Se pueden incorporar sistemas de bicicletas compartidas.
- Accesibilidad para sillas de ruedas.
- Máxima distancia andando hasta coger el transporte público.
- Geocodificación a través del puntero del ratón para determinar el origen y el destino.
- Enlaces permanentes disponibles para las rutas generadas.
- Enrutamiento en plazas peatonales (highway=pedestrian, area=yes)
- Soporte a la planificación de viajes que combinan servicios de tráfico y bicicletas compartidas.
- Desplegable como sitio web para la planificación de viajes multimodales que se puede ofrecer a través de navegadores web estándar. Hay varias instancias de demostración [8] de OpenTripPlanner.
Datos
OpenTripPlanner se basa en la especificación General Transit Feed Specification (GTFS) para describir los horarios y rutas del transporte público. Se puede usar OpenStreetMap (o fuentes de datos comerciales) para los datos sobre las aceras, infraestructuras para las bicicletas y calles. Los dos orígenes de datos están vinculados a través de paradas de transporte público, que forman parte de ambos conjuntos de datos. OpenTripPlanner también se puede enlazar con el conjunto de datos de elevaciones nacional de EE.UU. (US National Elevation Dataset -NED) [9] y proporcionar un gráfico de elevación para las rutas en bicicleta. La compatibilidad con conjuntos de datos de elevación similares para otros países es desconocida.
Las descripciones detalladas de los diferentes tipos de datos que OpenTripPlanner puede usar para construir una red para el rutado, o grafo, están disponibles en la página de OpenTripPlanner GraphBuilder.
Hay también en marcha trabajos para integrar los datos de tráfico en tiempo real para los tiempos estimados de llegada en los enrutados de tráfico OTP, basado en una investigación de un equipo de la Universidad de Berkeley, que también ha creado la aplicación móvil BayTripper (http://www.baytripper.org/) para el tráfico (Jariyasunant, J. et al. "Aplicación Móvil Planificación de Viajes con datos de tráfico en tiempo real", Actas de la Academia Nacional de Ciencias de la Junta "Transportation Research, 90 ª reunión anual, enero de 2011 EE.UU.)
Design
The core of OpenTripPlanner consists of three basic software components: a graph builder, a routing engine, and a user interface. While the primary user interface (i.e., map and visual representation of route) is written in JavaScript, the other components are written in the Java programming language on the Java Enterprise Edition (Java EE) platform. The OpenTripPlanner routing engine is integrated into a RESTful web service API that can be used with other custom client applications.
The most recent progress on the OpenTripPlanner project can be found at the OpenTripPlanner Developers Group [10], OpenTripPlanner Users Group [11], and Transit Developers Group [12] mailing lists, as well as the main OpenTripPlanner website [13].
The OpenTripPlanner source code is licensed under the GNU Lesser General Public License (LGPL) [14] and is publicly available on the OpenTripPlanner.org website.
Routing
OpenTripPlanner employs two different methods for routing: the A* algorithm and Contraction Hierarchies. Originally, OpenTripPlanner used only plain Dijkstra's algorithm and A* with a Euclidian distrance metric to route trips for all modes of transportation. Those algorithms performed very slowly on large graphs. Recent research has shown a new technique, Contraction Hierarchies [15], to perform better on large graphs. The idea behind Contraction Hierarchies is that a large graph can be contracted by removing vertices one at a time and replacing any paths through the removed vertex with a shortcut representing that path. As the OpenTripPlanner community implemented this functionality, it became apparent that transit routing would be difficult with this new approach as the nodes for transit were time-dependent. Their solution was to use core-based routing which means that only non-transit segments of routing would receive the benefit of faster performance with Contraction Hierarchies. Additional routing performance improvements in OpenTripPlanner have included implementing improved A* heuristics for transit routing (inspired by [16]).
Deployment
There are several working demo and production instances [17] of OpenTripPlanner. TriMet currently uses OpenTripPlanner for its map trip planner [18], which was made possible by a project (RLIS) to improve the OpenStreetMap data in the Portland, OR, USA area. Researchers at the University of South Florida’s Center for Urban Transportation Research in Tampa, FL, USA have set up a demonstration instance [19] and have proposed a trip planning system for the University campus that, if implemented, will use OpenTripPlanner and data from OpenStreetMap. OpenPlans is discussing deployment with organizations in several US and international cities and regions, as of early June, 2011. OpenTripPlanner.com [20] has information on hosted OpenTripPlanner solutions.
Instructions for downloading and creating your own OpenTripPlanner website deployment can be found on the OpenTripPlanner Tutorials page.
More detail on OpenTripPlanner, and discussion of the software and its use, can also be found in a recent research report from the University of South Florida [21]
Mobile Apps
OpenTripPlanner for Android [22] - An Android app for multi-modal trip planning and navigation using any OpenTripPlanner server
How OpenTripPlanner uses OSM tags for routing
Basic Permissions
Access tags (such as bicycle/foot = yes/no/designated) can be used to override default graph-building parameters.
As a default, foot and bicycle traffic is not allowed on highway=trunk, highway=trunk_link, highway=motorway, highway=motorway_link, or highway=construction.
Both are allowed on highway=pedestrian, highway=cycleway, and highway=footway.
Finally, bicycles are not allowed on highway=footway when any of the following tags appear on a footway: footway=sidewalk, public_transport=platform, or railway=platform.
Other access tags (such as access=no and access=private affect routing as well, and can be overridden similarly. While access=no prohibits all traffic, access=private disallows through traffic.
Bicycle routing
In general, weights are applied to the following tags for "bike friendly"/"safest" bicycle routing (as of 10/11/12). Weights act as multipliers, so ways with values of less than 1 appear shorter to the router, while those with values of greater than 1 appear longer.
Basic situations
Highway tag | Weight |
---|---|
highway=cycleway | 0.60 |
highway=path | 0.75 |
highway=pedestrian | 0.90 |
highway=footway | 1.1 |
highway=footway with footway=crossing | 2.5 |
highway=bridleway | 1.3 |
highway=living_street | 0.90 |
highway=unclassified | 1 |
highway=road | 1 |
highway=byway | 1.3 |
highway=track | 1.3 |
highway=service | 1.1 |
highway=residential or highway=residential_link | 0.98 |
highway=tertiary or highway=tertiary_link | 1 |
highway=secondary or highway=secondary_link | 1.5 |
highway=primary or highway=primary_link | 2.06 |
highway=trunk_link or highway=motorway_link | 2.06 |
highway=trunk | 7.47 |
highway=motorway | 8 |
Designated bike route (bicycle=designated)
Highway tag | Weight |
---|---|
highway=** (default) | 0.97 |
highway=path | 0.60 |
highway=footway | 0.75 |
highway=footway with footway=sidewalk | 1.1 |
highway=footway with footway=sidewalk and bicycle=yes instead of bicycle=designated | 2.5 |
highway=footway with footway=crossing | 1.1 |
highway=service | 0.84 |
highway=residential or highway=residential_link | 0.95 |
highway=tertiary or highway=tertiary_link | 0.97 |
highway=secondary or highway=secondary_link | 1.46 |
highway=primary or highway=primary_link | 2 |
highway=trunk_link or highway=motorway_link | 2 |
highway=trunk | 7.25 |
highway=motorway | 7.76 |
Highway tag | Weight |
---|---|
highway=** (default) | 0.87 |
highway=service | 0.77 |
highway=residential or highway=residential_link | 0.77 |
highway=tertiary or highway=tertiary_link | 0.87 |
highway=secondary or highway=secondary_link | 0.96 |
highway=primary or highway=primary_link | 1.15 |
highway=trunk_link or highway=motorway_link | 1.15 |
highway=trunk | 1.5 |
highway=motorway | 2 |
Highway tag | Weight |
---|---|
highway=** (default) | 0.73 |
highway=service | 0.70 |
highway=residential or highway=residential_link | 0.70 |
highway=tertiary or highway=tertiary_link | 0.75 |
highway=secondary or highway=secondary_link | 0.80 |
highway=primary or highway=primary_link | 0.85 |
highway=trunk_link | 0.85 |
highway=trunk | 0.9 |
Shared bike/vehicle lanes (marked with sharrows) (cycleway=shared_lane)
Highway tag | Weight |
---|---|
highway=** (default) | 0.77 |
highway=service | 0.73 |
highway=residential or highway=residential_link | 0.77 |
highway=tertiary or highway=tertiary_link | 0.83 |
highway=secondary or highway=secondary_link | 1.25 |
highway=primary or highway=primary_link | 1.75 |
Shared bike/bus lanes (cycleway=share_busway)
Highway tag | Weight |
---|---|
highway=** (default) | 0.92 |
highway=service | 0.85 |
highway=residential or highway=residential_link | 0.85 |
highway=tertiary or highway=tertiary_link | 0.92 |
highway=secondary or highway=secondary_link | 0.99 |
highway=primary or highway=primary_link | 1.25 |
highway=trunk_link or highway=motorway_link | 1.25 |
highway=trunk | 1.75 |
highway=motorway | 2.5 |
Against motorized traffic (cycleway=opposite)
Highway tag | Weight (forward, backward) |
---|---|
highway=** (default) | 1.0, 1.4 |
highway=service | 1.1, 1.1 |
highway=residential or highway=residential_link | 0.98, 0.98 |
highway=tertiary or highway=tertiary_link | 1, 1 |
highway=secondary or highway=secondary_link | 1.5, 1.71 |
highway=primary or highway=primary_link | 2.06, 2.99 |
Special weights for additional tags on highway=track
Other tags | Weight |
---|---|
bicycle=yes | 1.18 |
bicycle=yes and surface=** | 1.18 |
bicycle=designated | 0.99 |
bicycle=designated and surface=** | 0.99 |
surface=** | 1.3 |
Special weights for surface tags (surface=**)
Surface tag | Weight |
---|---|
surface=fine_gravel or surface=sand | 100 |
surface=unpaved or surface=compacted | 1.18 |
surface=cobblestone, surface=paving_stones, surface=grass_paver, surface=pebblestone, surface=gravel, surface=ground, surface=dirt, surface=earth, surface=grass, surface=mud, surface=wood, surface=metal, or surface=artificial_turf | 1.5 |
surface=tartan | 3 |
For the TriMet deployment, a couple of special mixins have also been included that indicate caution areas for cycling that appear in jurisdictional data/maps
Other tags | Weight |
---|---|
RLIS:bicycle=caution_area | 1.45 |
CCGIS:bicycle=caution_area | 1.45 |
The above weights also apply to permutations such as cycleway=opposite_lane, cycleway=opposite_track, cycleway:right=**, and cycleway:left=** .
Elevators
A reasonably new feature for OpenTripPlanner is the ability to read highway=elevator nodes. When these nodes are connected to ways with levels defined by level=** tags, layer=** tags or level_map relations, they should be interpreted correctly.