Jour 1 – La requête élémentaire

La requête élémentaire est constituée de deux instructions :

La première instruction consiste à sélectionner un lot de données dans la base de données OSM (ou plutôt dans une copie). Voici sa syntaxe :

node, way ou rel : le type d'élément recherché

entre [ ] : un ou plusieurs filtres sur les tags

entre ( ) : un ou plusieurs filtres de divers types

Les filtres entre parenthèses sont souvent des filtres géographiques, comme {{bbox}} qui décrit la zone visible sur la carte sur Overpass Turbo. Nous en verrons d'autres.

La seconde instruction consiste à retourner ce lot de données comme résultat de la requête Overpass. Il s'agit de l'instruction out dont nous verrons quelques variantes.

Par exemple, la requête suivante retourne les arrêts de bus avec un abri. L'instruction de sélection combine deux filtres sur les tags et un filtre géographique : les 3 conditions doivent être remplies. Seuls les nodes qui portent les tags highway=bus_stop et shelter=yes, et se trouvent dans la zone visible de la carte, sont sélectionnés.

node
[highway=bus_stop]
[shelter=yes]
({{bbox}});
out;

Une instruction peut être écrite sur une ou plusieurs lignes, cela n'a pas d'importance. Par contre, toute instruction Overpass, se termine par un point-virgule : ;. Il est même possible de placer plusieurs instructions sur la même ligne, ainsi la requête ci-dessus peut être écrite : node[highway=bus_stop][shelter=yes]({{bbox}}); out;

Un filtre de tag peut ne contenir que la clef : sont conservés les éléments pour lequel ce tag est défini, quelle que soit sa valeur :

node
[highway=bus_stop]
[shelter]
({{bbox}});
out;

Si on ajoute un point d'exclamation avant la clef, seuls les éléments pour lesquels ce tag n'est pas défini sont retournés :

node
[highway=bus_stop]
[!shelter]
({{bbox}});
out;

Lorsque la clef ou la valeur du filtre contient un espace, un accent ou un caractère spécial, il est nécessaire de placer cette clef et/ou cette valeur entre quotes. Exemple avec un nom de lieu en breton :

node
[place=town]
["name:br"="Karaez-Plougêr"];
out;

Les quotes simples et doubles sont possibles, je conseille toutefois les quotes doubles qui ne seront pas perturbées par la présence de quotes simples dans les noms.

Notez que cette dernière requête contient deux filtres de tags mais aucun filtre géographique. Les filtres de tags sont en effet suffisamment restrictifs pour que le résultat soit de taille raisonnable. Mais ne faites pas ça pour obtenir tous les restaurants de la planète : les serveurs Overpass sont très utilisés et limitent la durée d'exécution d'une requête et le volume du résultat.

Exercices

Modifier la requête pour trouver les arrêts de bus accessibles aux personnes à mobilité réduite (PMRs).

Modifier la requête pour trouver les arrêts de bus sans information sur leur accessibilité aux PMRs.

Écrire une requête qui retourne les parkings à vélo de type arceaux (documentation : https://wiki.openstreetmap.org/wiki/FR:Tag:amenity=bicycle_parking)

© CC-by-sa Carto’Cité