====== 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é