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

Android Discussion :

Calcul de distances


Sujet :

Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Géochimiste
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Géochimiste

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Calcul de distances
    Bonjour à tous,
    je développe une application qui entre autre permet de connaitre la distance parcourue.
    Pour cela j'utilise le script suivant dans la méthode onLocationChanged(Location location )

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    //Calcul de la vitesse
                    //calcul de la vitesse
    		if(location.getAccuracy()>50)
    		{
    			vitesse=0;
    		}
    		else
    		{
    			vitesse=location.getSpeed();
    		}
     
    		//Calcul de la distance entre les deux coordonnées gps
    		locationA = new Location("point A");
    		locationA.setLatitude(lastLatitude);
    		locationA.setLongitude(lastLongitude);
     
    		locationB = new Location("point B");
    		locationB.setLatitude(location.getLatitude());
    		locationB.setLongitude(location.getLongitude());
     
     
                   lastLatitude = location.getLatitude();
                   lastLongitude = location.getLongitude();
     
    //Calcul de la distance en éliminant les points abérants
    			if(Double.valueOf(locationA.distanceTo(locationB)) <= vitesse*temps)
    			{
    				distance = String.valueOf(Double.valueOf(distance)+Double.valueOf(locationA.distanceTo(locationB))/1000);
    			}
    			else
    			{
    				distance = String.valueOf(Double.valueOf(distance)+Double.valueOf(vitesse*temps)/1000);
    			}
    la vitesse est données en m/s et le temps en seconde.
    Le pas de l'acquisition est de 1 seconde.

    Mon problème est que la distance est toujours sous estimée par rapport à celle que je mesure via l'application "mes Parcours" de google.

    Quelqu'un aurait il une idée ?

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    Tu devrais essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(Double.valueOf(locationA.distanceTo(locationB)) <= vitesse*temps) {
                   lastLatitude = location.getLatitude();
                   lastLongitude = location.getLongitude();
                   distance = String.valueOf(Double.valueOf(distance)+Double.valueOf(locationA.distanceTo(locationB))/1000);
    }
    Plutôt que ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    lastLatitude = location.getLatitude();
                   lastLongitude = location.getLongitude();
     
    //Calcul de la distance en éliminant les points abérants
    			if(Double.valueOf(locationA.distanceTo(locationB)) <= vitesse*temps)
    			{
    				distance = String.valueOf(Double.valueOf(distance)+Double.valueOf(locationA.distanceTo(locationB))/1000);
    			}
    			else
    			{
    				distance = String.valueOf(Double.valueOf(distance)+Double.valueOf(vitesse*temps)/1000);
    			}

    Tu devrais aussi te donner une marge de tolérance sur le calcul "<=vitesse*temps" à mon avis.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Géochimiste
    Inscrit en
    Août 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Géochimiste

    Informations forums :
    Inscription : Août 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Bonjour Sharcoux,
    merci pour ta réponse....
    Je vais tester ce que tu m'as écrit.

    J'ai testé plusieurs applications de tracking et j'ai remarqué que la distance mesurée pour le même trajet varie d'une application à l'autre.
    Pour exemple, j'ai fait un trajet de
    16 km selon une application A
    16 km selon mon application
    18 km selon une application B
    Au début je me basais sur l'application B et la distance inférieure mesuré avec mon application ne m'allait pas.
    Je vais tester sur des plus grands trajets pour voir si l'estimation à partir de mon application reste dans les mêmes ordres de grandeur que toutes ces applications.

    Encore merci....
    Bonne journée

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 442
    Points : 417
    Points
    417
    Par défaut
    si tu appliques mon code, fais bien attention au temps et à la vitesse que tu utilises. Mon idée c'était qu'il vaut mieux choisir des points dont tu es sûr, quitte à en abandonner certains.

    si tu veux que ton application soit précise, il faut que tu définisse une méthode permettant de contrôler la cohérence de ton chemin de point (supprimer les aller-retour brefs, les zig-zag, etc).

Discussions similaires

  1. calculer la distance qu'il y a entre une div et le bas de page
    Par Henry9 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/09/2007, 00h33
  2. Problème et questions sur un calcul de distance
    Par ale2000 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 11/09/2007, 20h33
  3. Calculer des distances géodésiques
    Par ToTo13 dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 30/11/2006, 08h59
  4. Calcul de distance entre deux points en WGS84
    Par marieR dans le forum Langage
    Réponses: 5
    Dernier message: 03/08/2006, 17h07
  5. [GEOMETRIE] calcul de distance dans un triangle
    Par gronaze dans le forum Mathématiques
    Réponses: 10
    Dernier message: 29/06/2006, 10h04

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