Publicado: 13 de diciembre de 2024.
Una imagen de Russ Cook de uno de sus videos de Instagram, del día 337 de su viaje. Usó gafas de natación para poder seguir corriendo durante una tormenta de polvo en el Sahara. El 7 de abril de 2024, Russ Cook terminó su carrera “Project Africa” (“Proyecto África”) entre los puntos más meridional y septentrional de África continental. Cook, también conocido como Hardest Geezer, corrió aproximadamente 16.300 kilómetros (10.100 millas) en 352 días, con el apoyo de un equipo que viajaba en vehículo motorizado. Es la primera persona conocida en haber completado esta ruta a pie. En esta entrada de blog, he analizado sus grabaciones de GPS y otros datos, con el fin de entender mejor cómo lo logró.
Un mapa de la ruta de Cook a través de África. Los días de la ruta se muestran en colores alternos, con números de día y días de descanso etiquetados, según se indica en la leyenda. Haga clic aquí para ver la versión de alta resolución. El mapa muestra la ruta que Russ Cook y su equipo tomaron a través de África. El equipo tenía una idea de la ruta al principio, pero la adaptaron durante la expedición para evitar áreas de alto riesgo y fronteras cerradas. La ruta más directa a través del Sahara se consideró demasiado peligrosa debido a la inestabilidad política. Cook comenzó su carrera en abril, lo que le permitió evitar el calor del verano en ambos hemisferios, sur y norte.
Aquí hay algunos números resumidos para la carrera:
Hora de inicio | 07:24 UTC+2 el 22 de abril de 2023 |
Fecha de finalización | 16:43 UTC+1 el 7 de abril de 2024 |
Punto de inicio | Cabo de las Agujas (-34.833222 °N, 20.000000 °E) |
Punto final | Cabo Angela (37.346944 °N, 9.742222 °E) |
Duración | 351 días, 10 horas, 19 minutos |
Número de días de ‘descanso’ | 43 |
Distancia | 16.256.1 km (10.101.1 millas) |
Distancia diaria promedio | 46.18 km (28.70 millas) |
(excluyendo días de descanso) | 52.61 km (32.69 millas) |
Día más largo | 109.95 km (68.32 millas) |
Países visitados | 16 |
La distancia en línea recta entre los puntos de inicio y fin es solo de 8,061.3 km (5,009.0 millas), menos de la mitad de la ruta de Cook. Sin embargo, una ruta así sería imposible de correr, por ejemplo porque cruza el Golfo de Gabes frente a la costa de Túnez.
Notas sobre las mediciones de distancia: Hay dos fuentes principales de incertidumbre en las distancias totales mencionadas. La primera es que faltan datos de algunos días durante el segmento del Sahara (específicamente, los días 309, 310, 312, 315, 318). No sé qué causó esto. (Si lo sabe, por favor contácteme. Para estos segmentos faltantes, asumo distancias en línea recta, que probablemente sean bastante precisas según el patrón general de Cook en el Sahara, pero sin duda es una subestimación. Estos días faltantes se muestran de manera diferente en los histogramas de distancia. Su distancia total es de 266.1 km.
La segunda fuente de incertidumbre es que las grabaciones de GPS no proporcionan una medida perfecta de la distancia. Por ejemplo, la longitud de una grabación inestable de un camino es mayor que el camino real. El intervalo de grabación también afecta la distancia total, con un intervalo de grabación más corto que conlleva a una mayor distancia total (relacionado con la Paradoja de la Línea de Costa). Las grabaciones de Cook en su mayoría tienen el mismo intervalo de grabación de 1 segundo, pero una minoría significativa usa un intervalo más largo (generalmente varios segundos). Sin embargo, esta segunda incertidumbre debería ser bastante pequeña. Tenga en cuenta que esto también puede afectar las estimaciones de su paso de carrera, mostradas en el cuadro de actividad a continuación.
Es muy probable que haya pequeñas diferencias entre mi método de cálculo de distancia y el de Strava (por ejemplo, elección del sistema de coordenadas proyectadas), por lo que es posible que los totales no coincidan perfectamente con los mostrados en el sitio web de Strava para las pistas diarias.
Cuadro de carrera de Russ Cook. Panel izquierdo: La rejilla de actividad, que muestra cuándo estuvo activo en cada día del viaje. Cada píxel representa un intervalo de 10 minutos. Los píxeles más oscuros indican una carrera más rápida. Las curvas negras muestran las horas locales de salida y puesta del sol. Panel derecho: La distancia total diaria. Las columnas grises son distancias estimadas (en lugar de registradas). Los eventos etiquetados (A, B, ...) se describen en el texto. El cuadro de actividad muestra cuándo Cook estuvo activo durante cada día de su viaje. Durante la mayor parte del viaje, no comenzó a correr hasta 1–3 horas después del amanecer. Al principio, experimentó con continuar corriendo después del atardecer, pero después de algunos incidentes de seguridad, decidió detenerse al atardecer. Hacia el final de su carrera, volvió a correr después del anochecer. Corrió nocturnamente durante gran parte de la sección del Sahara, y luego en Argelia y Túnez se sintió cómodo corriendo en la oscuridad de la tarde.
Un histograma de la distancia diaria corrida por Cook. Las barras grises muestran los días que no fueron registrados y se estimaron como trayectorias en línea recta. Cuando no se interrumpió, él generalmente corría entre 50 y 60 km por día, como también se muestra en el histograma resumen de distancia diaria. Por lo general, dividía esta distancia en tres sesiones. Su constancia fue muy impresionante. Por ejemplo, durante las últimas 20 semanas, tuvo solo tres días libres (y ni siquiera estos fueron para descansar). A lo largo del viaje, casi todos sus "días de descanso" pueden explicarse por incidentes. Describió estos incidentes en actualizaciones exuberantes y coloridas en Instagram, que utilicé para hacer esta tabla resumen:
Evento | Día(s) | Descripción |
---|---|---|
S | 322 | Visita al campamento de refugiados de Tinduf |
R | 302–318 | Cruzando el Sahara, corriendo de noche, sin actualizaciones, faltan algunos datos |
Q | 291–292 | Intoxicación alimentaria y visitas a la embajada de Nouakchott |
P | 215–216 | Luchando contra lesiones |
O | 200–206 | Lesión en la espalda baja |
N | 194 | Camioneta llena accidentalmente de gasolina en lugar de diésel |
M | 181–185 | Caminos empinados y embarrados (evitando zonas de conflicto) |
L | 167–169 | Intoxicación alimentaria |
K | 136–142 | Camioneta de apoyo se avería, luego choca durante el remolque |
J | 125 | Regreso a Cabinda para solucionar problema de visa de Congo |
I | 111–121 | Logística en Cabinda |
H | 104–106 | Separado del equipo y retenido cautivo (dos veces) en lo profundo de la selva |
G | 75–88 | Regreso a Windhoek por nuevas visas debido a robo de pasaporte |
F | 64 | Equipo completo robado a punta de pistola en la camioneta |
E | 45–46 | Descanso y visita al médico debido a sangre en la orina |
D | 39 | Día de visa que incluye viaje de regreso a Windhoek |
C | 35 | Equipo de apoyo evita a hombres armados |
B | 26–28 | Enfermedad estomacal |
A | 17–18 | Cruzó la frontera sin la camioneta y corrió solo durante la noche |
Si usted no está interesado en los detalles técnicos, le sugiero que salte a la sección final. Es importante destacar que todas las herramientas que utilicé son gratuitas y de código abierto.
La parte más difícil fue obtener el conjunto de datos. Russ Cook subió sus grabaciones GPS a Strava. Podría pensar que el enfoque más fácil sería utilizar la API de Strava, pero esto requiere que Russ Cook se autentique, ¡incluso aunque su cuenta sea pública! No quería molestar al Sr. Cook, y pensé que era poco probable que notara mi solicitud, así que busqué otra forma.
Descubrí que un usuario de Reddit, u/hangglidingcrow (cómo “u/cuervoenaladelta“), descargó los archivos de Cook, uno por uno. Dijeron que les llevó algunas horas, mientras veían televisión. Amablemente subieron los archivos para que cualquiera los descargue aquí.
Desafortunadamente, los archivos no tienen información de marca de tiempo. Parece que Strava elimina esta información de los archivos GPX antes de servirlos. Esto hace imposible analizar el ritmo o el tiempo de actividad. No estoy seguro por qué Strava hace esto, pero podría ser para reducir el tamaño del archivo, por razones de privacidad del usuario, o para obstaculizar a los programadores de mapas de hobby. Dado que Russ Cook estaba en una misión publicada, no parece ser una invasión de privacidad reconstruir el conjunto de datos completo con marcas de tiempo. Esto es posible porque Strava permite solicitudes de tipo GET
como esta:
https://www.strava.com/activities/11075843853/streams?stream_types[]=latlng&stream_types[]=time
donde 11075843853
es el ID de la actividad. Debe estar conectado y solo funcionará si es una actividad a la que tiene acceso de visualización. Puede solicitar otras informaciones, como frecuencia cardíaca, según se indica en la referencia de la API. La solicitud devolverá JSON con matrices de coordenadas y tiempo. Los tiempos se dan en segundos enteros relativos al momento de inicio de la actividad. No encontré cómo solicitar la marca de tiempo de inicio, pero esta marca de tiempo también se muestra en la página de la actividad (en este ejemplo, sería aquí). Asumí que la zona horaria para cada pista estaba definida por la zona horaria del punto de partida.
Este proceso podría automatizarse, pero sería una violación de los términos de servicio de Strava, y nunca haría eso a una corporación tan benévola.
Utilizando el método anterior, reuní un archivo JSON para cada una de las 372 grabaciones, que contenía coordenadas y tiempo transcurrido. También tenía las marcas de tiempo de inicio. En Python, procesé esta información en un GeoDataFrame (GDF) de GeoPandas con geometría de LineString, con una fila por grabación. Apliqué la información de la zona horaria. Calculé el “día del viaje” para cada grabación (algunas grabaciones continúan pasando la medianoche, pero pertenecen al día anterior). Guardé el GDF como un GeoPackage, y lo utilicé para hacer el mapa en QGIS.
Para la cuadrícula de actividad, también necesitaba información de distancia. Utilicé pyproj
para reproyectar cada pista en un sistema de coordenadas local y calcular la distancia entre cada punto. El archivo JSON tiene una bandera de ‘movimiento’, así que ignoré cualquier distancia de pasos de tiempo sin movimiento (por ejemplo, si el dispositivo de grabación estaba pausado y luego reiniciado en una ubicación diferente). Para crear la cuadrícula, dividí toda la información de distancia en una cuadrícula de día y tiempo, utilizando las funciones digitize
y bincount
(con pesos) de NumPy. Fue necesario antes dividir cualquier paso de tiempo que cruzara una línea de cuadrícula.
Calculé los tiempos de salida y puesta del sol utilizando la biblioteca Python Astral. Utilicé la posición más reciente de Cook para un horario fijo de mañana y tarde.
Me gusta compartir código y datos, pero requiere algo de trabajo, y no estoy seguro de que a alguien le gustaría verlo de todos modos. Hasta que encuentre tiempo para ordenar las cosas y publicarlas aquí, por favor contácteme si está interesado. Por favor explique qué desea y qué planea hacer con ello.
Sería posible analizar más aspectos del viaje de Cook, por ejemplo, el clima, la ganancia de elevación, la superficie de la carretera, la frecuencia cardíaca, la cadencia y el tiempo de movimiento. Si esto es algo que le gustaría ver, por favor hágamelo saber en la sección de comentarios a continuación o a través de mis datos de contacto (donde también puede seguirme para futuras actualizaciones). También me encantaría recibir sugerencias para otros viajes increíbles para investigar, así como otros comentarios y correcciones.
Correr por toda la longitud de África es obviamente un logro impresionante. Estoy aún más impresionado después de hacer este análisis y ver lo consistente que fue el esfuerzo de Cook. También superó importantes desafíos personales relacionados con la salud mental y la adicción. ¡Encuentro esto inspirador y espero que usted también! Si es así, por favor considere donar a su apelación de caridad.