IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Performance Web Discussion :

Recherche de lieux les plus proches d'un point donné


Sujet :

Performance Web

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Recherche de lieux les plus proches d'un point donné
    Bonjour à tous !

    Tout d'abord merci à ceux qui prendront le temps de me lire

    Je suis actuellement en train de développer une application web sous cake php (j'ai choisi ce forum car le projet ne concerne pas cake en lui même).

    Je suis en train de chercher comment réaliser un système de recherche de lieux le plus optimisé possible, je vous explique son fonctionnement :

    Précision technique : j'utilise l'API google pour un l'affichage d'une carte ainsi que tous les marqueurs qui seront retournés par la recherche.

    En dessous de cette carte, j'ai la liste des lieux qui devront être classés du plus proche au plus éloigné ou bien du mieux au moins bien noté (ce sera au choix de l'utilisateur).

    J'ai plusieurs lieux, de plusieurs types avec, pour chacun, des coordonnées (lat, lng) différentes ainsi qu'une adresse (plus à titre d'information).

    Lieux1 type 2 Lat1 Lng2 AddressX
    Lieux2 type 1 Lat3 Lng4 AddressY
    Lieux3 type 2 Lat5 Lng6 AddressZ

    L'utilisateur tapera sa recherche dans un formulaire : les informations qu'il devra renseigner pourront être :

    - Le nom d'un pays,
    - Le nom d'une ville,
    - Le nom d'un lieu en particulier,

    Et pourront cocher :

    - Type 1
    - Type 2
    (ou les deux).

    Je comptais utiliser l'API google (notamment geocode) afin de trouver les lat et lng du lieu recherché très facilement sans me casser la tête avec les fautes d'orthographes, une adresse incomplète, etc.

    Via ces lat lng exportées de geocode je pensais effectuer ce calcul pour chaque lieu :

    Distance = Rac{(Xb-Xa)^2+(Yb-Ya)^2}

    En gros : La distance entre deux points sur le plan cartésien...

    Puis les trier dans l'ordre de croissant de Distance (dans la limite de 100 lieux par exemple).

    Mais me vient ce problème : dans l'hypothèse où je me retrouve avec, par exemple, 20000 lieux, le calcul devra se faire sur les 20000 lieux ... et c'est environs 14h qu'il faudra à ma page pour se charger lol

    Le resultat final pour l'utilisateur est, (après avoir renseigner un pays, une ville, ou un adresse sur le formulaire) d'avoir les lieux (stockés en bdd) les plus proches de cette recherche dans un rayon, de préférence, paramètrable

    Donc je me retourne vers le profession afin de trouver une solution, une technologique, une technique, un indice qui pourrait m'aider dans la résolution de ce problème !

    N'hésitez pas si vous avez des questions,

    Merci infiniment pour vos réponses,

    Bien à vous,

    Quentin.

  2. #2
    Membre éprouvé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Points : 1 060
    Points
    1 060
    Par défaut
    Bonjour,

    Citation Envoyé par Quentz Voir le message
    Donc je me retourne vers le profession afin de trouver une solution, une technologique, une technique, un indice qui pourrait m'aider dans la résolution de ce problème !
    Rechercher par boite englobante, indexe spatial, etc. afin d'envoyer moins de points à ton client.

    En première approche pour 20000 points, tu peux procéder ainsi :

    Tu calcules une boite autour de ton point de recherche avec une distance (lonMin, lonMax, latMin, latMax). Puis, tu lances ta requête en fonction de cette boite :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT lon, lat FROM matable 
            WHERE ( $lonMin <= lon AND lon <= $lonMax ) AND ( $latMin <= lat AND lat <= $latMax ) ;

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Exaaacte ! Je ne voyais pas le problème du même point de vue ! Merci beaucoup ! C'est bien plus clair !

    Je vous tiens au courant

    Merci encore !

Discussions similaires

  1. [Google Maps] récuperer les itineraires les plus proche d'un point.
    Par su4p aka dans le forum APIs Google
    Réponses: 1
    Dernier message: 25/02/2012, 18h45
  2. [XL-2003] MACRO pour rechercher les 2 valeurs les plus proches
    Par Tchibe dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2010, 15h04
  3. [Geolocalisation] Recherche d'emplacements les plus proches
    Par MoMobmx dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/12/2009, 09h54
  4. [Complexité] recherche des n points les plus proches d'un point dans une liste
    Par Benoit_T dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 20/06/2009, 15h55
  5. Trouver les X nombres les plus proche d'un nombre donné
    Par pyrou dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/07/2007, 08h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo