Le langage Overpass QL est utilisé pour effectuer des requêtes sur la base de données OpenStreetMap. Ce langage permet de récupérer des objets géographiques en utilisant des critères spécifiques. Il est particulièrement utile pour extraire des données détaillées depuis les serveurs Overpass. (https://overpass-turbo.eu/)
Une requête Overpass QL se structure de la manière suivante :
[out:json][timeout:25];
{{geocodeArea:"Nom de l'entité"}}->.SA;
(
// Critères de recherche
);
out body;
- [out:json] : Détermine le format de sortie des données (JSON, XML, etc.).
- [timeout:25] : Définit le temps maximum d'exécution de la requête en secondes.
- {{geocodeArea:"Nom de l'entité"}}->.SA : Récupère les données dans l'emprise géographique d'une entité spécifique (par exemple une commune).
- (...) : Contient les critères de recherche pour filtrer les objets.
- out body; : Indique la sortie des objets en corps de la réponse (les données complètes).
Les requêtes Overpass QL sont basées sur des opérateurs de filtres qui permettent de sélectionner les objets en fonction de leurs clés et valeurs. Voici les opérateurs les plus utilisés :
Les prédicats définissent la clé et la valeur des objets que l'on veut récupérer.
node["key"="value"];
way["key"="value"];
relation["key"="value"];
La logique "ET" permet de récupérer des objets qui doivent correspondre à tous les critères spécifiés dans la requête.
Exemple :
node["highway"="cycleway"]["bicycle"="designated"];
Cela va récupérer les nœuds ayant la clé "highway"
avec la valeur "cycleway"
et la clé "bicycle"
avec la valeur "designated"
en même temps.
La logique "OU" permet de récupérer des objets correspondant à l'un ou l'autre des critères spécifiés. On utilise des parenthèses pour lier les différentes conditions.
Exemple :
(
node["highway"="cycleway"](area.SA);
node["highway"="path"](area.SA);
);
out body;
Cela récupère les nœuds correspondant soit à un "cycleway"
, soit à un "path"
. Les deux critères sont séparés par un point-virgule à l'intérieur des parenthèses, ce qui permet de récupérer l'un ou l'autre.
- [“key”=“value”] : Recherche les objets ayant exactement cette clé et valeur.
- [“key”~“value”] : Recherche les objets dont la clé contient la valeur spécifiée.
- [“key”~“^value”] : Recherche les objets dont la clé commence par la valeur spécifiée.
- [“key”~“value$”] : Recherche les objets dont la clé se termine par la valeur spécifiée.
Le paramètre [timeout:25]
définit le temps maximal d'exécution de la requête en secondes. Si la requête dépasse ce temps, elle sera annulée par le serveur.
Le paramètre [out:]
définit le format de sortie. Voici quelques options disponibles :
- [out:xml] : Sortie en format XML.
- [out:json] : Sortie en format JSON.
- [out:csv] : Sortie en format CSV.
- [out:custom] : Sortie en format personnalisé.
- [out:popup] : Sortie pour les fenêtres popup.
Le paramètre [maxsize:1073741824]
permet de définir la taille maximale de la requête (en bytes) pour éviter une surcharge mémoire.
Ces options permettent de récupérer des informations spécifiques sur les objets retournés par la requête :
- meta : Récupère les métadonnées des objets (versions, timestamp, etc.).
- geom : Récupère la géométrie complète des objets (coordonnées, chemins, etc.).
- skel : Récupère uniquement les informations nécessaires à la géométrie des objets (coordonnées des nœuds, chemins, etc.).
L'emprise géographique détermine la zone sur laquelle la requête est effectuée. Il existe plusieurs façons de définir cette emprise :
- {{bbox}} : Boîte englobante de la carte affichée.
- {{geocodeArea:"Nom"}} : Utilisation d'une zone géographique définie par son nom (ex : une commune).
- (south,west,north,east) : Définition manuelle des coordonnées géographiques de la zone.
Exemple :
{{geocodeArea:"Paris"}}->.SA;
node["highway"="cycleway"](area.SA);
out body;
Le langage de requête Overpass QL est un outil puissant pour interroger la base de données OpenStreetMap. Avec la possibilité de définir des critères très précis et de récupérer des données dans différents formats, il offre une grande flexibilité pour exploiter les données géographiques. Grâce à la logique "ET" et "OU", il est possible de faire des requêtes complexes pour obtenir exactement les informations nécessaires.
A vos clavier !
[out:json][timeout:25];
// gather results
(
relation["admin_level"="4"]["type"="boundary"]["source:population"~"INSEE"]({{bbox}});
);
// print results
out geom;