You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stocker l'onglet choisi dans l'URL afin qu'on puisse partager un lien montrant la vue carte ou bien la vue liste. Par exemple utiliser un query parameter ?view=(map|list)
⚠️ Il n'y a pas d'interaction croisée entre la carte et la liste. Leur affichage dépend uniquement du champ de recherche et des filtres, pas des résultats de l'un ou de l'autre.
Comportement de chargement des données :
Les deux vues ne se mettent à jour que quand elles sont ou deviennent visibles. Pas de calcul en arrière-plan, pour éviter une surconsommation.
Quand on bascule sur une vue, on utilise le contenu actuel du champ Recherche et des filtres pour calculer son affichage :
Basculement vers la vue Liste : calcul et affichage des résultats
Basculement vers la vue Carte : calcul des coordonnées X/Y où centrer la carte à partir du champ Recherche
C. Recherche géométrique des restrictions sur la vue Liste
Dans la vue Liste, le champ Recherche permet de faire une recherche géométrique de restrictions
"Rouen, 76000" => Affichage de toutes les restrictions dont la géométrie "intersecte" celle de la ville de Rouen, etc
Quand l'utilisateur saisit sa recherche, on utilise comme pour la Carte l'API de l'IGN pour obtenir une liste d'options
Quand une option est choisie, un (multi)polygône est calculé pour représenter la "zone de recherche".
La façon de calculer cette zone d'influence dépend du type de lieu
Migration de l'API IGN de recherche
⚠️ L'API IGN ne fournit que le code postal, or on a besoin du code Insee pour la ville
Cette API a été enrichie de nouveaux champs qui permettent un croisement avec la BDTOPO, il faut donc qu'on passe dessus
Migrer IgnMapGeocoder pour utiliser l'endopint /geocodage/search plutôt que /geocodage/completion. De cette façon, on peut récupérer le code Insee dans les résultats.
Calcul de la zone de recherche
Ville (type = municipality) : on récupère son code Insee pour récupérer son contour à partir de l'API découpage administratif : GET https://geo.api.gouv.fr/communes/76540?format=geojson&geometry=contour
Rue (type = street) : on trouve la voie_nommee correspondante dans la BDTOPO en faisant correspondre l'id du résultat IGN avec id_pseudo_fpb. Puis on convertit sa geometrie en polygone avec un ST_Buffer() (de 10 mètres de large par exemple)
Adresse (type = address) : on passe les coordonnées x/y du point dans le résultat IGN dans un ST_Buffer(), ce qui donnera un disque
❓ Y a-t-il d'autres "type" à considérer ?
Correspondance localisation / zone de recherce
Une fois qu'on a la zone de recherche sous forme d'une géométrie GeoJSON, on peut inclure un filtre WHERE ST_Intersects(geometry, :geometry) dans la méthode LocationRepository::findAllForMapAsGeoJSON().
Cas des départementales et nationales
Actuellement sur la carte on ne peut pas cherche des RD ou RN
Avec la nouvelle API IGN (API Adresse migrée vers la Géoplateforme), ça ne sera pas possible non plus
Donc la question ne se posera que quand on envisagera d'ajouter la possibilité de chercher des RD ou RN sur la page Carte, cf MTES-MCT/dialog-roadmap#7
Dans la version "publique" de DiaLog, qui permet à tout un chacun de consulter les données qui se trouvent dans la base, nous souhaitons mettre en avant les restrictions de circulation et non pas les arrêtés, qui restent du domaine des gestionnaires de voirie.
Ainsi nous souhaitons qu'un utilisateur non enregistré puisse facilement s'informer sur les restrictions de circulation en cherchant dans la base de données par rapport à une localisation, une période, par rapport à son véhicule, etc.
The text was updated successfully, but these errors were encountered:
User story
ETQ visiteur du site, je cherche les restrictions autour d'un lieu afin de savoir si la circulation y sera bientôt impactée
Critères d'acceptation
TODO
Design
Maquette
Implémentation
A. Principe de fonctionnement du champ Recherche
Ce champ est "dual" : il n'a pas le même effet selon qu'on regarde la vue Carte ou la vue Liste
B. Onglets Carte / Liste
À réaliser avec le composant DSFR Contrôle segmenté (Segmented control) et Turbo Streams
Stocker l'onglet choisi dans l'URL afin qu'on puisse partager un lien montrant la vue carte ou bien la vue liste. Par exemple utiliser un query parameter
?view=(map|list)
Comportement de chargement des données :
C. Recherche géométrique des restrictions sur la vue Liste
Dans la vue Liste, le champ Recherche permet de faire une recherche géométrique de restrictions
"Rouen, 76000" => Affichage de toutes les restrictions dont la géométrie "intersecte" celle de la ville de Rouen, etc
Quand l'utilisateur saisit sa recherche, on utilise comme pour la Carte l'API de l'IGN pour obtenir une liste d'options
Quand une option est choisie, un (multi)polygône est calculé pour représenter la "zone de recherche".
La façon de calculer cette zone d'influence dépend du type de lieu
Migration de l'API IGN de recherche
Récemment l'API Adresse a été migrée vers la Géoplateforme : la doc API Adresse pointe vers la page Service Géoplateforme de géocodage avec l'endpoint https://data.geopf.fr/geocodage/search
Cette API a été enrichie de nouveaux champs qui permettent un croisement avec la BDTOPO, il faut donc qu'on passe dessus
IgnMapGeocoder
pour utiliser l'endopint /geocodage/search plutôt que /geocodage/completion. De cette façon, on peut récupérer le code Insee dans les résultats.Calcul de la zone de recherche
Ville (type = municipality) : on récupère son code Insee pour récupérer son contour à partir de l'API découpage administratif :
GET https://geo.api.gouv.fr/communes/76540?format=geojson&geometry=contour
Rue (type = street) : on trouve la
voie_nommee
correspondante dans la BDTOPO en faisant correspondre l'id
du résultat IGN avecid_pseudo_fpb
. Puis on convertit sageometrie
en polygone avec unST_Buffer()
(de 10 mètres de large par exemple)Adresse (type = address) : on passe les coordonnées x/y du point dans le résultat IGN dans un
ST_Buffer()
, ce qui donnera un disqueCorrespondance localisation / zone de recherce
Une fois qu'on a la zone de recherche sous forme d'une géométrie GeoJSON, on peut inclure un filtre
WHERE ST_Intersects(geometry, :geometry)
dans la méthodeLocationRepository::findAllForMapAsGeoJSON()
.Cas des départementales et nationales
Actuellement sur la carte on ne peut pas cherche des RD ou RN
Avec la nouvelle API IGN (API Adresse migrée vers la Géoplateforme), ça ne sera pas possible non plus
Donc la question ne se posera que quand on envisagera d'ajouter la possibilité de chercher des RD ou RN sur la page Carte, cf MTES-MCT/dialog-roadmap#7
Contexte supplémentaire
Dans la roadmap : MTES-MCT/dialog-roadmap#12
Dans la version "publique" de DiaLog, qui permet à tout un chacun de consulter les données qui se trouvent dans la base, nous souhaitons mettre en avant les restrictions de circulation et non pas les arrêtés, qui restent du domaine des gestionnaires de voirie.
Ainsi nous souhaitons qu'un utilisateur non enregistré puisse facilement s'informer sur les restrictions de circulation en cherchant dans la base de données par rapport à une localisation, une période, par rapport à son véhicule, etc.
The text was updated successfully, but these errors were encountered: