begin process at 2012 02 15 23:40:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > CALCUL D'UNE DISTANCE ORTHONORMIQUE

CALCUL D'UNE DISTANCE ORTHONORMIQUE


 Information sur la source

 Description

Cette petite fonction permet de calculer une distance enter deux points grace à leurs latitudes et longitudes.
J'ai réalisé cette fonction pour calculer la distance "à vol d'oiseau" entre deux villes.

Les deux derniers champs sont des optionsce qui permet d'utiliser la fonction sommairement

echo distance_orthonormique(48.833, 2.333, 43.300, 5.367)." km s'éparent Paris de Marseille.";

Ce qui nous donnera :
658.86 km s'éparent Paris de Marseille.

Source

  • <?php
  • function distance_orthonormique($x1, $y1, $x2, $y2, $precision = 3, $r = 6378.14)
  • {
  • // La variable $r correspond au rayon de la Terre.
  • // $x1, $x2 sont les latitudes de chaques points respectifs.
  • // $y1, $y2 sont les longitudes de chaques points respectifs.
  • // $precision permet d'obtenir le nombre de chiffre après la virgule.
  • // Elle est définit à 3 par défaut permettant d'obtenir une précision au mètre. Il vous suffira de la multiplier par 1000.
  • // On convertit les latitudes et longitudes en radian.
  • $x1 = deg2rad($x1);
  • $x2 = deg2rad($x2);
  • $y1 = deg2rad($y1);
  • $y2 = deg2rad($y2);
  • // Calcule des distances entre les deux points.
  • $dlat = $x2 - $x1;
  • $dlong = $y2 - $y1;
  • // On applique la formule.
  • $a = sin($dlat/2)*sin($dlat/2) + cos($x1)*cos($x2)*sin($dlong/2)*sin($dlong/2);
  • $c = 2 * atan2(sqrt($a), sqrt(1-$a));
  • // On récupère la valeur du résutat arrondi avec la précision.
  • $d = round($r*$c, $precision);
  • // On renvoit la distance en km
  • return $d;
  • }
  • ?>
<?php

function distance_orthonormique($x1, $y1, $x2, $y2, $precision = 3, $r = 6378.14)
{
	// La variable $r correspond au rayon de la Terre.
	// $x1, $x2 sont les latitudes de chaques points respectifs.
	// $y1, $y2 sont les longitudes de chaques points respectifs.
	// $precision permet d'obtenir le nombre de chiffre après la virgule. 
	// Elle est définit à 3 par défaut permettant d'obtenir une précision au mètre. Il vous suffira de la multiplier par 1000.
	
	// On convertit les latitudes et longitudes en radian.
	$x1 = deg2rad($x1);
	$x2 = deg2rad($x2);
	$y1 = deg2rad($y1);
	$y2 = deg2rad($y2);

	// Calcule des distances entre les deux points.
	$dlat = $x2 - $x1;
	$dlong = $y2 - $y1;
	
	// On applique la formule.
	$a = sin($dlat/2)*sin($dlat/2) + cos($x1)*cos($x2)*sin($dlong/2)*sin($dlong/2);
	$c = 2 * atan2(sqrt($a), sqrt(1-$a));
	
	// On récupère la valeur du résutat arrondi avec la précision.
	$d =  round($r*$c,  $precision);


	// On renvoit la distance en km
	return $d;
}
?>



 Sources du même auteur

Source avec Zip DÉCOMPTEUR STYLE OGAME

 Sources de la même categorie

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette

Commentaires et avis

Commentaire de neigedhiver le 26/01/2010 19:31:35

Salut,

Pas grand chose à dire sur le code.
Sur le principe, j'aime beaucoup ce genre de source qui se démarque des autres (les grands classiques du genre formulaire de contact, espace membre, etc). Ca fait plaisir, quoi.
Merci donc.

Commentaire de bossfoot le 26/01/2010 19:34:32

Salut et merci ^^
J'aime bien moi aussi pas de superflue, juste ce qu'on a besoin ^^

Commentaire de tpoinsot le 27/01/2010 12:16:41

Bonjour,
je n'ai pas les mêmes formules mais je suppose que cela revient au même. Cependant, Tu as un rayon de 6378.14 qui est différent du mien, et j'aimerai savoir comment tu l'as obtenu.

J'utilise (40000km) / (2*PI) =  6366.198
D'où l'écart avec ton programme, car j'obtiens 657.626

Ma formule :
d = (arccos(Cos(latA) * Cos(latB) * Cos(LongA-LongB) + Sin(latA) * Sin(latB))) * 20000/PI

