Outils pour utilisateurs

Outils du site


openstreetmap:overpass:api_filtres_sur_les_tags

Overpass API – Filtres sur les tags

Combiner plusieurs filtres de tags

On peut combiner plusieurs filtres sur les tags. Par exemple cette requête sélectionne les arrêts de bus qui sont abrités :

node(47.19,-1.59,47.24,-1.52)["highway"="bus_stop"]["shelter"="yes"];
out;

Les filtres sont donc combinés par un ET logique. Si l'on souhaite un OU logique il convient d'effectuer une union entre plusieurs requêtes de base, en les plaçant entre parenthèses :

(
 node(47.19,-1.59,47.24,-1.52)["highway"="bus_stop"];
 node(47.19,-1.59,47.24,-1.52)["railway"="tram_stop"];
);
out;

Présence ou absence d'une clef

Un filtre de tag peut en réalité filtrer la présence d'une clef, quelle que soit sa valeur :

way[building]({{bbox}});
out geom;

Le caractère de négation ! permet de détecter l'absence d'une clef.

way[!building]({{bbox}});
out geom;

Cette forme est souvent utilisée en combinaison d'un filtre de tag, pour effectuer du contrôle qualité :

way[highway][!name]({{bbox}});
out;

Expressions régulières

Le filtre permet des sélections plus souples qu'une stricte égalité, en utilisant des expressions régulières avec la syntaxe clef~regex . Par exemple pour trouver les arrêts de bus dont le nom contient le mot “Jean” :

node["highway"="bus_stop"]["name"~"Jean"];
out;

Voici quelques variantes utilisant la puissance des expressions régulières :

Filtre Signification
[“name”~“^Jean”] Le nom commence par “Jean”
[“name”~“Jean$”] Le nom se termine par “Jean”
[“name”~“[jJ]ean”] Le nom contient “jean” ou “Jean”
[“name”~“jean”,i] Insensibilité à la casse des caractères
[“name”~“J.an”] Le point est le caractère joker, les noms “Jean” et “Joan” seront retenus
[“name”!~“Saint”] Le nom ne contient pas “Saint”
[“name”!~“.”] La clef name est vide ou absente
[“name”~“église|mairie|poste”] Le nom contient l'une des valeurs énumérées

En combinant ces syntaxes on peut trouver les arrêts de bus dont le nom commence par “gare” et termine par “sud”, que ces mots aient une majuscule ou pas :

node["highway"="bus_stop"]["name"~"^[gG]are"]["name"~"[sS]ud$"];
out;

La recherche d'une clef manquante combinée à une autre clef peut être utilisée en contrôle qualité sur les données. Exemple avec les arrêts de bus n'ayant pas de tag “wheelchair” :

node["highway"="bus_stop"]["wheelchair"!~"."]({{bbox}});
out;

Compléments sur les expressions régulières :

Expression régulière sur la clef

Il est possible d'appliquer une expression régulière à la clef en commençant le filtre par le caractère ~. Exemple pour trouver les lieux ayant un nom précisé dans une langue :

node[place][~"^name(:.*)"~"."]({{bbox}});
out;
  • Printable version
  • Export to OpenOffice
  • Export to PDF
  • Add page to book
  • Tools:
openstreetmap/overpass/api_filtres_sur_les_tags.txt · Dernière modification: 2020/01/10 09:56 par admin