Partage
  • Partager sur Facebook
  • Partager sur Twitter

Géocodage inversé

Sujet résolu
2 mai 2022 à 16:56:37

Bonjour,

Je souhaite faire du géocodage inversé afin d'obtenir l'adresse la plus proche d'un point donné dans un certain rayon. J'ai trouvé ceci "https://jsfiddle.net/16qx9cav/" qui me permettrait de faire ce que je souhaite, le problème c'est que ça fonctionne sur une API en HTTP et j'ai peur que ça ne tienne pas la cadence.

En effet, je développe une appli de tracking et je récupère donc des coordonnées toutes les secondes (à peu près). Avec ces dernières, j'affiche en temps réel la position sur la carte. Le problème est qu'elles ne sont pas toujours précises à 100%, je cherche donc à coller les données GPS à une rue (dans un certain rayon). Le problème, si j'utilise une API, est qu'il faudrait donc que je fasse un call à chaque fois que je reçois une coordonnée, donc environ 60call/min.

Existe-il un autre moyen ? sous forme de lib peut-être ? J'utilise actuellement leaflet. Merci d'avance pour votre aide.

  • Partager sur Facebook
  • Partager sur Twitter
2 mai 2022 à 17:30:05

Salut,
Je pense que tu peux rester sur une api, perso j'ai bidouillé quelque truc en géocodage aussi et j'utilise ça : https://adresse.data.gouv.fr/api-doc/adresse

c'est l'api du gouvernement, ça tiens la cadence, après je ne sais pas si tu peux faire exactement ce que tu souhaites avec mais je pense que tu peux bidouiller quelques trucs

  • Partager sur Facebook
  • Partager sur Twitter
3 mai 2022 à 1:26:36

Merci, mais je ne sais pas si peux me baser sur un bidouillage vu que c'est un projet qui va être utilisé dans un contexte professionnel.

J'ai surtout peur que si l'utilisateur passe dans un endroit avec un faible réseau, les requêtes vont prendre un certain temps et donc créer un délai général sur l'appli.

  • Partager sur Facebook
  • Partager sur Twitter
3 mai 2022 à 8:54:18

Quand je dit bidouille c'est une image hein ahah, c'est un truc pour des pros avec aussi possiblement un faible réseau, les requêtes se font bien quand même
  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2022 à 13:11:06

D'accord merci, mais le problème de l'api du gouv c'est quel se limite à la France, ce qui est en soi normal mais pas suffisant dans mon cas, il me faudrait l'UE voir même l'Europe complète. Pour ça que je m'étais tourné vers OSRM, mais j'ai peur d'être bloqué dans le nombre de requête si j'utilise leur serveur.

J'ai vu qu'on peut l'héberger sur notre propre serveur en téléchargeant les données géographiques d'OSM, mais cela a l'air très très gourmand en RAM si on se base sur des grosses zones géographiques (200Go de RAM pour la couverture mondiale, selon un article que j'ai vu). Mon serveur ne dispose pas du tout de ses capacités :/ .

  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2022 à 13:26:04

la ou je bosse on est pas bloqué par le nombre de requêtes mais parfois c'est assez imprécis (mais ça fonctionne) au début on l’hébergeais mais oui mauvaise idée ça consomme vraiment trop en ressources
  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2022 à 14:11:21

Tu bosse avec OSRM ? ou l'api du gouv ?
  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2022 à 16:03:54

Ok merci, je verrai pour test avec OSRM alors.
  • Partager sur Facebook
  • Partager sur Twitter
10 mai 2022 à 16:32:54

Me revoila,

Hier j'ai mis en place le géocodage inversé en place sur mon projet. Le bilan est mitigé, cela fonctionne très bien en me collant bien à la rue c'est 10x plus précis qu'a l'origine. Cependant, et c'est un point un peu dérangeant, parfois il me colle sur une mauvaise rue (étant donné qu'il prend la plus proche des coordonnées passées).

Existe-il une solution pour éviter ce problème ? Même si ça nécessite de traiter les données une fois l'enregistrement de l'itinéraire fini, je suis preneur.

  • Partager sur Facebook
  • Partager sur Twitter
10 mai 2022 à 17:31:25

Tu peux pas faire une sorte d'algo qui traites les coordonnées et qui si il y'a "un grand écart d'un coup " a un moment (donc qui correspondrait a un changement de rue inopiné) ton algo reprend la rue dans laquelle tu etais pour te remettre dessus ? (grosse bidouille + je sais pas si je suis claire)
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2022 à 0:00:04

Ah ouais je vois, ce n'est pas bête, vu que je connais la vitesse de l'utilisateur je peux calculer la distance avec le point précédent. Ensuite, voire si a la vitesse où il va la distance est plausible ou non, avec une certaine marge bien sur. Par la suite j'en déduis si je conserve les données retournées par l'API ou non.

Merci de l'idée je vais essayer de mettre ça en place. :D

  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2022 à 15:39:11

Pour ceux que ça intéresse et qui cherche une solution plus propre, en cherchant dans la doc d'OSRM je suis tombé sur un paramètre "bearing".

let url = `https://router.project-osrm.org/nearest/v1/driving/${e.longitude},${e.latitude}?number=2&radiuses=50`;
if(e.heading != null && e.speed >= 3) {
     let bearing = Math.ceil(e.heading);
     url += `&bearings=${bearing},20`;
}

Avec cette modification j'ai beaucoup moins le problème que j'avait avant. Ce n'est pas encore parfait a 100%, donc je pense quand même implémenter la solution d'au dessus.

-
Edité par Kévin_ 13 mai 2022 à 15:39:52

  • Partager sur Facebook
  • Partager sur Twitter