ES:OpenTripPlanner
| 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.)
Diseño
El núcleo de OpenTripPlanner está compuesto por tres componentes principales de software: un constructor de grafos, un motor de enrutamiento y una interfaz de usuario. Mientras que la interfaz principal de usuario, es decir, el mapa y la representación visual de la ruta, está desarrollada en JavaScript, los demás componentes están escritos en el lenguaje de programación Java sobre la plataforma Java Enterprise Edition (Java EE). El motor de enrutamiento de OpenTripPlanner está integrado en una API de servicio web RESTful, que puede utilizarse con otras aplicaciones cliente personalizadas.
Los avances más recientes del proyecto OpenTripPlanner pueden consultarse en las listas de correo del Grupo de Desarrolladores de OpenTripPlanner [10], el Grupo de Usuarios de OpenTripPlanner [11] y el Grupo de Desarrolladores de Transit [12], así como en el sitio web principal de OpenTripPlanner [13].
El código fuente de OpenTripPlanner está licenciado bajo la Licencia Pública General Reducida de GNU (LGPL) [14] y se encuentra disponible públicamente en el sitio web de OpenTripPlanner.org.
Enrutamiento
OpenTripPlanner emplea dos métodos diferentes para el enrutamiento: el algoritmo A* y las jerarquías de contracción. Originalmente, OpenTripPlanner utilizaba solamente el algoritmo Dijkstra simple y A* con una métrica de distancia euclidiana para calcular viajes en todos los modos de transporte. Esos algoritmos funcionaban con mucha lentitud en grafos grandes.
Investigaciones recientes han demostrado que una nueva técnica, denominada jerarquías de contracción [15], puede ofrecer un mejor rendimiento en grafos de gran tamaño. La idea principal de las jerarquías de contracción es que un grafo grande puede contraerse eliminando vértices uno por uno y reemplazando los caminos que pasan por el vértice eliminado por un atajo que representa dicho camino.
A medida que la comunidad de OpenTripPlanner implementó esta funcionalidad, se hizo evidente que el enrutamiento del transporte público sería difícil con este nuevo enfoque, ya que los nodos de transporte público dependen del tiempo. La solución fue utilizar enrutamiento basado en núcleo, lo que significa que solo los segmentos de enrutamiento que no pertenecen al transporte público reciben el beneficio de mayor rendimiento de las jerarquías de contracción. Otras mejoras de rendimiento en OpenTripPlanner incluyeron la implementación de heurísticas A* mejoradas para el enrutamiento de transporte público, inspiradas en [16].
Despliegue
Existen varias instancias de demostración y producción en funcionamiento [17] de OpenTripPlanner. TriMet utiliza actualmente OpenTripPlanner para su planificador de viajes basado en mapas [18], lo cual fue posible gracias a un proyecto (RLIS) destinado a mejorar los datos de OpenStreetMap en el área de Portland, Oregón, Estados Unidos.
Investigadores del Center for Urban Transportation Research de la Universidad del Sur de Florida, en Tampa, Florida, Estados Unidos, han configurado una instancia de demostración [19] y propusieron un sistema de planificación de viajes para el campus universitario que, en caso de implementarse, utilizará OpenTripPlanner y datos de OpenStreetMap.
OpenPlans se encuentra analizando despliegues con organizaciones de varias ciudades y regiones de Estados Unidos y de otros países, según información de principios de junio de 2011. OpenTripPlanner.com [20] contiene información sobre soluciones alojadas de OpenTripPlanner.
Las instrucciones para descargar y crear tu propio despliegue web de OpenTripPlanner se encuentran en la página de tutoriales de OpenTripPlanner [21].
También puede encontrarse más información sobre OpenTripPlanner, así como discusiones sobre el software y su uso, en un informe de investigación reciente de la Universidad del Sur de Florida [22].
Aplicaciones móviles
OpenTripPlanner para Android [23] es una aplicación de Android para planificación de viajes multimodales y navegación utilizando cualquier servidor de OpenTripPlanner.
Cómo utiliza OpenTripPlanner las etiquetas de OSM para el enrutamiento
Permisos básicos
Las etiquetas de acceso, como bicycle/foot = yes/no/designated, pueden utilizarse para sobrescribir los parámetros predeterminados de construcción del grafo.
De forma predeterminada, el tránsito peatonal y en bicicleta no está permitido en highway=trunk, highway=trunk_link, highway=motorway, highway=motorway_link ni highway=construction.
Ambos están permitidos en highway=pedestrian, highway=cycleway y highway=footway.
Finalmente, las bicicletas no están permitidas en highway=footway cuando en una vía peatonal aparece cualquiera de las siguientes etiquetas: footway=sidewalk, public_transport=platform o railway=platform.
Otras etiquetas de acceso, como access=no y access=private, también afectan al enrutamiento y pueden sobrescribirse de forma similar. Mientras que access=no prohíbe todo tipo de tránsito, access=private no permite el tránsito de paso.
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.