Utiliser les catégories photon pour filtrer les résultats par tag osm
publié le , mis à jourSuite à la conf de Sarah au SOTM, et à la discussion qu'on a eue ensuite, j'ai testé les catégories photon. Pas encore celles qu'on définirait nous même, mais celles qui sont déjà incluses dans les dump qu'on utilise, c'est à dire celles qui sont basées sur les tags osm. Et je crois que ça peut déjà bien nous aider !
En effet les principaux tag key=value de l'élément OSM sont transformés en une catégorie photon osm.key.value. Si bien que dans la requête on peut chercher spécifiquement dans une (voire des) catégorie(s) ou exclure une autre. Par exemple, pour ne récupérer que les aires de jeux non privées, on rajoute comme paramètre &include=osm.leisure.playground&exclude=osm.access.private.
(les tags principaux seulement, donc par exemple pour l'instant on a amenity=restaurant mais pas cuisine=italian, dommage. Il faudra utiliser les dump json et définir des catégories personnalisées, on pourra alors utiliser n'importe quel tag)
Exemple, une requête qui ne sort que des mairies (d'ailleurs, on voit ici que dans ce cas le paramètre query devient facultatif)
https://serveur2.cartes.app/photon-os/api?lat=48.84&lon=2.18&zoom=13&include=osm.amenity.townhall
Avantage pour nous : dans notre categorie.yaml, nos catégories à nous sont déjà (pour la plupart) définies simplement par un [key=value] donc on pourrait très facilement transformer notre filtre overpass en filtre photon osm.key.value (et pour les cas où le filtre overpass est compliqué, on définirait le filtre photon manuellement).
Donc l'idée ça serait que quand on repère une catégorie cartes.app dans un mot de la recherche en cours,
- côté interface, on montre à l'utilisateur qu'on a compris
- par exemple on transforme le texte en boite, avec une croix pour désactiver le filtre
- côté code, on récupère le filtre photon correspondant, et on l'applique au reste du texte cherché
Là où ça se complique c'est en terme d'UX, car ça va faire doublon avec nos catégories cartes.app ...
@n4n5 @pmiossec @alexandreG si vous avez des idées de comment implémenter ça, n'hésitez pas. Perso je ne suis pas qualifié pour l'interface, mais si vous vous lancez, je pourrai gérer les modifs sur l'instance pour la définition de catégories personnalisées.
remarque 1 : cette idée ne résoud pas les recherches du type pharmacie rennes car ça va chercher uniquement les pharmacies qui ont Rennes dans leur nom ...
remarque 2 : on ne peut pas utiliser photon pour remplacer overpass, car photon ne connait pas tous les tags, on a besoin d'overpass pour récupérer par exemple les horaires d'ouverture pour l'affichage des points ouvert/fermé. Et puis surtout notre instance photon n'est mise à jour que 1 fois par semaine. Et puis aussi parce que photon ne connait (pour l'instant) que les lieux qui ont un nom, donc pas les toilettes, les points d'eau, etc.
n4n5
Sympa la conf, merci du partage
Par contre je me pose qql questions
Au niveau de l'expérience utilisateur, bcp de gens tape "pharmacie rennes" avec la carte du monde? Ou alors ils ont déjà la carte sur rennes et ils tapent pharmacie ?
Car si le zoom est trop haut, on pourrait limite prendre le milieu moyen des résultats résultats (moyen) pour faire un premier zoom, puis afficher les pharmacies.
D'ailleurs a propos du zoom, c'est normal qu'a un certain zoom y a bcp de pharmacie et d'autre qu'une seule ?
<video height="400px" src="https://codeberg.org/attachments/79a92fcc-3466-4409-9c7e-7ff73abebf86" title="Screenrecorder-2026-09-09-00-18-02-488" controls></video>
Pour ta remarque 1. Elle ne dit pas dans sa conf que la query cherche dans la "carte de visite" du lieu, et que dans celle ci, il y aura City=Rennes ?
Pour la remarque 2. C'est pas un problème d'import ça ? Moi de ce que je comprends de sa conférence c'est qu'on peut importer tout et n'importe quoi dedans nn?
Question également, a quel point on pourrait quitter overpass pour photo? Il manque quoi a photon, les openning_hours, autre chose ?
n4n5
Suite de la vidéo : enfait a trop haut zoom les pharmacies d'autre villes s'affiche Le paramètre "ici" n'est pas vrmt effectif?!
Dans la vidéo, quand je suis assez haut, il m'affiche des pharmacies a l'extérieur de l'écran, je dois de-zoomé pour les voir
etienneJr
@n4n5 wrote in https://codeberg.org/cartes/web/issues/2973#issuecomment-22548520:
Au niveau de l'expérience utilisateur, bcp de gens tape "pharmacie rennes" avec la carte du monde?
A mon avis, bcp le font déjà comme ils font une recherche google, et de plus en plus de gens le feront à cause des habitudes prises pour les prompt IA ... (et si tu as déjà la carte centrée sur rennes, ils n'ont pas de raison de taper rennes
Pour ta remarque 1. Elle ne dit pas dans sa conf que la query cherche dans la "carte de visite" du lieu, et que dans celle ci, il y aura City=Rennes ?
tu as raison, ça fonctionne, c'est génial !!! (J'avais raté mon test car j'avais gardé le mode "ici" pas centré au bon endroit). C'est assez drôle d'ailleurs, de voir toutes les mairies de Rennes-qqch : https://serveur2.cartes.app/photon-os/api?q=Rennes&include=osm.amenity.townhall
Pour la remarque 2. C'est pas un problème d'import ça ? Moi de ce que je comprends de sa conférence c'est qu'on peut importer tout et n'importe quoi dedans nn?
Faut que je vérifie si lors de l'import on peut lui spécifier une règle du genre "garde le tag opening_hours, associe le à l'objet, mais sans l'indexer, et retourne le dans les résultats de recherche"
a quel point on pourrait quitter overpass pour photon? Il manque quoi a photon, les openning_hours, autre chose ?
j'ai complété ma remarque 2 : fréquence de mise à jour + absence des lieux sans nom (elle réfléchit à le changer, mais c'est pas si évident)
Le paramètre "ici" n'est pas vrmt effectif?!
Le paramètre "ici" a un zoommax, cf #2140
laem
Trop cool ces travaux ! Je suis d'accord, beaucoup de gens vont faire les recherches à haut niveau.
Par contre, sur mobile on pourrait améliorer ça en forçant encore un peu plus la géoloc et en réutilisant mieux la géoloc moyenne des gens. Si 90 % des utilisateurs de cartes.app d'une personne sont à Rennes, eh bien après 1 j d'inactivité, on met la carte sur Rennes automatiquement. Et d'autres algos intelligents.