Introduction
De nombreux sentiers, pistes et même petites rues sont manquants dans OSM. Or, souvent, ces chemins sont parcourus par des sportifs utilisateurs de Strava, qui y enregistrent leurs parcours. Il m’a donc paru intéressant d’utiliser ces données pour compléter OSM.
C’est pourquoi j’ai écrit un programme Python capable, en analysant les données Strava, de détecter les chemins manquants dans OSM, puis de générer des fichiers permettant de créer des défis MapRoulette afin que chaque chemin manquant puisse être ajouté dans OSM.
Qu’est-ce que Strava ?
Selon Wikipédia, Strava est un site internet et une application mobile utilisés pour enregistrer des activités sportives via GPS. Ses membres utilisent des dispositifs tels qu’une montre GPS ou un smartphone pour enregistrer les traces de leur parcours, et envoient celles-ci à Strava. Actuellement (2023), il y a plus de 100 millions de membres.
Les cartes de chaleur (heat maps) Strava
Sur son site Web, Strava publie une carte de chaleur qui montre l’agrégation de toutes les traces de ses utilisateurs.
Exemple :
Plus un parcours est emprunté, plus sa trace apparaît lumineuse sur la carte de chaleur.
En fait, il existe plusieurs cartes de chaleur Strava, une par activité (course à pied, vélo, ski…). Nous utilisons la carte de course à pied, qui est la plus précise du fait de la vitesse peu élevée des coureurs, et qui reflète tous les chemins, même ceux impraticables dans les autres activités.
Pourquoi utiliser Strava plutôt que la BD Topo ?
En réalité, l’idéal est d’agréger ces deux données. En effet :
- les traces Strava reflètent la réalité du terrain actuel, et indiquent qu’il est possible de passer sur ce chemin (sauf dans certains cas, voir plus loin).
- les chemins de la BD Topo sont souvent plus précis que Strava, mais ils comportent parfois des erreurs de tracé, ou même n’existent plus sur le terrain.
Précautions à prendre lorsqu’on utilise Strava
Il ne faut pas toujours se fier aveuglément aux traces de la carte Strava. En effet :
- Les traces peuvent être obsolètes, suite à un événement climatique majeur ayant détruit des chemins (par exemple, en 2020, la tempête Alex a détruit de nombreux chemins dans les Alpes-Maritimes).
- Les traces peuvent correspondre à des parcours de trail qui ont emprunté des itinéraires hors-sentier ou dans des propriétés privées.
- Les pistes de ski et remonte-pentes peuvent apparaître sur la carte de course à pied, si les utilisateurs n’ont pas indiqué qu’ils pratiquaient des sports d’hiver.
Principe de détection des chemins manquants
Le logiciel analyse la carte de chaleur Strava pour détecter les traces lumineuses près desquelles il n’y a pas de chemin dans la base OpenStreetMap.
Le seuil de détection est paramétrable selon trois critères :
- le niveau de luminosité minimal (de 0 à 255).
- la distance minimale d’un chemin OSM.
- la taille minimale de la trace.
La carte de chaleur Strava est fournie sous forme de dalles de 512 x 512 pixels. Chaque dalle est analysée indépendamment des autres. Pour éviter de détecter deux fois le même chemin lorsqu’il est à cheval sur deux dalles contiguës, il est possible n’analyser qu’une dalle sur quatre. Il faut donc effectuer quatre analyses et mettre à jour le défi MapRoulette à chaque fois.
Défis MapRoulette en cours
France Métropolitaine
- Île de France
- Bourgogne-Franche-Comté
- Centre-Val de Loire
- Corse
- Normandie
- Hauts-de-France
- Grand Est
- Pays de la Loire
- Bretagne
- Nouvelle-Aquitaine
- Occitanie
- Auvergne-Rhône-Alpes
- Provence-Alpes-Côte d’azur
Outre-mer
- Guadeloupe
- Martinique
- Guyane
- La Réunion
- Mayotte
- Saint-Pierre et Miquelon
- Saint-Martin
- Saint-Barthélémy
- Polynésie Française
- Wallis et Futuna
- Nouvelle-Calédonie
- TAAF
Autriche
Suisse
Installation
Le code source est disponible dans ce dépôt Github. L’installation est décrite dans le fichier README.md.
Comment ajouter un défi pour une nouvelle zone
Si vous voulez ajouter un nouveau défi MapRoulette pour une autre zone, le principe est le suivant :
-
sur le site OSM-Boundaries, téléchargez les limites de la zone qui vous intéresse, en choisissant l’option Land only. Vous obtiendrez un fichier au format GeoJSON.
-
lancez le programme strava.py en passant le fichier de la zone en paramètre. Par exemple, pour la principauté d’Andorre :
python strava.py -v -a Andorra.geojson -g Andorra_Missing_Ways.geojson
- Créez un défi MapRoulette et sélectionnez l’option I want to upload a GeoJSON file pour envoyer le fichier Andorra_Missing_Ways.geojson.
Plus de détails dans le fichier README.md du dépôt Github.
Forum de discussions
Si vous voulez discuter de ce projet en français, allez sur ce forum : Défi Maproulette : chemins manquants selon Strava.