Fil rouge : trouver un coiffeur à Amiens avec OpenStreetMap, l'outil de cartographie libre de droit, communautaire, collaboratif et gratuit.
Avec une application mobile GPS qui utilise les données d'OpenStreetMap, comme OSMAnd~, c'est facile : on utilise son moteur de recherche et c'est plié.
On peut chercher « coiffure Amiens » dans le moteur de recherche d'OpenStreetMap. On trouvera toutes les boutiques dont le nom contient « coiffure », mais ce n'est pas satisfaisant : les salons de coiffure dépourvus du mot « coiffure » dans leur nom nous échapperont et l'on obtiendra une liste de résultats au format texte (on ne les verra pas sur la carte, on ne pourra pas en déduire la proximité ‒ sauf à cliquer sur chaque ‒, et il faudra cliquer sur le bouton « Plus de résultats » un bon moment).
On peut utiliser Overpass API turbo pour chercher dans les données du projet OpenStreetMap.
Sur la carte, il y a un bouton « sélection manuelle des limites bbox ». On clique dessus puis on trace la zone de recherche désirée sur la carte.
Un salon de coiffure, c'est un item qui a un attribut « shop » dont la valeur est « hairdresser ». Pour le savoir, depuis le site web OpenStreetMap, on utilise l'outil requêteur (menu de droite sur la carte, item tout en bas dont l'icône est un pointeur de souris et un point d'interrogation). On clique sur un salon de coiffure, et on regarde ses attributs.
On utilise donc le code suivant :
node[shop=hairdresser]({{bbox}});
out;
On exécute la requête et… la liste des résultats apparaît sur la carte. \o/
On peut également préciser la zone de recherche de manière textuelle :
area[name="Amiens"];
node[shop=hairdresser](area);
out;
Ici, j'ai donné le nom (son attribut « name ») de la relation qui matérialise la frontière / limite administrative d'Amiens. Attention : ce n'est pas toujours le nom de la ville.
Comment fait-on pour trouver la frontière / limite administrative, alors ? Sur OpenStreetMap, on utilise le requêteur (menu de droite sur la carte, item tout en bas dont l'icône est un pointeur de souris et un point d'interrogation). On clique sur Amiens. Dans la liste des résultats située à gauche, on cherche la section « Objets englobants ». On identifie « Limite communale Amiens » et on clique dessus. On trouve l'attribut « name » et sa valeur, « Amiens ».
On peut également cumuler plusieurs critères de recherche. Trouver tous les salons de coiffure accessibles en fauteuil roulant situés à Amiens (la base de données OpenStreetMap n'en contient pas, mais cette requête fonctionne dans d'autres villes) :
area[name="Amiens"];
node[shop=hairdresser][wheelchair=yes](area);
out;
Tous les salons de coiffure d'Amiens ouverts le lundi ?
area[name="Amiens"];
node[shop=hairdresser][opening_hours~'Mo'](area);
out;
Pour en apprendre plus sur la syntaxe du langage d'Overpass API turbo, voir cet excellent tutoriel.