Documentación Técnica — Metodología de Cálculo, Fuentes de Datos, Limitaciones y Marco Legal
SECRETARÍA DE TRANSPORTE — PROVINCIA DE CATAMARCAContexto institucional, propósito de la herramienta y resumen de capacidades.
RutaSegura es una herramienta de análisis de seguridad vial y navegación asistida desarrollada por la Secretaría de Transporte del Gobierno de la Provincia de Catamarca, República Argentina.
Su propósito es asistir a conductores particulares, transportistas y operadores logísticos en la planificación de viajes seguros por rutas que presentan desafíos geográficos significativos: caminos de montaña con pendientes pronunciadas, curvas cerradas, superficies de ripio y tierra, altitudes extremas y condiciones climáticas adversas.
En la provincia de Catamarca y el noroeste argentino, gran parte del transporte de cargas mineras, productivas y de pasajeros transita por rutas de montaña, caminos de ripio y huellas donde las condiciones viales cambian drásticamente en pocos kilómetros. La falta de información anticipada sobre las condiciones del camino —pendientes, estado de la superficie, clima, curvas— es un factor determinante en la siniestralidad vial de la región.
RutaSegura aborda este problema combinando datos abiertos (OpenStreetMap, Open-Meteo) con infraestructura propia (OSRM y OpenTopoData self-hosted) y modelos de ingeniería vial (normas DNV, AASHTO, Ley 24.449) para producir un análisis integral de riesgo por tramo, antes y durante el viaje.
Organismo: Secretaría de Transporte — Gobierno de la Provincia de Catamarca, República Argentina.
Uso previsto: Herramienta de apoyo a la planificación vial, concientización sobre riesgos en rutas provinciales y asistencia al conductor. De uso libre y gratuito.
Fuentes de datos: La herramienta combina fuentes de datos abiertas (OpenStreetMap, Open-Meteo, Nominatim) con servicios alojados en servidor propio (OSRM para ruteo, OpenTopoData para elevación y OSM Data API para datos geográficos — todos desplegados en VPS propio), sin depender de servicios propietarios ni de pago.
Marco normativo: Los cálculos se basan en las Normas de Diseño Geométrico de la Dirección Nacional de Vialidad (DNV), tablas AASHTO, la Ley Nacional de Tránsito N° 24.449 (Art. 51, límites de velocidad) y la normativa CCT 40/89 CNRT (límites de conducción para vehículos pesados).
RutaSegura no es una herramienta estática: crece y mejora con cada persona que la usa. Al estar construida sobre datos abiertos y colaborativos — principalmente OpenStreetMap —, cada aporte de los usuarios se traduce directamente en un análisis más preciso para todos los que transitan después.
¿Cómo podés contribuir?
surface=gravel) mejora automáticamente el análisis de RutaSegura en ese tramo.Esta es la realidad: al usar fuentes abiertas, la única forma de lograr precisión total es con la participación de quienes recorren los caminos todos los días. Cada reporte cuenta. Cada corrección suma. La herramienta es tan buena como la comunidad que la respalda.
RutaSegura realiza un análisis teórico y estimativo basado exclusivamente en datos de fuentes abiertas y modelos matemáticos de referencia. Es fundamental que el usuario comprenda sus limitaciones:
Para el detalle completo de limitaciones, ver §12 — Limitaciones y Alcance. Para el marco legal y exclusión de responsabilidad, ver §13 — Marco Legal.
El sistema ejecuta una secuencia de etapas para producir el reporte integral de seguridad vial. Cada etapa alimenta a la siguiente, culminando en la navegación asistida en tiempo real.
turf.along), con respaldo automático en Open-Meteo.waterway), localidades (place), escuelas (amenity=school) y vías (highway con geometría completa) dentro del área delimitante de la ruta. Si el servidor VPS no responde, cae automáticamente a Overpass API como respaldo.deriveSurfaceData() muestrea la ruta cada 1 km y asigna a cada punto la vía OSM más cercana (prioridad: superficie explícita > rango vial > distancia). Se extraen las etiquetas surface, highway, tracktype, maxspeed y name/ref.La aplicación consume exclusivamente fuentes de datos abiertas y gratuitas. A continuación, el detalle de cada una.
VPS propio — respaldo: router.project-osrm.org
Motor de ruteo vehicular de código abierto basado en datos de OpenStreetMap, desplegado en servidor propio con datos de Argentina actualizados (Geofabrik). Provee la geometría de la ruta (coordenadas GeoJSON), la distancia total en metros, la duración estimada en segundos y los pasos de navegación (steps). Si el servidor propio no responde, el sistema cae automáticamente al demo público.
La ruta devuelta corresponde al camino más rápido por la red vial disponible en OSM, no necesariamente el más corto ni el más seguro.
VPS propio — respaldo: api.open-meteo.com/v1/elevation
Retorna la elevación en metros sobre el nivel del mar para cada punto de la ruta. Utiliza el modelo digital de elevación Copernicus GLO-30 (ESA/Copernicus) con resolución de 30 metros, desplegado en servidor propio. Los puntos se muestrean uniformemente por distancia (cada ~200 m como mínimo) mediante turf.along(), garantizando cobertura homogénea independientemente de la densidad de puntos de la ruta. Se procesan en lotes de 100. Si el servidor propio no responde, cae automáticamente a Open-Meteo.
api.open-meteo.com/v1/forecast
Pronóstico meteorológico horario para los próximos 3 días. Se consultan 3 puntos de la ruta (origen, punto medio y destino) y se aplica una combinación de peor escenario: se selecciona el código WMO de mayor riesgo, la temperatura mínima, el viento máximo y la mayor probabilidad de precipitación. Variables consultadas: temperatura (°C), probabilidad de precipitación (%), precipitación acumulada (mm), velocidad del viento (km/h), código WMO del tiempo, amanecer y atardecer.
Se selecciona la hora más cercana a la hora de salida indicada por el usuario. Los datos de amanecer/atardecer se obtienen del punto medio para la evaluación de nocturnidad por segmento (§6.8).
VPS propio (puerto 5003) — respaldo: Overpass API (overpass-api.de + servidores espejo)
Base de datos SQLite con índices espaciales R-Tree, construida a partir de argentina-latest.osm.pbf (Geofabrik), actualizada semanalmente mediante tarea programada. Tiempo de respuesta típico: ~12 ms (vs. 5-30 segundos de Overpass). Si el servidor VPS no responde (límite de espera: 8 s), el sistema cae automáticamente a Overpass API con conmutación entre 3 servidores.
La base de datos contiene 17 tipos de datos extraídos de Argentina:
waterway) — Ríos, arroyos, canales. Para detección de zonas inundables y riesgo de hielo.place~city|town|village) — Para detección de zonas urbanas.amenity=school) — Para detección de zonas escolares.highway, con geometría completa) — 1.38M segmentos con etiquetas surface, tracktype, maxspeed, tunnel, bridge y name/ref. Se usan para derivar la superficie por tramo.Proceso de actualización: osmium descarga y filtra el PBF → exporta a GeoJSON/GeoJSONSeq → build-db.js construye la SQLite con R-Tree → fix-highways.js importa las vías en carga progresiva (archivo demasiado grande para carga en memoria). El servidor Express (server.js) sirve los servicios /osm (datos de ruta) y /pois (puntos de interés por categoría).
nominatim.openstreetmap.org
Servicio de geocodificación directa (texto → coordenadas) e inversa (coordenadas → nombre) basado en OpenStreetMap. Se usa para la búsqueda de origen/destino y para obtener el nombre de las localidades al hacer clic en el mapa.
El perfil altimétrico se analiza para clasificar el terreno según las normas de diseño geométrico de la Dirección Nacional de Vialidad (DNV).
Se calcula la pendiente promedio absoluta entre puntos consecutivos del perfil:
| Pendiente promedio | Clasificación |
|---|---|
| > 4% | Montañoso |
| 2% – 4% | Ondulado |
| < 2% | Llano |
Excepciones por altitud/desnivel acumulado: la pendiente promedio punto a punto no alcanza a capturar una subida larga pero pareja — un camino que asciende sin oscilar puede promediar una pendiente baja y clasificar como "Ondulado" pese a llegar a gran altura. Por eso, cualquiera de estos dos criterios fuerza como mínimo Montañoso, sin importar cuánto dé el promedio de pendiente (nunca bajan la clasificación, solo pueden subirla):
| Criterio | Umbral |
|---|---|
| Altitud máxima alcanzada en la ruta | ≥ 3.000 msnm |
| Desnivel acumulado (ascenso total / distancia total) | ≥ 25 m/km |
Ejemplo real: una ruta que asciende de 940 a 4.730 msnm en 140,8 km tiene una pendiente promedio de apenas ~2,7% (rango "Ondulado"), pero un desnivel acumulado de ~27 m/km y una altitud máxima muy por encima de 3.000 msnm — ambos criterios la reclasifican como Montañoso.
A partir de la versión actual, cada segmento de análisis recibe una clasificación de terreno local calculada con una ventana deslizante de 5 km centrada en el kilómetro del segmento. Esto permite que una ruta que comienza en montaña y termina en llanura tenga clasificaciones diferenciadas por tramo.
Las normas de diseño geométrico de la DNV clasifican las rutas argentinas en cuatro categorías según su Tránsito Medio Diario Anual (TMDA):
| Categoría | Tipo | TMDA | Ancho calzada | Ancho banquina |
|---|---|---|---|---|
| CAT-I | Autopista | > 3.000 | 7,30 m | 3,00 m |
| CAT-II | Ruta Nacional | 1.500 – 3.000 | 7,30 m | 2,50 m |
| CAT-III | Ruta Provincial | 500 – 1.500 | 6,70 m | 1,50 m |
| CAT-IV | Camino Rural | < 500 | 6,00 m | 1,00 m |
La velocidad de diseño se determina cruzando la categoría vial con la clasificación de terreno:
| Categoría | Llano | Ondulado | Montañoso |
|---|---|---|---|
| CAT-I | 130 km/h | 110 km/h | 80 km/h |
| CAT-II | 110 km/h | 90 km/h | 60 km/h |
| CAT-III | 100 km/h | 80 km/h | 50 km/h |
| CAT-IV | 80 km/h | 60 km/h | 40 km/h |
Referencia Normas de Diseño Geométrico de Carreteras — Dirección Nacional de Vialidad, República Argentina.
El sistema detecta curvas en la geometría de la ruta y evalúa su cumplimiento con las normas de radio mínimo, peralte y sobreancho. Utiliza un algoritmo de muestreo basado en distancia real con resolución adaptativa por terreno, detección de dirección de giro y detección automática de zonas de serpentina.
El algoritmo utiliza directamente los nodos reales de la geometría OSRM/OSM para calcular la curvatura, sin interpolar puntos artificiales a distancias fijas. Para cada tripleta de nodos consecutivos (P₁, P₂, P₃) de la polyline OSRM, se calcula el radio del círculo circunscrito:
¿Por qué nodos reales? OSRM con overview=full devuelve la geometría completa de OpenStreetMap, donde los mapeadores colocan nodos densos en curvas (~10-20 m) y nodos espaciados en rectas (~50-200 m). Esta densidad variable es naturalmente adaptativa: la resolución es máxima exactamente donde más importa (en las curvas) sin desperdiciar cómputo en rectas. Pruebas en la Cuesta del Portezuelo (Catamarca) demostraron que este enfoque detecta curvas con radios hasta 3 veces menores que la interpolación fija anterior, mejorando significativamente la precisión del análisis de seguridad.
Para evitar artefactos numéricos causados por nodos OSRM muy cercanos o con espaciado irregular, el algoritmo aplica tres filtros:
| Filtro | Valor | Propósito |
|---|---|---|
| Distancia mínima entre nodos | 8 m | Nodos separados por menos de 8 m se fusionan para evitar triángulos microscópicos donde el ruido de coordenadas domina |
| Ratio de asimetría máximo | 5:1 | Tripletas donde un lado es más de 5 veces más largo que el otro producen triángulos muy alargados con radio numéricamente inestable |
| Radio mínimo plausible | 8 m | Ninguna ruta vial tiene R < 8 m (el mínimo DNV para rotondas es ~10 m). Valores menores se clampean a 8 m |
Para cada tripleta (P₁, P₂, P₃), se calcula el radio del círculo circunscrito (el único círculo que pasa por los tres puntos). El radio de este círculo refleja directamente la curvatura del trazado en ese punto:
Interpretación geométrica: Si los 3 puntos están casi alineados (recta), el triángulo es muy chato, su área tiende a cero y el radio tiende a infinito. Si la ruta curva bruscamente, el triángulo tiene más superficie y el radio resultante es pequeño. El sistema acota el radio a un máximo de 50.000 m para evitar valores extremos en rectas.
Los puntos individuales se agrupan en segmentos de curva según este criterio:
Cada curva detectada recibe además los cálculos de peralte (§4.6), sobreancho (§4.7), y la evaluación de conformidad con el radio mínimo DNV (§4.5).
Cada velocidad de diseño tiene un radio mínimo de curvatura asociado. Curvas con radio inferior al mínimo se marcan como no conformes:
| Vel. diseño (km/h) | 130 | 110 | 100 | 90 | 80 | 60 | 50 | 40 |
|---|---|---|---|---|---|---|---|---|
| R mín. (m) | 700 | 450 | 350 | 265 | 195 | 115 | 80 | 50 |
El peralte teórico necesario se calcula según la fórmula normalizada:
Limitación Este valor es el peralte que debería tener la curva según normas de diseño, no el peralte que efectivamente tiene. No existe fuente de datos abierta que provea el peralte real de cada curva. Ni OSRM, ni OpenStreetMap, ni los modelos digitales de elevación (resolución 30 m) permiten medir la inclinación transversal de una calzada de 7 m de ancho.
El sobreancho necesario para vehículos largos en curvas cerradas:
Supuesto Al no disponer del peralte real de cada curva, el sistema asume e = 0.06 (6%), un valor representativo de rutas nacionales bien diseñadas. Esto introduce un margen de error de ±8 km/h en la velocidad segura calculada: en caminos rurales sin peralte (e ≈ 0.02) la velocidad podría estar sobreestimada en hasta 8 km/h, mientras que en autopistas con peralte máximo (e = 0.08) podría estar subestimada en ~3 km/h. Este margen se considera aceptable para una herramienta de planificación, pero el usuario debe tenerlo presente.
| V (km/h) | 30 | 40 | 50 | 60 | 80 | 100 | 110 | 130 |
|---|---|---|---|---|---|---|---|---|
| f lateral | 0.28 | 0.23 | 0.19 | 0.17 | 0.14 | 0.12 | 0.10 | 0.08 |
AASHTO A Policy on Geometric Design of Highways and Streets — Table 3-6: Side Friction Factors.
El sistema detecta zonas de curva y contracurva (zigzag / switchbacks) donde la dirección de giro alterna repetidamente (izquierda → derecha → izquierda). Estas zonas son más peligrosas que curvas individuales por el cambio constante de dirección y la fatiga que produce.
Para determinar si la zona de curva y contracurva es ascendente o descendente, el sistema calcula la pendiente promedio de todos los segmentos dentro de la zona (desde su km de inicio hasta su km de fin), en lugar de usar la pendiente de un solo segmento. Esto evita que una curva momentáneamente plana dentro de un descenso general clasifique la zona como neutral.
| Efecto | Valor |
|---|---|
| Penalización de puntaje | +15 puntos por segmento en zona de curva y contracurva |
| Reducción de velocidad | vSafe × 0.80 (−20%) |
| Señal generada | 🔀 P.4 — CURVA Y CONTRACURVA ASCENDENTE / DESCENDENTE |
| Alerta de voz (descenso) | «Zona de curva y contracurva en descenso. Reduzca la velocidad, use freno motor y extreme la precaución.» |
| Alerta de voz (ascenso) | «Zona de curva y contracurva en ascenso. Use marcha corta y extreme la precaución.» |
| Alerta de voz (sinuoso) | «Camino sinuoso. Zona de curva y contracurva. Reduzca la velocidad y extreme la precaución.» |
| Vel. diseño | 130 | 110 | 100 | 90 | 80 | 60 | 50 | 40 |
|---|---|---|---|---|---|---|---|---|
| D. detención (m) | 270 | 200 | 170 | 145 | 120 | 75 | 55 | 40 |
| D. sobrepaso (m) | 800 | 670 | 600 | 530 | 480 | 350 | 300 | 250 |
Cada segmento de la ruta se clasifica según el tipo de superficie real obtenido de OpenStreetMap, ajustando velocidades y riesgo.
La clasificación se determina en este orden de prioridad:
surface (si existe en OSM): asphalt, gravel, unpaved, dirt, etc.tracktype (para highway=track): grade1 a grade5.highway: inferencia por categoría (motorway → pavimentada, track → tierra/ripio).| Categoría | Ejemplos OSM | Factor de velocidad | Penalización de riesgo |
|---|---|---|---|
| Asfalto | asphalt, concrete, paved, paving_stones | 1.00 (100%) | 0 puntos |
| Ripio | gravel, compacted, fine_gravel, grade1, grade2 | 0.55 – 0.65 (55-65%) | 12 – 16 puntos |
| Tierra | unpaved, dirt, earth, ground, grade3 | 0.40 – 0.45 (40-45%) | 22 – 25 puntos |
| Huella | grade4, grade5, path | 0.25 – 0.30 (25-30%) | 35 – 40 puntos |
El factor de velocidad reduce la velocidad segura calculada para el segmento. La penalización de riesgo se suma directamente al puntaje de peligrosidad del segmento (sobre 100).
Dado que muchos caminos en Argentina carecen de la etiqueta surface en OSM, el sistema aplica inferencias basadas en el tipo de vía (highway). Para que el usuario pueda evaluar la confiabilidad del dato, el inspector de segmentos (§10.7) muestra un indicador visual junto a cada dato de superficie:
| Indicador | Significado | Ejemplo |
|---|---|---|
| ✅ Confirmado | La etiqueta surface existe explícitamente en OSM | surface=asphalt → Asfalto ✅ |
| ⚠️ Inferido | No hay etiqueta surface; se dedujo del tipo de vía | highway=primary sin surface → Ruta pavimentada ⚠️ |
Esta distinción es fundamental porque una clasificación inferida puede ser incorrecta (por ejemplo, una ruta provincial clasificada como highway=primary pero que en realidad es de ripio). El sistema aplica una penalización de incertidumbre adicional (+5 puntos de riesgo) cuando la superficie no está confirmada.
Los usuarios pueden reportar errores de datos directamente desde la navegación (§10.6), contribuyendo a mejorar la precisión del análisis.
En la provincia de Catamarca y el noroeste argentino, gran parte de los recorridos de transporte de cargas mineras y productivas transitan por caminos de tierra, ripio y huellas de montaña. La diferencia de adherencia, visibilidad (polvo en suspensión), y transitabilidad entre asfalto y tierra es determinante para la seguridad vial. Un camión cargado a 45 tn que circula a 60 km/h sobre ripio suelto tiene una distancia de frenado dramáticamente mayor que sobre asfalto seco.
El corazón de RutaSegura: cada 500 metros de ruta se evalúa un puntaje de peligrosidad (0-100) integrando múltiples factores geométricos, ambientales y vehiculares.
Para cada segmento de 500 m, el sistema clasifica el terreno usando una ventana deslizante de 5 km centrada en el punto evaluado (no el promedio global de toda la ruta). Esto permite que un tramo montañoso dentro de una ruta mayoritariamente llana reciba los parámetros de diseño correspondientes a montaña.
| Superficie | ksup | Efecto en frenado (80 km/h, auto, llano) |
|---|---|---|
| 🟢 Asfalto seco | 1.00 | ~72 m (referencia) |
| 🟡 Ripio | 0.70 | ~102 m (+42%) |
| 🟠 Tierra | 0.55 | ~131 m (+82%) |
| 🔴 Huella | 0.45 | ~160 m (+122%) |
Se calculan dos valores por segmento: uno para auto (brakeCar) y otro para camión (brakeTruck), siempre a la velocidad de diseño de la categoría vial. El factor de superficie se aplica sobre el coeficiente de fricción base, reflejando la menor adherencia de superficies no pavimentadas.
¿Por qué este cálculo? La distancia de frenado es el factor más crítico para evitar colisiones. En descensos pronunciados sobre ripio suelto con carga pesada, la distancia de frenado puede quintuplicarse respecto a asfalto seco en llano.
| Vehículo | H (CG) | T (trocha) | a_límite | Notas |
|---|---|---|---|---|
| 🚗 Auto | 0.55 m | 1.52 m | 13.6 m/s² | CG bajo, muy estable |
| 🚙 Van / Pickup | 0.85 m | 1.65 m | 9.5 m/s² | CG medio |
| 🚚 Camión | 1.70 m | 2.05 m | 5.9 m/s² | CG alto, carga elevada |
| 🚛 Bitrén | 2.20 m | 2.50 m | 5.6 m/s² | Máximo riesgo de vuelco |
Se evalúa solo en curvas con R < 2000 m. Cuando el índice supera 0.70, se genera automáticamente la señal P.40 «Riesgo de vuelco».
¿Por qué parametrizar por vehículo? Los valores fijos anteriores (CG=2.0m, T=2.5m) correspondían a un camión grande. Un auto con esos parámetros nunca mostraba riesgo de vuelco (su CG real es 4× más bajo), mientras un bitrén cargado tiene un CG aún más elevado. La tabla refleja valores típicos de cada categoría vehicular.
¿Por qué este cálculo? En curvas cerradas, la trayectoria del tren trasero de un camión es más cerrada que la del tren delantero (desviación del tren trasero). Esto puede hacer que el vehículo invada el carril contrario o la banquina.
La velocidad segura se calcula en una cadena de diez pasos, aplicados secuencialmente. El principio rector es siempre prevalecer la restricción más precautoria:
Los factores 8-10 se aplican en el post-procesamiento (§6.8), después del cálculo base. Cada uno se multiplica secuencialmente, por lo que en el peor caso (hielo + tormenta + noche) la velocidad puede reducirse hasta un 64% respecto al cálculo base: V × 0.70 × 0.60 × 0.85.
¿Por qué un techo absoluto de 60 km/h en no pavimentado (paso 5)? La fórmula geométrica del paso 2 modela fricción lateral en curva: en un radio grande (casi recto) devuelve velocidades muy altas porque, para esa fórmula, un camino recto no tiene techo propio. En un segmento de asfalto eso es razonable. Pero en ripio, tierra o huella, un tramo recto igual tiene ondulaciones (washboard), material suelto y adherencia impredecible que la geometría no captura — el factor de superficie (paso 4) por sí solo no siempre alcanza a compensarlo cuando la base geométrica es muy alta. Por eso se aplica un techo fijo de 60 km/h para cualquier superficie que no sea asfalto, sin distinguir ripio de tierra o huella entre sí: el dato de superficie de OSM en caminos rurales argentinos frecuentemente no distingue esos subtipos con precisión (o falta directamente), así que en vez de afinar un valor por subtipo se usa un único techo conservador para todo lo no pavimentado. Antes de este ajuste, un tramo de tierra confirmada pero geométricamente recto podía mostrar hasta el límite legal de camino rural (80 km/h) — la ley no diferencia por calidad real de la superficie, y el sistema tampoco lo hacía en ese caso.
El sistema determina la zona vial de cada segmento cruzando el tipo de vía OSM (highway) con la proximidad a localidades (ver §6.1). Los límites legales se aplican como techo: la velocidad segura nunca puede superar el límite legal de la zona, independientemente de lo que la geometría permita.
| Zona vial | Auto | Camión |
|---|---|---|
| Calle urbana | 40 km/h | 40 km/h |
| Avenida urbana | 60 km/h | 60 km/h |
| Camino rural | 80 km/h | 80 km/h |
| Ruta pavimentada | 110 km/h | 80 km/h |
| Semiautopista | 120 km/h | 80 km/h |
| Autopista | 130 km/h | 80 km/h |
Cuando la vía OSM correspondiente al segmento tiene la etiqueta maxspeed, ese valor se incorpora como restricción adicional. Esto permite capturar señalizaciones reales (carteles de velocidad colocados por Vialidad) que pueden ser más restrictivas que el cálculo geométrico o el límite legal genérico.
Principio de precaución: se usa siempre min(geométrica, legal, osmMaxspeed). Si la señalización real indica 40 km/h pero la geometría permitiría 55 km/h, prevalece el 40.
Cobertura: no todas las vías en OSM tienen maxspeed. En Argentina, la cobertura es parcial. Cuando no existe, el sistema se basa en los pasos anteriores (geometría + Ley 24.449).
La velocidad segura y la penalización de riesgo se ajustan según el tipo de vehículo:
| Tipo de vehículo | Factor velocidad | Penalización puntaje | Descripción |
|---|---|---|---|
| 🚗 Auto | 1.00 | +0 | Referencia base |
| 🚐 Camioneta / Van | 0.90 | +5 | CG ligeramente más alto, mayor masa |
| 🚛 Camión | 0.75 | +10 | Frenado más lento, CG alto, off-tracking |
| 🚛 Bitrén / Acoplado | 0.60 | +10 | Articulado, efecto látigo, mayor largo total |
La penalización de puntaje se aplica así: si el factor del vehículo es < 0.80, se suman +10 puntos directos; si está entre 0.80 y 0.99, se suman +5 puntos. En vehículos con factor = 1.00 (auto), no se aplica penalización.
Cada segmento de 500 m recibe un puntaje de 0 a 100 compuesto por la suma ponderada de los siguientes factores:
| Factor | Peso | Rangos / Valores |
|---|---|---|
| Pendiente descendente | × 0.30 | |grad|>8%→100, >6%→75, >4%→40, >2%→15, ≤2%→0 |
| Pendiente ascendente | × 0.30 | |grad|>8%→50, >6%→35, >4%→20, >2%→5, ≤2%→0 |
| Curvatura | × 0.35 | R < R_mín/2→100, R < R_mín→75, R < R_mín×1.5→40, R < 1200→10, ≥1200→0 |
| Proximidad a agua | × 0.10 | Curso de agua a ≤100 m en camino no pavimentado → factor 25, sino 0 |
| Combo (pend.+curva) | directa | Si pendienteFactor >30 Y curvaFactor >30 → √(pendienteFactor × curvaFactor) × 0.30 (escalado geométrico), sino 0 |
| Penalización vehículo | directa | +10 (factor<0.8) o +5 (factor<1.0) — ver §6.6 |
| Penalización superficie | directa | 0 (asfalto) a 40 (huella) — ver §5.2 |
| Penalización altitud | directa | ≥ 4500 m → +20 (extrema), ≥ 3500 m → +10 (alta), < 3500 m → 0 |
| Penalización accidentes | directa | POI de accidente a ≤ 500 m: ≥3 POIs → +20 puntos, ≥1 POI → +10 puntos |
| Penalización serpentina | directa | Segmento dentro de zona de serpentina (§4.10) → +15 puntos |
| Pen. transición superficie | directa | Cambio de superficie confirmado entre segmentos → +15 puntos (solo si al menos uno de los lados tiene superficie OSM confirmada) |
¿Por qué la pendiente descendente pesa el doble que la ascendente? En un descenso, la gravedad actúa a favor del movimiento y el conductor depende enteramente de los frenos para controlar la velocidad. En una subida, la gravedad actúa como freno natural, reduciendo el riesgo de pérdida de control. Los valores de la escala descendente (100/75/40/15) duplican los de la ascendente (50/35/20/5) para reflejar esta asimetría de riesgo.
Después de que el motor de seguridad calcula los puntajes base de todos los segmentos, se aplica un ajuste de post-procesamiento con cuatro componentes:
a) Clima y nocturnidad (clima uniforme, nocturnidad por segmento):
Nocturnidad por segmento: El sistema estima la hora de llegada a cada segmento acumulando el tiempo de tránsito basado en la velocidad segura y la distancia. Se compara con el amanecer/atardecer del día correspondiente (obtenido del pronóstico). Esto permite que un viaje que sale de día pero llega de noche aplique nocturnidad solo a los tramos finales. El porcentaje nocturno total se calcula como horasNocturnas / horasTotales (ponderado por tiempo, no por cantidad de segmentos).
Escalado del clima (×0.50): Una tormenta con granizo (riesgo=55) aporta +27 pts al dangerScore. Una nieve intensa (riesgo=60) aporta +30 pts. Estos valores son suficientes para mover segmentos entre bandas de riesgo.
Nocturnidad (penalización directa): Los +15 pts se aplican íntegros (sin escalado), porque la visibilidad reducida afecta todos los factores de riesgo simultáneamente. Además, la velocidad segura se reduce un 15% (vSafe × 0.85) — ver §6.5.
b) Hielo en calzada (por segmento, requiere frío + fuente de humedad):
El hielo en calzada se forma cuando el agua se congela sobre la superficie. Sin humedad (agua cercana, lluvia o nieve reciente), el frío solo produce escarcha en el parabrisas, no hielo peligroso en el pavimento.
| Temperatura | Fuente humedad | Penalidad | Marcador | Motivo |
|---|---|---|---|---|
| ≤ 0°C | Agua ≤100 m (no pavimentado) | +25 | 🧊 | Hielo negro muy probable en badenes |
| ≤ 0°C | Lluvia/nieve reciente | +15 | 🧊 | Humedad residual congelada |
| 1°C – 3°C | Agua ≤100 m (no pavimentado) | +10 | 🧊 | Escarcha posible cerca de agua |
| 1°C – 3°C | Lluvia/nieve reciente | +5 | — | Riesgo menor, sin marcador visual |
| Cualquiera | Sin humedad | 0 | — | Frío seco = sin hielo en calzada |
| Nieve reciente (72h) | — | +10 adicional | 🧊 | Hielo/nieve residual (se suma al anterior) |
Marcador visual (🧊): Para evitar alarma excesiva, el ícono de hielo en el mapa solo aparece cuando el riesgo es significativo:
A 1-3°C seco sin nevadas, se aplica la penalización numérica (+5) y una reducción de velocidad del 15%, pero sin marcador visual para no saturar la ruta con íconos.
c) Precipitación histórica (72h) y barro
El sistema consulta las últimas 72 horas de precipitación y nevada a través de la API de Open-Meteo (past_days=3). Esto permite evaluar condiciones residuales:
| Condición reciente | Temp. actual | Superficie | Penalidad | Motivo |
|---|---|---|---|---|
| Nieve > 0.5 cm (72h) | ≤ 3°C | Cualquiera | +10 hielo | Marcador «HIELO/NIEVE RESIDUAL» |
| Nieve > 0.5 cm (72h) | > 0°C | Tierra / Huella | +15 barro | Derretimiento satura suelo, empantanamiento |
| Nieve > 0.5 cm (72h) | > 0°C | Ripio | +10 barro | Deshielo debilita compactación |
| Lluvia > 2 mm (72h) | Cualquiera | Tierra / Huella | +15 barro | Empantanamiento / pérdida de tracción |
| Lluvia > 2 mm (72h) | Cualquiera | Ripio | +10 barro | Ripio suelto, charcos, menor grip |
| Seco (< 72h) | — | — | 0 | Sin efecto residual |
¿Por qué 72h? Los caminos de tierra tardan entre 24-72 horas en drenar completamente después de una lluvia o nevada. El agua acumulada deteriora la superficie progresivamente, y en zonas de montaña sin drenaje artificial el efecto puede durar aún más.
¿Por qué incluir ripio? Aunque el ripio compactado tolera mejor la lluvia que la tierra, la precipitación sostenida suelta el material y genera charcos que reducen la tracción. La penalización es menor (+10 vs +15) pero no nula.
¿Por qué cruzar temperatura con agua? En rutas de montaña el agua que escurre de arroyos, vertientes y badenes se congela sobre el asfalto formando «hielo negro» — una capa transparente e invisible que es la causa principal de accidentes en condiciones invernales. Un badén a 0°C es considerablemente más peligroso que un tramo seco a la misma temperatura.
El resultado de cada segmento se acota a un máximo de 100. Tras la aplicación, se recalculan los agregados (score global, conteos por nivel de riesgo).
d) Modal de selección de superficie
Cuando el análisis de seguridad detecta que más del 25% de los segmentos tienen superficie «no confirmada» (confirmed: false), se presenta al usuario un modal interactivo antes de continuar con el post-procesamiento climático:
| Opción | speedFactor | riskPenalty | Efecto |
|---|---|---|---|
| 🛣️ Asfalto | 1.00 | 0 | Reclasifica como asfalto confirmado |
| ⬜ Ripio | 0.65 | +12 | Aumenta riesgo y reduce velocidad |
| 🟤 Tierra | 0.45 | +22 | Penalización fuerte por superficie |
| Predeterminado | — | — | Mantiene clasificación original sin cambios |
Si el usuario elige una superficie, el sistema reclasifica todos los segmentos no confirmados, ajusta sus dangerScore y vSafe, y recalcula las estadísticas de superficie y los conteos de riesgo. El análisis continúa automáticamente después de la selección.
Cada segmento puede generar señales viales recomendadas, evaluadas automáticamente (ver §9 para el detalle completo). Los criterios de disparo son:
| Condición | Código DNV | Señal | Lógica de aparición |
|---|---|---|---|
| Puntaje ≥ 70 y R ≥ R_mín | P.1 | ⚠️ CURVA PELIGROSA | Solo al entrar a la zona (suprimida en serpentinas) |
| |pendiente| > 6% | P.17a/b | 🔺🔻 PENDIENTE ASC/DESC | Solo al cambiar dirección (ascendente↔descendente) |
| R < radio mínimo DNV | P.2/P.3 | ↗️ CURVA PRONUNCIADA | Solo al entrar a la zona (suprimida en serpentinas) |
| Zona urbana (entrada) | R.20 | 🏘️ ZONA URBANA — MÁX. X km/h | Solo al entrar a la zona |
| Altitud ≥ 3500 m (entrada) | P.35 | 🏔️ ALTITUD Xm | Solo al entrar o cambiar nivel |
| Escuela ≤ 150 m (entrada) | P.24 | 🏫 ZONA ESCOLAR | Solo al entrar a la zona |
| Curso de agua ≤100 m en no pavimentado | P.25 | 🌊 ZONA INUNDABLE | Solo al entrar a la zona |
| Índice vuelco > 0.70 | P.40 | 🚛 RIESGO VUELCO | Solo al entrar a la zona |
| Frenado camión >200 m y pend. <−5% | P.18 | 🛑 FRENADO PROLONGADO | Solo al entrar a la zona |
| Ancho barrido > 4.5 m | R.16 | 📏 ANCHO BARRIDO | Solo al entrar a la zona |
| Temp ≤ 3°C (post-proc.) | P.34 | 🧊 CALZADA RESBALADIZA / HELADA | Post-procesamiento |
| ≥6 seg. consecutivos con pend. ≤ −2% | P.18b | 🔥 DESCENSO PROLONGADO — USAR FRENO MOTOR | Inicio de zona |
| Zona de serpentina (§4.10) | P.4 | 🔀 SERPENTINA — CURVAS ALTERNADAS | Solo al entrar a la zona |
| Caída vSafe > 40 km/h (sin explicación previa) | — | +10 puntos al dangerScore | Segundo pasaje post-cálculo (no genera señal visual — ver §6.10) |
Nota sobre velocidad: en versiones anteriores se generaba una señal 🚫 R.20 «VEL. MÁXIMA» cada vez que la velocidad segura era inferior a la legal. Esta señal fue eliminada porque podía inducir al conductor a interpretar la velocidad calculada como un permiso para circular a esa velocidad, entrando en conflicto con señalizaciones reales más restrictivas. Ahora, el conductor es alertado únicamente por voz cuando excede la velocidad segura durante la navegación (§10.5).
Alertas de entrada: las señales de altitud (🏔️), zona escolar (🏫) y zona urbana (🏘️) se muestran solo en el punto de entrada a la zona, no en cada segmento consecutivo. Esto evita la saturación visual del mapa con señales repetidas en zonas extensas.
Después de calcular la velocidad segura de todos los segmentos, el sistema ejecuta un segundo pasaje para detectar caídas abruptas de velocidad entre segmentos consecutivos:
IHSDM Interactive Highway Safety Design Model — Design Consistency Module. El umbral de 40 km/h es un criterio práctico calibrado para rutas argentinas, donde caídas menores son comunes en transiciones normales. Se requiere además que la velocidad previa sea ≥ 60 km/h (para evitar falsos positivos en zonas ya lentas) y que no exista una explicación previa (curva, pendiente o serpentina detectada).
Esta verificación es particularmente útil en transiciones de autopista a zona urbana, de recta larga a curva cerrada, o al final de bajadas prolongadas donde la velocidad se acumula.
El motor analiza secuencias de segmentos consecutivos con pendiente ≤ −2% para detectar descensos donde el calentamiento de frenos constituye un riesgo real. Los umbrales de disparo son:
| Condición | Severidad base | Acción |
|---|---|---|
| ≥ 6 seg. consecutivos (3 km) | Moderado | Señal P.18b + alerta de voz |
| ≥ 10 seg. consecutivos (5 km) | Alto | Señal P.18b + alerta urgente |
Para cada zona de descenso detectada se registra: km inicio, km fin, longitud total, pendiente promedio y severidad. La señal P.18b se coloca en el primer segmento de la zona. La alerta de voz durante navegación dice: «Precaución. Inicio de descenso prolongado. Reduzca la marcha y utilice freno motor.»
Los frenos de fricción disipan calor por convección (flujo de aire sobre el disco o tambor). Según la ley de enfriamiento de Newton, la tasa de disipación es proporcional al ΔT (diferencia entre la temperatura de la superficie de frenado y la del aire circundante). Esto tiene dos implicancias:
| Temperatura | Efecto | Ajuste del sistema |
|---|---|---|
| > 35°C | Menor ΔT → disipación más lenta → fade acelerado | +5 puntos + severidad → alto |
| 5°C – 35°C | Rango normal | Sin ajuste |
| < 5°C | Mayor ΔT → enfriamiento ligeramente mejor | Sin reducción (ver nota) |
¿Por qué no se reduce la severidad en frío? Aunque el aire frío mejora marginalmente la convección, un disco de freno bajo uso intenso alcanza 300-600°C. La diferencia entre aire a 0°C y a 35°C es apenas 35° sobre un ΔT de ~500°, lo que representa una mejora inferior al 7% en la tasa de enfriamiento — insuficiente para justificar relajar la alerta.
En condiciones de frío extremo con humedad, los componentes de freno pueden acumular hielo o escarcha en las superficies de contacto cuando el vehículo permanece detenido (estacionamiento nocturno, por ejemplo). Al iniciar la marcha, esto reduce momentáneamente la eficacia de frenado hasta que los primeros cientos de metros de rodaje calientan las superficies. El sistema considera esto indirectamente a través de la penalización de hielo en calzada (§6.8), que ya aplica restricciones de velocidad en condiciones bajo cero.
Los vehículos pesados (camiones, bitrenes) frecuentemente utilizan frenos de tambor en el eje trasero. Estos son más susceptibles a la pérdida de eficacia porque la campana encierra las zapatas, limitando la circulación de aire y la disipación de calor. Los frenos de disco, más comunes en ejes delanteros y vehículos livianos, disipan el calor con mayor eficiencia al exponer el rotor al flujo de aire. El sistema ya captura esta diferencia de riesgo a través del factor de vehículo (§6.6): los camiones pesados (factor 0.60-0.75) reciben velocidades seguras significativamente menores y penalizaciones de puntaje que reflejan su mayor vulnerabilidad a la pérdida de eficacia de frenado.
Se detectan zonas críticas cuando 2 o más segmentos consecutivos de 500 m (≥ 1 km continuo) superan el puntaje de 60. Para cada zona se registra el tramo kilométrico (inicio-fin), longitud, y el puntaje máximo alcanzado.
En lugar de un número único, el sistema muestra una barra de distribución con tres bandas de color que representa el porcentaje de segmentos en cada nivel de riesgo:
| Banda | Condición | Color |
|---|---|---|
| 🟢 Seguro | dangerScore < 40 | Verde (#22c55e) |
| 🟡 Moderado | 40 ≤ dangerScore < 70 | Ámbar (#f59e0b) |
| 🔴 Alto | dangerScore ≥ 70 | Rojo (#ef4444) |
La barra se acompaña de una etiqueta resumen que se determina por los porcentajes:
¿Por qué distribución y no un número único? Un solo score (0-100) oculta la realidad del viaje. Una ruta donde el 90% es seguro y el 10% es peligroso recibe un score similar a una ruta con riesgo moderado constante — pero la experiencia del conductor es completamente distinta. La distribución por bandas permite al conductor saber qué porcentaje del viaje requiere atención especial.
El briefing de voz refleja los porcentajes: «Distribución de riesgo: 72 por ciento seguro, 18 por ciento moderado, 10 por ciento alto riesgo.»
Además de la distribución de riesgo, el motor produce las siguientes métricas agregadas que se muestran en el reporte final:
0.6 × maxDanger + 0.4 × promedioSimple. Esta fórmula pesa 60% el peor segmento y 40% el promedio, reflejando que un solo punto crítico tiene mayor impacto en la seguridad global que muchos segmentos moderados.El pronóstico se consulta para 3 puntos de la ruta (origen, punto medio y destino) en la hora más cercana a la salida planificada. Se aplica un merge worst-case: código WMO de mayor riesgo, temperatura mínima, viento máximo y mayor probabilidad de precipitación.
| Código | Condición | Riesgo (0-60) |
|---|---|---|
| 0-2 | Despejado / Algo nublado | 0 |
| 3 | Nublado | 5 |
| 45 | Niebla | 25 |
| 48 | Niebla helada | 35 |
| 51-55 | Llovizna (leve a intensa) | 10-20 |
| 61-65 | Lluvia (leve a intensa) | 15-35 |
| 71-75 | Nieve (leve a intensa) | 40-60 |
| 80-82 | Chaparrones | 20-40 |
| 95-99 | Tormentas | 45-60 |
¿Por qué estos códigos? La clasificación WMO (World Meteorological Organization) es el estándar internacional para describir condiciones meteorológicas. Los puntajes de riesgo se asignaron considerando el impacto en la adherencia del neumático, la visibilidad y la estabilidad del vehículo.
El usuario ingresa hora de salida y hora estimada de llegada. El sistema calcula la factibilidad del viaje.
| Condición | Evaluación |
|---|---|
| Hora de llegada anterior a la salida | ❌ Imposible |
| Vel. promedio necesaria > 120 km/h | ❌ Velocidad irreal |
| Tiempo plan. < 80% del OSRM | ⚠️ Insuficiente |
| Tiempo plan. < OSRM | ⚠️ Sin paradas ni demoras |
| Tiempo plan. < 130% del OSRM | 🕐 Ajustado |
| Tiempo plan. ≥ 130% del OSRM | ✅ Holgado |
| Tiempo plan. < ajustado superficie | ⚠️ Superf. limita velocidad |
| Vehículo pesado en montaña con tiempo insuf. | ⚠️ Considerar más tiempo |
Para camiones y bitrenes, el sistema evalúa los límites de conducción según la CCT 40/89 y normativa CNRT:
| Límite | Valor | Acción |
|---|---|---|
| Conducción continua | 5 horas (+ 15 min tolerancia = 5h 15min) | Parada obligatoria |
| Duración de la parada | 2 horas mínimas por cada ciclo | Descanso obligatorio |
| Jornada diaria máxima | 12 horas de conducción | Fin de jornada o relevo |
El sistema calcula:
⌊horasConducción / 5⌋ (cada 5 horas se requiere una parada de 2 horas).Advertencias generadas:
El sistema recomienda señalización vial según la normativa DNV para cada punto crítico detectado.
| Código | Señal | Condición de activación |
|---|---|---|
| P.1 | ⚠️ Curva peligrosa | Puntaje de peligrosidad ≥ 70 |
| P.4 | 🔀 Curva y contracurva | Zona de curvas alternadas detectada (§4.10), con indicación de dirección (ascendente/descendente). Solo al entrar a la zona |
| P.33 | ⏬ Reducción abrupta (invisible) | Caída de vSafe > 40 km/h no explicada por otras señales. Incrementa el puntaje de riesgo (+10 pts) pero no se muestra en el timeline ni en el mapa — se comunica exclusivamente por voz durante la navegación |
| P.2 / P.3 | ↗️ Curva pronunciada | Radio < radio mínimo DNV para la velocidad de diseño |
| P.17a / P.17b | 🔺🔻 Pendiente | Pendiente > 6% |
| P.18 | 🛑 Frenado prolongado | Dist. frenado camión > 200 m y pendiente < −5% |
| P.18b | 🔥 Descenso prolongado | ≥6 segmentos consecutivos con pendiente ≤ −2% |
| P.24 | 🏫 Zona escolar | Escuela a ≤ 100 m (solo al entrar a la zona) |
| P.25 | 🌊 Zona inundable / Badén | Curso de agua a ≤ 100 m en camino no pavimentado |
| P.34 | 🧊 Calzada helada | Temperatura ≤ 3°C con fuente de humedad |
| P.35 | 🏔️ Altitud | Altitud ≥ 3500 m (solo al entrar o cambiar nivel) |
| P.40 | 🚛 Riesgo vuelco camiones | Índice de vuelco > 0.70 |
| R.16 | 📏 Ancho de barrido | Barrido > 4.5 m |
| R.20 | 🏘️ Zona urbana | Entrada a zona urbana — muestra velocidad legal de la zona |
Nota: la señal 🚫 R.20 de velocidad máxima recomendada por tramo fue eliminada del mapa por razones de seguridad (ver §6.9). La velocidad segura se comunica exclusivamente por voz durante la navegación.
RutaSegura es una Progressive Web App (PWA) instalable en dispositivos móviles y de escritorio.
index.html se define una variable global APP_VERSION (formato YYYY.MM.DD.NN) que se usa dinámicamente para versionar los archivos CSS y JS. El Service Worker (sw.js) mantiene su propia copia que debe coincidir. Para actualizar la app, solo se cambian 2 líneas: la variable en index.html y en sw.js.RutaSegura realiza un análisis teórico y estimativo basado exclusivamente en datos de fuentes abiertas y modelos matemáticos de referencia. No reemplaza el relevamiento vial presencial, el estudio de suelos, la evaluación de infraestructura real ni la señalización existente en el terreno.
surface. En esos casos, la clasificación se infiere del tipo de vía (highway), lo cual es una aproximación.La información proporcionada por RutaSegura tiene carácter exclusivamente orientativo e informativo. Los resultados del análisis son estimaciones teóricas basadas en datos abiertos de terceros y modelos matemáticos de referencia.
La Secretaría de Transporte de la Provincia de Catamarca, sus organismos dependientes y los desarrolladores de esta herramienta no garantizan la exactitud, completitud ni actualización de los datos presentados, y no asumen responsabilidad alguna por decisiones tomadas en base a los resultados de esta aplicación.
El uso de esta herramienta no exime al conductor, transportista ni empresa de cumplir con la normativa vial vigente, la Ley Nacional de Tránsito N° 24.449, su decreto reglamentario, las normas provinciales y municipales complementarias, y las buenas prácticas de conducción.
El conductor es el único responsable de:
Esta herramienta es de uso libre para fines de planificación y concientización vial. Los datos de terceros (OpenStreetMap, Open-Meteo, Copernicus/ESA) están sujetos a sus respectivas licencias de uso abierto. Los servicios de ruteo (OSRM) y elevación (OpenTopoData) se ejecutan en infraestructura propia.
Las fórmulas de diseño geométrico se basan en las normas publicadas por la Dirección Nacional de Vialidad de la República Argentina.
El usuario puede agregar puntos intermedios al viaje para forzar la ruta por ubicaciones específicas (paradas obligatorias, desvíos planificados, puntos de carga/descarga, etc.).
origen;wp1;wp2;...;destino y retorna una ruta con múltiples tramos (legs), cuyos pasos se agregan secuencialmente.