Outils pour utilisateurs

Outils du site


tutoverpass:jour_1_la_requete_elementaire

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
tutoverpass:jour_1_la_requete_elementaire [2020/05/14 12:17] – [Jour #1 – La requête élémentaire] admintutoverpass:jour_1_la_requete_elementaire [2023/11/06 13:52] (Version actuelle) – [Jour 1 – La requête élémentaire] charles
Ligne 1: Ligne 1:
-====== Jour #1 – La requête élémentaire ======+====== Jour 1 – La requête élémentaire ======
  
-La requête élémentaire est constituée de deux instructions :+La requête élémentaire est constituée de **deux instructions** :
  
-1/ La première instruction sélectionne dans la base de données OSM (ou plutôt dans une copie) un lot de données. Voici sa syntaxe : +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é +  * ''node''''way'' ou ''rel'' : le type d'élément recherché 
-  * entre [ ] : un ou plusieurs filtres sur les tags +  * entre ''[ ]'' : un ou plusieurs filtres sur les tags 
-  * entre ( ) : d'autres types de filtres +  * entre ''( )'' un ou plusieurs filtres de divers types 
-Toute instruction se termine par un point-virgule.+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.
  
-Les autres types de filtres sont souvent des filtres géographiques, comme %%{{bbox}}%% qui décrit la zone visible sur la carte sur Overpass TurboNous 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
  
-La **seconde instruction** consiste à retourner ce lot de données comme **résultat** de la requête Overpass. Il s'agit de l'action '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 (//ET// logique). 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.
- +
-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 <tt>highway=bus_stop</tt> et <tt>shelter=yes</tt>et se trouvent dans la zone visible de la carte, sont sélectionnés.+
  
 <code> <code>
Ligne 23: Ligne 21:
 </code> </code>
  
-Un filtre sur les tags peut ne contenir que la clef : sont retournés tous les éléments pour lequel ce tag **est défini**, //quelle que soit sa valeur// :+<WRAP center round info 80%> 
 +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 : 
 +<code> 
 +node[highway=bus_stop][shelter=yes]({{bbox}}); out; 
 +</code> 
 +</WRAP> 
 + 
 +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// :
  
 <code> <code>
Ligne 42: Ligne 47:
 </code> </code>
  
-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 :+Lorsque la //clef// ou la //valeur// du filtre contient une 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 :
  
 <code> <code>
Ligne 51: Ligne 56:
 </code> </code>
  
-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.  +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 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.+
  
 +<WRAP center round important>
 +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.
 +</WRAP>
  
 ===== Exercices ===== ===== Exercices =====
tutoverpass/jour_1_la_requete_elementaire.1589451471.txt.gz · Dernière modification : 2021/01/25 17:12 (modification externe)