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

PHP & Base de données Discussion :

Recherche de ligne en fonctions de la position géographique


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Points : 31
    Points
    31
    Par défaut Recherche de ligne en fonctions de la position géographique
    Bonjour,

    voilà je viens vers vous car j'ai une requête qu'on m'a demandé pour le site web de mon entreprise et j'avoue que je sèche un peu sur le comment que je peux faire pour réaliser tout ça.

    voilà, sur le site web en question, on peut faire une recherche des magasins existant suivant le pays, l'état et le zip code si besoin.

    [pour information, je dis l'état car le pays concerné pour cette requête sont les USA]

    ce qui est souhaité, c'est que le résultat de cette recherche affiche les magasins qui sont à 5-10 ou 20 miles de la ville en question.

    mais je ne vois pas comment je peux réaliser cette requête..

    si quelqu'un peut me pister un peu sur comment je pourrais commencer, ça me serais d'une grande aide parce que là, je sèche totalement, j'arrive pas à voir par où commencer, quoi faire etc...

    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    il s'agit du principe de géolocalisation

    pour faire ça, tu as besoin de connaitre les coordonnées géographiques des magasins. est ce que tu as déjà cette informations dans ta base de données ?

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il te faudrait déjà la géolocalisation de toutes les villes des etats-unis.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    j'ai leur adresse, code postal, ville, état dans ma base de donnée.

    j'ai la possibilité de rajouter longitude, latitude (si y'a besoin).

    en fait, je voudrais savoir comment faire pour faire le test avant de demander plus d'information à notre contact au US qui fait cette requête.

    je voudrais pas qu'il nous file toutes les infos pour au final dire : "désolée, je sais pas faire"

    car au pire, si y'a besoin de longitude, latitude, je peux faire un test sur quelques villes que je peux trouver probablement sur google ou autre.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2009
    Messages : 28
    Points : 31
    Points
    31
    Par défaut
    C'est simple et complique a la fois. Tu dois prendre les coordonnees GPS des differents magasins, et ensuite utiliser la fonction Lambert 2 pour convertir ces coordonnées en metre. Ensuite tu peux calculer facilement les distances (a vol d'oiseau) entre 2 points avec simplement une bete formule de trigo (celle qui dit que le carre de l'hypo est egale a la somme des carres des 2 cotes de l'angle droit) tu vois de laquelle je parle :-) ?

    Je disais donc simple par la reponse, mais c'est complique car la formule de Lambert 2 n'est pas simple a mettre en oeuvre mais elle tiens compte de l'applatissement de la terre, et pour les US c'est for interessant.

    Et pour avoir les coordonnees GPS tu peux les avoir via GoogleMap.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut Précision
    Une partie de mon travail concerne le développement SIG.

    J'ai ainsi découvert que MySQL gère les types géographiques depuis la version 4.1, chose que j'ignorais alors.

    http://mirrors.sunsite.dk/mysql/tech...ith-mysql.html

    Ca te sera peut-être utile si tu dois gérer des coordonnées dans ta base de données.

    Notamment, il y a des fonctions d'analyse des données spatiales.
    Je n'ai jamais eu besoin de m'en servir, mais je parie qu'il y en a qui doivent permettre de faire des calculs de distance entre 2 points.

    http://mirrors.sunsite.dk/mysql/doc/...formation.html

    et aussi

    http://mirrors.sunsite.dk/mysql/doc/...ction_distance

    Bon courage !

    EDIT
    -----

    Heureusement que je n'ai jamais eu besoin de m'en servir, car selon la doc toutes ces fonctions ne sont pas encore implémentées.

    Currently, MySQL does not implement these functions according to the specification. Those that are implemented return the same result as the corresponding MBR-based functions. This includes functions in the following list other than Distance() and Related().

    These functions may be implemented in future releases with full support for spatial analysis, not just MBR-based support.
    Cependant, Distance() et Related() devraient être disponibles.
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  7. #7
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    merci à vous pour toutes vos réponses. je vais y jeter un bon gros coup d'œil et m'y lancer corps et âme (fin surtout tête et aspirine... ) là dedans.

    possible que je revienne vers vous si je butte.

    mais déjà j'ai quelques idées de par où chercher et commencer

    hop hop au boulot

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Si tu n'as pas besoin d'une grande précision, la formule du théorème de Pythagore est suffisante, comme déjà dit plus haut.
    Si tu as besoin de plus de précision, sur cette page, la formule de calcul de la distance orthodromique entre 2 points : http :
    //www.lion1906.com/Pages/francais/infos/orthodromie_loxodromie_navigation_cap.html
    .
    La formule utilise des coordonnées en radians.

    Ici, la liste des villes des USA avec les latitudes et longitudes en degrés décimaux :
    http://www.indexmundi.com/zp/us/

  9. #9
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    Bonjour bonjour

    je reviens vers vous, tard (je n'ai pas eu le temps de me pencher dessus jusqu'ici. projet plus important à faire )

    enfin bref, me revoilà donc dedans et je buttes sur un truc probablement vraiment bête mais bon ça me bloque!!


    donc pour faire mes calculs j'utilise la formule de calcul de la distance orthodromique entre 2 points (qui est super bien expliqué sur le site )

    sauf que, je dois mal utilisé les cosinus, sinus et arc cosinus de php parce que ça ne me donne pas les bons résultats!

    voici ce que je fais pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
     
    $latitudeA = $_GET['latA'];
    $longitudeA = $_GET['longA'];
    $latitudeB = $_GET['latB'];
    $longitudeB = $_GET['longB'];
     
    $SubLong = bcsub ($longitudeB, $longitudeA, 20);
    $cosLatA = cos($latitudeA);
    $cosLatB = cos($latitudeB);
    $sinLatA = sin($latitudeA);
    $sinLatB = sin($latitudeB);
     
    <p>Distance entre les deux points : 
    <?
    	//formule pour calculer les distances
    	$formule = 6371*acos($cosLatA*$cosLatB*cos('".$SubLong."')+$sinLatA*$sinLatB);
    	echo $formule ;
    ?>
    au préalable j'affiche les valeurs des cosinus, sinus etc..

    la formule de base est la suivante :

    6371*acos[cos(LatA)*cos(LatB)*cos(LongB-LongA)+sin(LatA)*sin(LatB)]

    j'ai mis des "raccourcis" parce qu'au début ça ne marchait pas.

    donc une fois que j'ai fait ça j'ai vu un résultat. sauf que le résultat n'était pas bon (j'ai fait un test tours-orléans ça me donnait 3200km au lieu de 125km )

    j'ai donc vérifier les valeurs des sinus et cosinus en comparaison avec une calculette, et c'est là que ça commence à bugger.. les valeurs ne sont pas du tout exacte..

    d'où ma question : est-ce que vous savez à quoi c'est du? c'est moi qui utilise une mauvaise fonction? le fait d'utiliser directement la valeur des latitudes - longitudes fait qu'ils ne sont pas en radians et ça pause problème?

    j'ai essayé de chercher un peu partout avant de poster, mais sans résultat

    merci d'avance pour votre aide

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Latitude et longitude doivent être exprimées en radians.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Décembre 2008
    Messages : 78
    Points : 31
    Points
    31
    Par défaut
    oui c'était bien ça

    merci beaucoup!

Discussions similaires

  1. Afficher 5 lignes en fonction d'un mot recherché
    Par ALaurent22 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2012, 13h18
  2. Selectionner une ligne en fonction de sa position
    Par calagan99 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/10/2007, 11h17
  3. Recherche de la dernière ligne en fonction d'un code en debut de colonne
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/08/2007, 16h01
  4. Recherche une ligne en fonction d'une date
    Par c+cool dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/09/2006, 15h30
  5. Fonction de recherche de ligne...
    Par Zenol dans le forum Langage
    Réponses: 6
    Dernier message: 05/12/2005, 19h26

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