====== Jour 4 – Éviter les doublons ======
Supposons que nous cherchons les hôtels et les restaurants. Nous avons vu qu'une requête peut retourner plusieurs lots de données :
nwr[amenity=restaurant]({{bbox}});
out geom;
nwr[tourism=hotel]({{bbox}});
out geom;
Le problème de cette requête est qu'elle peut retourner des **doublons** : les hôtels-restaurants, qui portent à la fois le tag ''amenity=restaurant'' et ''tourism=hotel''. Ainsi l'hôtel-restaurant "Les Flots Bleus" à Palavas-les-Flots, est en double dans le résultat de la requête : regardez dans l'onglet //Données// (en haut à droite de la carte).
Pour éviter cela, la solution consiste à **assembler en un seul lot de données**, les hôtels et les restaurants, en effectuant une **union** avec la syntaxe suivante :
(
requete1;
requete2;
);
Placer plusieurs requêtes entre parenthèses a pour effet de créer l'union des lots de données résultant de chaque requête : les doublons sont éliminés. Voici ce que cela donne pour notre exemple :
(
nwr[amenity=restaurant]({{bbox}});
nwr[tourism=hotel]({{bbox}});
);
out geom;
Notez que l'on peut inclure dans l'union un nombre quelconque de requêtes : ajoutons les fast-foods. Une **astuce** au passage : pour éviter de répéter la syntaxe ''%%({{bbox}})%%'' pour chaque requête, il est possible de le préciser une seule fois au tout début de la requête, avec la syntaxe suivante : ''%%[bbox:{{bbox}}];%%''.
On obtient donc :
[bbox:{{bbox}}];
(
nwr[amenity=restaurant];
nwr[tourism=hotel];
nwr[amenity=fast_food];
);
out geom;
{{style:
node, way, relation {
text: name;
}
}}
Tiens ! Des **étiquettes** apparaissent sur la carte ! C'est le résultat du bloc ''%%{{style: }}%%'' ci-dessus, qui indique d'afficher la valeur du //tag name// en étiquette (text:) pour tous les //nodes//, //ways// et //relations//. Il s'agit d'une syntaxe MapCSS comprise par Overpass Turbo – nous y reviendrons.
===== Exercices =====
* Trouvez les magasins de vêtements et de chaussures.
* Trouvez les galeries d'art, pratiquant la vente ou pas.
* Rédigez une requête qui retourne les distributeurs de billets et les banques équipées d'un ATM.
© CC-by-sa Carto’Cité