avec, pour c dans ]-1,1[ : arccos(c) = Atn(-c / Sqr(-c * c + 1)) + PI / 2

Commentaire de bossfoot le 27/01/2010 12:32:26

Je cherchais justement à avoir les données les plus justes tant qu'à faire ^^
Je suis allez faire un tour sur wikipédia.
J'ai utiliser le rayon équatoriale alors que toi le rayon polaire avec une formule arrondie ^^

http://fr.wikipedia.org/wiki/Terre

Rayon équatorial 6 378,137 km
Rayon polaire 6 356,7523142 km
Périmètre équatorial 40 075,017 km
Périmètre méridional "polaire" = 40 007,864 km

40 000/(2*PI)= 6366.198
40 007.864/(2*PI)= 6367.449
40 075.017/(2*PI)=6378.137

J'espère que sa t'aura aidé ^^

Commentaire de tpoinsot le 27/01/2010 13:55:44

Merci beaucoup. Ce n'est pas "utile" mais très intéressant. Je suis allé recherché un code que j'avais fait en vb il y a 10 ans pour voir comment j'avais fait.
Il s'agissait d'ailleurs de distance orthodromique, mais le vocabulaire ...

Commentaire de bossfoot le 27/01/2010 14:05:05

Je vais pas te contredire ^^

Commentaire de Bogs94 le 01/02/2010 08:44:54

Dis moi, ce ne serait pas une distance orthodromique plutot ? (orthonormique je n'ai jamais entendu parler)
La distance la plus courte à vol d'oiseau prenant en compte la rotondité de la Terre...

Commentaire de creazyhead le 01/02/2010 17:57:53

Bonjour,

Bravo, c'est super, j'avais essayé d'obtenir la même chose mais ma fonction était bien moins performante et pas aussi siplifiée!
Par contre sous quel format rentre t'on les lattitudes et longitudes?

Merci et encore bravo!

Commentaire de bossfoot le 03/02/2010 23:31:34

@Bogs94 : Oui pardon j'ai confondu ^^

@creazyhead : en degré  48.833, 2.333 données récupérer sur le site de l'INSEE.

Commentaire de creazyhead le 03/02/2010 23:38:29 10/10

Bonsoir,

J'avais trouvé, il s'agit de degré décimaux, mais souvent on parle plutot de d° m et s.

Merci

Commentaire de assemple le 12/02/2010 21:17:52

L'orthographe ! Messieurs, l'orthographe !
s'épare NON ! : sépare  !!!!

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

fermeture d'une page par une autre à distance... [ par ChocoBiscuit ] Lut tout le mondeBon je sais, C pô très clair, mais je vais m'expliquer....Voilà, je bosse pour une boite qui veut tester des données sur une BdD dist Script a distance [ par Jackboy ] Question !J'ai un script php a faire fonctionner sur mon site, mais ne supporte pas le php (serveur x). J'ai un deuxieme serveur (serveur y) qui lui s bdd à distance [ par MiTcH37 ] est-il possible de se connecter à une basde de donnée mysql sur un autre site (ex site 1 w.free.fr et site2 w2.lycos.fr) ?@++ MiTcH</ Connection à distance a mysql sur multimania [ par Bestgamer ] J'aimerai avoir les informations pour me connecter sur ma base de données chez multimania avec MySQL Control Center (logiciel d'administartion de base Comment ouvir 1 dossier a distance ????? [ par christ_sand ] Bonjour et merci a tous de votre Aideje dispose d'1 site espace membre chez Free ou je n'ai plus de place on ma aimablement prété de l'espace sur un a gravure CD a distance [ par petitefonc ] bonjour,j'aimerai mettre au point un script PHP me permettant de graver un CD sur le poste hebergeant le script.je pense qu'il faut utiliser la comman Mysql, connection a distance [ par stroubinou ] Bonjour, Anciennement multimania, j'ai d&#233;cid&#233; de m'exiler ( trop de frame pub) et de me faire h&#233;berger chez mon FAI : est vid&#233;o co Executé 1 script à distance [ par LaurentKOogar ] Bonjour, Voila, j'ai un petit probleme. J'utilise un script sur un serveur A qui envoides donn&#233;es a travers un script sur 1 serveur B. classique. passage d'examen a distance [ par enset ] salut a tous je suis un etudiant et g un mini projet PASSAGE D'EXAMEN A DISTANCE; cad un site web dynamique ou un etudiant peut s'identifie et passe d Distance entre deux chaines [ par rhum07 ] Je cherche une fonction qui permet de calculer la distance entre 2 chaines de caract&#233;res au niveau des mots contenus dans les chaines et non le c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,981 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales