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

 MySQL Discussion :

Recherche ordonnée d'après la distance entre deux points


Sujet :

MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    pas grand chose
    Inscrit en
    Septembre 2018
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : pas grand chose
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2018
    Messages : 131
    Points : 73
    Points
    73
    Par défaut Recherche ordonnée d'après la distance entre deux points
    Bonjour

    J'ai une table qui contient les coordonnées de points (X,Y)
    et un champ id et un Ref


    Et j ai un point de référence avec ce même type de coordonnées.

    J aimerais pouvoir extraire les 5 Ref les plus proches du point de référence mais je n ai aucune idée de comment procéder dans le cadre d une requête.
    Comme j ai tendance à réinventer la roue je me suis dirigé vers Pythagore mais là encore je n ai aucune idée de comment mettre cela en pratique....

    Toute aide est la bienvenue

    D avance merci pour vos conseils

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par NewUserDelphi Voir le message
    je me suis dirigé vers Pythagore
    Soient (X, Y) les coordonnées du point de référence R et (x, y) les coordonnées des points à trier p, la distance de R à p est la racine carrée de (x-X)² + (y-Y)² (à supposer que l'on travaille dans un plan... ou que la terre est plate)

    Tu n'as plus qu'à ajouter cette expression dans la clause ORDER BY.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre régulier
    Homme Profil pro
    pas grand chose
    Inscrit en
    Septembre 2018
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : pas grand chose
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2018
    Messages : 131
    Points : 73
    Points
    73
    Par défaut
    Merci, j étais donc sur la bonne piste.

    Là je ne suis pas sur mon pc donc je testerai ce soir mais j 'envisage de faire cela :

    (pour simplifier j'envisage de prendre toujours comme coordonnées 0,0 pour mon point de référence car seule importe sa position relative par rapport aux autres points et non son positionnement dans le plan, je pense que cela 'optimise le temps d’exécution' mais je me trompe peut etre)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT X,Y,REF, sqrt(power(X,2)+power(Y,2)) as DISTANCE from Table order by DISTANCE asc limit 5
    Ma requête est elle correcte ? (quoi qu il en soit je testerai ce soir mais c est pour avoir un avis et m eviter encore une fois de me fourvoyer)

    merci

    stéphane

  4. #4
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    Non tu ne te trompe pas vraiment car ta requête prends comme point de référence l'origine du repère avec comme coordonnées (0,0).
    Ce qui est dommage car si tu veux connaitre les point les plus proches d'une autre repère il faudra t'amuser à soustraire des valeurs en dur dans ta requete.

    Une version plus sympas est de créer une table repères dans laquelle tu aura tous les repères.
    Alors à ce moment là soit tu requête sur un repère précis soit tu affiche les 5 points les plus proches de tes repérés existant dans ta table. tu devra donc ajouter la clause GROUP BY et utiliser la formule proposée par @al1_24 qui est plus globale et compréhensible par tout le monde.


    Voila..

    Bon courage

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    Vous n'êtes pas dans une géométrie euclidienne mais dans une géométrie spatiale.
    De ce fait, vous devez utiliser les fonctions qui sont à la disposition de mysql.
    A lire : https://stackoverflow.com/questions/...56458#36056458

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 170
    Points : 234
    Points
    234
    Par défaut
    Bonjour,

    En effet ta réponse est plus précise mais ne nous en veux pas d'avoir voulu réinventer la roue en lui expliquant.....

    Un conseil, cache toi car tu vas te faire reperer alors que tu es un agent secret...

Discussions similaires

  1. distance entre deux points dans un repere
    Par courageuse dans le forum MATLAB
    Réponses: 3
    Dernier message: 10/12/2011, 15h01
  2. Calcul de distance entre deux points
    Par atlantis123 dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 02/06/2011, 00h36
  3. calcul de distance entre deux points.
    Par jamsgoodon dans le forum Bioinformatique
    Réponses: 0
    Dernier message: 31/05/2010, 15h06
  4. [Base de données Spatial] Distance entre deux points
    Par Pumpkins dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/11/2006, 12h18
  5. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07

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