Précédent   Forum du club des développeurs et IT Pro > Java > Général Java > Java & Mobiles > Android
Android Forum d'entraide sur Android, la plateforme mobile de Google pour téléphones portables et Smartphones. Avant de poster -> FAQ Android
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 09/01/2013, 13h29   #1
wataiso
Invité régulier
 
Homme
Géochimiste
Inscription : 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 : 7
Points : 7
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 :
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 ?
wataiso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2013, 14h36   #2
Sharcoux
Membre confirmé
 
Homme
Étudiant
Inscription : mai 2011
Messages : 370
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 370
Points : 296
Points : 296
Tu devrais essayer ça :

Code :
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 :
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.
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 12h04   #3
wataiso
Invité régulier
 
Homme
Géochimiste
Inscription : 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 : 7
Points : 7
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
wataiso est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2013, 15h42   #4
Sharcoux
Membre confirmé
 
Homme
Étudiant
Inscription : mai 2011
Messages : 370
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2011
Messages : 370
Points : 296
Points : 296
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).
Sharcoux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h33.


 
 
 
 
Partenaires

Hébergement Web