Interroger OSM avec overpassturbo

Avec overpassturbo, il est possible d'interroger la base de données OpenStreetMap pour rendre visible ou extraire les données qui répondent aux critères.

L'utilisation de l'assistant de construction de requête aide beaucoup mais connaître un peu de syntaxe permet d'extraire des données plus fines. Ces notes sont une traduction/simplification de la page https://wiki.openstreetmap.org/wiki/FR:Overpass_API/Language_Guide#One_or_another_name

Combiner plusieurs critères

Si vous souhaitez combinez plusieurs tags dans votre requête via l'assistant, vous pouvez les indiquer en les séparant par un AND ou un OR
ex : waterway=ditch and description~gorgebleue

Extraire des données contenant une partie d'un mot

Même si vous ne connaissez pas le nom exact, vous pouvez trouver l'objet.
Le premier exemple recherche tout nœud, ligne ou relation dont la description contient la chaîne "gorgebleue" :
Dans l'assistant : description~gorgebleue
Le deuxième exemple recherche tout nœud, ligne ou relation dont la description commence par la chaîne de caractères "gorgebleue" :
Dans l'assistant : description~^gorgebleue
Le troisième exemple recherche tout nœud, ligne ou relation dont la chaîne de caractères "gorgebleue" est la fin de la description :
Dans l'assistant : description~gorgebleue$
Et vous pouvez faire une recherche insensible à la casse avec des expressions régulières en mettant les deux variantes entre parenthèses :
Dans l'assistant : description~[Gg]orgebleue
Et si vous n'êtes pas sûr de l'orthographe d'un mot vous pouvez remplacer une lettre par un . :
Dans l'assistant : description~gorg.bleue
Si vous voulez autoriser deux valeurs alternatives, vous pouvez utiliser un | pour cela.
Dans l'assistant : description~gorgebleue|rousserolle

Extraire des données par exclusion

Par exemple, la requête suivante donne toutes les routes qui n'ont pas de valeur de clé d'autoroute :
["highway"!~"."] => type de route sauf autoroute
["waterway"!~"."] :> tout ce qui n'est pas un waterway

Comme deuxième exemple, vous pouvez limiter une requête pour les arrêts d'autobus à ceux qui ont un abri. Techniquement, nous recherchons les nœuds avec "highway"="bus_stop" et tag "shelter" présent, mais pas réglé sur "no".
["highway"="bus_stop"]
["shelter"]
["shelter"!="no"]

Autre exemple : tous les endroits avec gorgebleue dans la description mais qui ne sont pas des fossés (wateway=ditch)
["description"~"gorgebleue"]["waterway"!~"."]