Bonjour,
Quelqu'un peut-il me donner des conseils pour implémenter le problème suivant:
J'ai une liste de lieux géographiques dont je connais la lattitude/longitude en base de donnée. J'aimerais pouvoir requêter les N lieux géographiques les plus proche d'une certaine autre coordonnée (en spécifiant d'ailleurs également d'autres contraintes du style "type=restaurant").
Il s'agirait évidemment d'éviter d'extraire l'intégralité des lieux, de calculer leur distance, et de chercher les N plus proches à chaque requête. Sachant que la perfection du résultat importe peu (il n'est pas important que cela soient exactement les lieux les plus proches, mais il faut que cela soit approximativement vrai), quelle solution me conseilleriez-vous?
Idée: quadriller la carte en terrains numérotés et les organiser sous forme d'un arbre (aller plus profondément dans l'arbre => déterminer un terrain de plus en plus précis) et stocker pour chaque lieu le numéro du terrain. Ensuite, requêter la bdd pour trouver N lieux dans le terrain le plus petit possible, et si non suffisant, passer aux terrain "parent" dans l'arbre (qui est de taille supérieure), et ainsi de suite. Est-ce une bonne approche?
Merci d'avance.
p.s. C'est à moitié un problème de bdd et d'algorithmique, j'espère que je ne suis pas dans le mauvais forum (je développe en .net ;-) ).
Partager