Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 11h22   #1
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Par défaut Calcul de distance entre 2 points connaissant latitude et longitude de chacun

Bonjour,
Je ne sais pas si je suis au bon endroit, en fait j'ai une table contenant un ensemble de points identifiés chacun par sa latitude et longitude. Je souhaite savoir :
  1. comment calculer la distance entre 2 points donnés en fonction de ces données ?
  2. Comment trouver le point le plus propre en fonction d'un point donné ?

Merci d'avance pour votre aide.

Meilleures salutations.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 11h52   #2
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Bonjour,

Dans ma grande bonté, voici la fonction que j'utilise pour calculer la distance entre deux points gps en 3D (j'ai l'altitude dans mes coordonnées)

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
 
//calcul de la distance 3D conçue par partir-en-vtt.com
function distance($lat1, $lon1, $lat2, $lon2, $alt1, $alt2) 
	{
		//rayon de la terre
		$r = 6366;
		$lat1 = deg2rad($lat1);
		$lat2 = deg2rad($lat2);
		$lon1 = deg2rad($lon1);
		$lon2 = deg2rad($lon2);
 
		//recuperation altitude en km
		$alt1 = $alt1/1000;
		$alt2 = $alt2/1000;
 
		//calcul précis
		$dp= 2 * asin(sqrt(pow (sin(($lat1-$lat2)/2) , 2) + cos($lat1)*cos($lat2)* pow( sin(($lon1-$lon2)/2) , 2)));
 
		//sortie en km
		$d = $dp * $r;
 
		//Pythagore a dit que :
		 $h = sqrt(pow($d,2)+pow($alt2-$alt1,2));
 
		return $h;
	}

Pour la seconde question, je n'ai pas compris
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h13   #3
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par heretik25 Voir le message
...
Dans ma grande bonté, voici la fonction que j'utilise pour calculer la distance entre deux points gps en 3D (j'ai l'altitude dans mes coordonnées)
Ah il faut ajouter l'altitude pour chaque point, merci.

Je viens de géolocaliser ma position en HTML5 sur Firefox, j'ai ce résultat :
Citation:
Position déterminée :
Latitude : 3.873659
Longitude: 11.515614
Altitude : 0
Trouvez-vous cohérente cette valeur de l'altitude ?

Citation:
Envoyé par heretik25 Voir le message
Pour la seconde question, je n'ai pas compris
Ta réponse pourrait résoudre ce point.

Merci d'avance...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h16   #4
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
L'altitude n'est pas obligatoire. C'est juste que cela apporte une plus grande précision puisqu'une distance à vol d'oiseau n'est pas la même qu'un chemin montant sur une crête...

Code :
1
2
3
4
Position déterminée :
Latitude : 3.873659
Longitude: 11.515614
Altitude : 0
Altitude 0 m, vous êtes au pays bas ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 12h31   #5
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par heretik25 Voir le message
Altitude 0 m, vous êtes au pays bas ?
Suis à Yaoundé au Cameroun.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 13h39   #6
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
pour l'altitude celle-ci se récupère avec une puce GPS. si il y a 0 m, je pense que votre puce GPS n'en est pas capable.
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 16h12   #7
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par heretik25 Voir le message
pour l'altitude celle-ci se récupère avec une puce GPS. si il y a 0 m, je pense que votre puce GPS n'en est pas capable.
Les informations (latitude, longitude, altitude) retournées par un navigateur avec l'API géolocalisation en hTML5 ne sont-elles pas fiables ?

Merci d'avance.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 16h20   #8
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
Citation:
Envoyé par okoweb Voir le message
Les informations (latitude, longitude, altitude) retournées par un navigateur avec l'API géolocalisation en hTML5 ne sont-elles pas fiables ?

Merci d'avance.
D'un ordinateur ou d'un téléphone portable ?
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 17h05   #9
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par heretik25 Voir le message
D'un ordinateur ou d'un téléphone portable ?
Sur toutes les plateformes
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2012, 11h58   #10
Invité de passage
 
Inscription : mars 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 8
Points : 4
Points : 4
Citation:
Envoyé par heretik25 Voir le message
Bonjour,

Dans ma grande bonté, voici la fonction que j'utilise pour calculer la distance entre deux points gps en 3D (j'ai l'altitude dans mes coordonnées)

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
 
//calcul de la distance 3D conçue par partir-en-vtt.com
function distance($lat1, $lon1, $lat2, $lon2, $alt1, $alt2) 
	{
		//rayon de la terre
		$r = 6366;
		$lat1 = deg2rad($lat1);
		$lat2 = deg2rad($lat2);
		$lon1 = deg2rad($lon1);
		$lon2 = deg2rad($lon2);
 
		//recuperation altitude en km
		$alt1 = $alt1/1000;
		$alt2 = $alt2/1000;
 
		//calcul précis
		$dp= 2 * asin(sqrt(pow (sin(($lat1-$lat2)/2) , 2) + cos($lat1)*cos($lat2)* pow( sin(($lon1-$lon2)/2) , 2)));
 
		//sortie en km
		$d = $dp * $r;
 
		//Pythagore a dit que :
		 $h = sqrt(pow($d,2)+pow($alt2-$alt1,2));
 
		return $h;
	}

Pour la seconde question, je n'ai pas compris
Si je rentre les mêmes coordonnées, je n'obtiens pas 0 lol ?????
.sA.r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2012, 14h07   #11
Invité de passage
 
Inscription : mars 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : mars 2011
Messages : 8
Points : 4
Points : 4
Citation:
Envoyé par .sA.r Voir le message
Si je rentre les mêmes coordonnées, je n'obtiens pas 0 lol ?????
Autant pour moi, ça marche
.sA.r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2012, 15h49   #12
Membre actif
 
Homme
Inscription : avril 2011
Messages : 426
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 426
Points : 171
Points : 171
J'espère bien, voilà deux ans que j'utilise cette fonction pour mesurer des distances en 3D.

Faites-en bon usage
heretik25 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h01.


 
 
 
 
Partenaires

Hébergement Web