osm-labo/docs/osmose_integration.md

6.2 KiB

Intégration des analyses Osmose

Ce document décrit l'intégration des analyses Osmose dans les pages détaillées de thématique, à la fois pour les routes publiques et administratives.

Fonctionnalités implémentées

  1. Affichage d'une carte avec les analyses Osmose pour la thématique courante
  2. Affichage des analyses sous forme de points violets sur la carte
  3. Popups interactives avec:
    • Titre et description de l'analyse
    • Tags proposés (tableau clé-valeur)
    • Bouton pour voir l'analyse sur Osmose
    • Bouton pour réparer dans JOSM via la télécommande

Thèmes supportés

Les thèmes suivants sont actuellement supportés avec leurs IDs d'items Osmose correspondants:

Thème IDs Osmose
charging_station (Bornes de recharge) 8410, 8411
school (Écoles) 8031
healthcare (Santé) 8211, 7220, 8331
laboratory (Laboratoires d'analyses) 7240, 8351
police (Commissariats) 8190, 8191
defibrillator (Défibrillateurs) 8370

Pour ajouter de nouveaux thèmes, modifiez la constante osmoseItemsMapping dans les deux fichiers suivants:

  • templates/public/followup_graph.html.twig (route publique)
  • templates/admin/followup_theme_graph.html.twig (route administrative)

Assurez-vous que les mappages sont identiques dans les deux fichiers pour garantir un comportement cohérent.

Fonctionnement technique

L'intégration est implémentée à la fois sur la route publique (templates/public/followup_graph.html.twig) et sur la route administrative (templates/admin/followup_theme_graph.html.twig). Le fonctionnement est similaire sur les deux routes:

  1. La carte est initialisée avec MapLibre GL JS
  2. Les coordonnées de la commune sont récupérées via l'API Geo.gouv.fr
  3. Une bounding box est calculée autour du centre de la commune
  4. Les analyses Osmose sont récupérées via l'API Osmose avec les paramètres:
    • Les IDs d'items correspondant au thème
    • La bounding box calculée
    • Les niveaux de sévérité 1, 2 et 3
    • Une limite de 500 résultats
  5. Les analyses sont affichées sous forme de points violets sur la carte
  6. Au clic sur un point, une popup s'ouvre et charge les détails de l'analyse via l'API Osmose
  7. La popup affiche les tags proposés et des boutons d'action

Différences entre les routes

  • Route publique: La carte affiche uniquement les analyses Osmose.
  • Route administrative: La carte affiche à la fois les objets OSM existants (récupérés via Overpass API) et les analyses Osmose, permettant une comparaison directe entre les objets existants et les suggestions d'ajout.

Exemple d'URL d'API Osmose

Pour les bornes de recharge (charging_station):

https://osmose.openstreetmap.fr/api/0.3/issues?zoom=12&item=8410,8411&level=1,2,3&limit=500&bbox=-0.789642333984375,47.35905994178323,-0.3203201293945313,47.598060753627195

Pour récupérer les détails d'une analyse:

https://osmose.openstreetmap.fr/api/0.3/issue/5c319a16-3689-b8c7-5427-187e04a6042a?langs=auto

Tests

Pour tester l'intégration:

Route publique

  1. Accédez à une page de thématique détaillée publique, par exemple:

    • /stats/12345/followup-graph/charging_station pour les bornes de recharge
    • /stats/12345/followup-graph/school pour les écoles
    • /stats/12345/followup-graph/healthcare pour les lieux de santé
  2. Vérifiez que:

    • La carte s'affiche correctement
    • Les points violets apparaissent sur la carte (s'il y a des analyses Osmose pour cette thématique dans la zone)
    • Au clic sur un point, une popup s'ouvre avec les détails de l'analyse
    • Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement

Route administrative

  1. Accédez à une page de thématique détaillée administrative, par exemple:

    • /admin/stats/12345/followup-graph/charging_station pour les bornes de recharge
    • /admin/stats/12345/followup-graph/school pour les écoles
    • /admin/stats/12345/followup-graph/healthcare pour les lieux de santé
  2. Vérifiez que:

    • La carte s'affiche correctement avec les objets OSM existants
    • Les points violets des analyses Osmose apparaissent également sur la carte
    • Au clic sur un point violet, une popup s'ouvre avec les détails de l'analyse
    • Les boutons "Voir sur Osmose" et "Réparer dans JOSM" fonctionnent correctement

Dépannage

Problèmes généraux

Si la carte ne s'affiche pas correctement:

  • Vérifiez que la variable d'environnement MAPTILER_TOKEN est correctement définie
  • Vérifiez les erreurs dans la console JavaScript du navigateur

Si les analyses Osmose ne s'affichent pas:

  • Vérifiez que le thème a des IDs d'items Osmose associés dans osmoseItemsMapping
  • Vérifiez qu'il y a des analyses Osmose pour ce thème dans la zone
  • Vérifiez les erreurs dans la console JavaScript du navigateur

Erreurs liées à l'API Osmose

Si vous rencontrez l'erreur "TypeError: right-hand side of 'in' should be an object, got undefined":

  • Cette erreur peut se produire si l'API Osmose renvoie une réponse où data.issue est undefined
  • Vérifiez que la fonction loadOsmoseIssueDetails contient bien la vérification if (!data || !data.issue) return; avant d'utiliser data.issue
  • Si l'erreur persiste, vérifiez la structure de la réponse de l'API Osmose en ajoutant console.log(data) avant d'utiliser data.issue

Problèmes spécifiques à la route administrative

Si les analyses Osmose s'affichent sur la route publique mais pas sur la route administrative:

  • Vérifiez que la constante osmoseItemsMapping est correctement définie dans templates/admin/followup_theme_graph.html.twig
  • Vérifiez que le code d'initialisation des analyses Osmose est appelé après l'initialisation de la carte
  • Vérifiez que les analyses Osmose ne sont pas masquées par d'autres éléments de la carte (comme les marqueurs des objets OSM existants)

Si les objets OSM existants et les analyses Osmose se chevauchent de manière confuse:

  • Les analyses Osmose sont affichées avec des marqueurs violets pour les distinguer des objets OSM existants
  • Vous pouvez ajuster la couleur des marqueurs Osmose en modifiant la valeur color: '#8A2BE2' dans la fonction loadOsmoseAnalyses