OpenStreetMap

jcr83's Diary

Recent diary entries

Detecting missing ways in OSM from Strava heat maps

Posted by jcr83 on 5 December 2023 in English. Last updated on 7 January 2024.

Version française

Introduction

Many paths, tracks and even small streets are missing from OSM. And yet, these paths are often used by Strava users, who upload their traces there. So I thought it would be interesting to use these data to improve OSM.

That’s why I wrote a Python program which, by analyzing Strava data, is able to detect missing paths in OSM, then generate files to create MapRoulette challenges so that each missing path can be added to OSM.

What is Strava?

According to Wikipedia, Strava is a website and mobile application used to record sports activities via GPS. Its members use devices such as a GPS watch or smartphone to record their running activities, and send these to Strava. Currently (2023), there are over 100 million members.

Strava heat maps

On its website, Strava publishes a heat map showing the aggregation of all its users’ tracks.

Example: Strava heatmap example

The more a route is ridden, the brighter its track appears on the heatmap.

In fact, there are several Strava heatmaps, one for each activity (running, cycling, skiing…). We use the running map, which is the most accurate due to the low speed of runners, and which reflects all paths, even those impassable in other activities.

Precautions to take when using Strava

You shouldn’t always blindly trust the tracks on the Strava heat map. Indeed:

  • Tracks may be obsolete, following a major climatic event that destroyed paths (for example, in 2020, storm Alex destroyed many paths in the French Alps).
  • Tracks may correspond to trail runs that have taken off-trail routes or private property.
  • Ski runs and ski lifts may appear on the running map, if users have not indicated that they practice winter sports.

Principle of missing ways detection

The software analyzes the Strava heat map to detect bright trails near which there is no path in the OpenStreetMap database.

The detection threshold can be set according to three criteria:

  • minimum brightness level (from 0 to 255).
  • minimum distance from an OSM path.
  • minimum track size.

The Strava heat map is supplied in the form of 512 x 512 pixel tiles. Each tile is analyzed independently of the others. To avoid detecting the same path twice when it straddles two contiguous tiles, it is possible to analyze only one tile out of four. This means you need to perform four analyses and update the MapRoulette challenge each time.

MapRoulette challenges in progress

Metropolitan France

French Overseas

Austria

Switzerland

Installation

The source code is available in this Github repository. The installation procedure is described in the README.md file.

How to add a new challenge for another area

If you want to add a new MapRoulette challenge for another area, the principle is as follows:

  • on the OSM-Boundaries site, download the boundaries of the area you’re interested in, choosing the Land only option. You’ll get a file in GeoJSON format.
  • run the strava.py program, passing the boundary file as a parameter. For example, for the Principality of Andorra:

python strava.py -v -a Andorra.geojson -g Andorra_Missing_Ways.geojson

  • Create a MapRoulette challenge and select the I want to upload a GeoJSON file option to upload the Andorra_Missing_Ways.geojson file.

More information in the README.md file of the Github repository.

Détection de chemins manquants dans OSM à partir des cartes de chaleur Strava

Posted by jcr83 on 1 December 2023 in French (Français). Last updated on 7 January 2024.

English version

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 : Strava heatmap example

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

Outre-mer

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.