Script Php de calcul de distances
28 messages
• Page 2 sur 2 • 1, 2
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
-

MarvinLeRouge - WRInaute impliqué

- Messages: 526
- Inscription: 1 Sep 2004
Nous sommes donc bien d'accord en fait : j'évoquais un cas théorique, que tu as rapporté à la réalité en le pondérant comme il se devait. 
- Tex
- WRInaute occasionnel

- Messages: 449
- Inscription: 9 Juil 2004
olivieri a écrit:Tex a écrit:l'algorythme qui permet de trouver le chemin le plus court (dans un reseau complexe, rien a voir avec le vol d'oiseau) et qui est utilisé dans la pluspart de ce genre d'appli s'appelle l'algorythle de Dijkstra (du nom de son inventeur), une petite recherche sur google avec cet mot devrait vous etre utile
Qui a dit chemin le plus court ?
comme ça n'etait pas explicité j'ai apporté un complement d'information sur l'autre methode tout simplement
-

Americas - WRInaute accro

- Messages: 3380
- Inscription: 24 Sep 2003
Boudiou !!! Comme j'ai mal à la tête après toutes ces explications
Bon... pour faire simple... parce que j'ai rien trouver de convainquant si ce n'est un script en perl sur cette page.
Les résultats du script sont assez probants... même si j'ai pas encore réussi à faire le tourner sur mon site
Bon... mais sur l'adresse indiquée ça fonctionne bien....
Le seul problème c'est que c'est en perl et je cherche un truc en php
Bon... pour faire simple... parce que j'ai rien trouver de convainquant si ce n'est un script en perl sur cette page.
Les résultats du script sont assez probants... même si j'ai pas encore réussi à faire le tourner sur mon site
Bon... mais sur l'adresse indiquée ça fonctionne bien....
Le seul problème c'est que c'est en perl et je cherche un truc en php
- boussole
- WRInaute impliqué

- Messages: 577
- Inscription: 6 Jan 2004
Je suis bien d'accord avec toi j'ai lache au bout d'un moment, je ne pensais pas que le calcul de distance etait aussi complexe. Le sujet m"interesse pour retrouver a partir de ma base et dans un rayon de x km a partir d'une ville donnée un professionnel
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
Bon désolé d'être rentré dans les détails, mais c'était surtout pour dire que non, on ne peut pas se contenter d'une racine carré de la somme x²+y² pour les distances.
En fait, le plus simple tout en restant grosso modo juste, c'est de prendre effectivement le script http://www.indo.com/distance/dist.pl
Il suppose que la Terre est une sphere avec un rayon moyen choisi de 6367 km. Après, la distance elle-même est calculée en mesurant l'arc de cercle sur cette sphère qui sépare les deux points (les villes).
<culture>Juste pour que tu sois conscient des approximations faites, je rappelle que la Terre est un patatoïde, généralement assimilé à une ellipsoïde plutôt qu'à une sphère (ellipsoïde = sphère applatie aux pôles). Les gars qui font des cartes choisissent donc un ellipsoïde qui leur plait, puis l'emplacement de cet ellipsoïde par rapport au centre de la Terre. Le même ellipsoïde peut être placé différemment, pour minimiser les approximations selon l'endroit dont on veut une carte. La donnée de cet ellipsoïde et de son emplacement s'appelle un "datum". Puis les gars choisissent un système de projection: Mercator, Lambert conique ou conforme ou autre... (certaines projections donnent des cartes qui respectent les distances, d'autres les angles). Enfin, ils appliquent tout ça pour obtenir une carte...
</culture>
Dans le script perl, la seule procédure importante est "great_circle_distance". J'ai pris qqs minutes pour te l'écrire en PHP. Les arguments sont les longitudes et latitudes des 2 villes, exprimées en degrés décimaux signés. Donc pour 25°30'00''E tu passes 25,5° ; pour 43°15'30"S tu passes -43,258° (négatif car coordonnées "sud"). Sur le principe, une coordonnée Ouest ou Sud devient négative. Regarde les fonctions "parse_degrees" et "parse_location" du script original pour ces conversions.
Remarque: c'est juste un portage du code, je n'ai pas regardé l'exactitude de la formule.
Et si par ailleurs tu as une base avec les coordonnées lat/long des villes, c'est tout bon...
En fait, le plus simple tout en restant grosso modo juste, c'est de prendre effectivement le script http://www.indo.com/distance/dist.pl
Il suppose que la Terre est une sphere avec un rayon moyen choisi de 6367 km. Après, la distance elle-même est calculée en mesurant l'arc de cercle sur cette sphère qui sépare les deux points (les villes).
<culture>Juste pour que tu sois conscient des approximations faites, je rappelle que la Terre est un patatoïde, généralement assimilé à une ellipsoïde plutôt qu'à une sphère (ellipsoïde = sphère applatie aux pôles). Les gars qui font des cartes choisissent donc un ellipsoïde qui leur plait, puis l'emplacement de cet ellipsoïde par rapport au centre de la Terre. Le même ellipsoïde peut être placé différemment, pour minimiser les approximations selon l'endroit dont on veut une carte. La donnée de cet ellipsoïde et de son emplacement s'appelle un "datum". Puis les gars choisissent un système de projection: Mercator, Lambert conique ou conforme ou autre... (certaines projections donnent des cartes qui respectent les distances, d'autres les angles). Enfin, ils appliquent tout ça pour obtenir une carte...
</culture>
Dans le script perl, la seule procédure importante est "great_circle_distance". J'ai pris qqs minutes pour te l'écrire en PHP. Les arguments sont les longitudes et latitudes des 2 villes, exprimées en degrés décimaux signés. Donc pour 25°30'00''E tu passes 25,5° ; pour 43°15'30"S tu passes -43,258° (négatif car coordonnées "sud"). Sur le principe, une coordonnée Ouest ou Sud devient négative. Regarde les fonctions "parse_degrees" et "parse_location" du script original pour ces conversions.
- Code: Tout sélectionner
function get_distance($long1, $lat1, $long2, $lat2)
{
$earth_radius = 6367000; // Terre = sphère de 6367km de rayon
$rlo1 = deg2rad($long1);
$rla1 = deg2rad($lat1);
$rlo2 = deg2rad($long2);
$rla2 = deg2rad($lat2);
$dlo = ($rlo2 - $rlo1) / 2;
$dla = ($rla2 - $rla1) / 2;
$a = (sin($dla) * sin($dla)) + cos($rla1) * cos($rla2) * (sin($dlo) * sin($dlo));
$d = 2 * atan2(sqrt($a), sqrt(1 - $a));
return ($earth_radius * $d);
}
Remarque: c'est juste un portage du code, je n'ai pas regardé l'exactitude de la formule.
Et si par ailleurs tu as une base avec les coordonnées lat/long des villes, c'est tout bon...
-

Americas - WRInaute accro

- Messages: 3380
- Inscription: 24 Sep 2003
Super en effet... le seul problème c'est que j'arrive pas à utiliser ce script
Bon... aK et Blini... concrètement... un code en ordre de marche ... ça donnerait quoi ?
Je vous l'avais déjà dit que je suis une brelle en PHP
J'ai besoin d'un formulaire qui appelle le script comme dans le script que j'avais indiqué plus haut...
ou l'autre possibilité... deux listes déroulantes de villes prédéterminées pour le départ et l'arrivée
Bon... aK et Blini... concrètement... un code en ordre de marche ... ça donnerait quoi ?
Je vous l'avais déjà dit que je suis une brelle en PHP
J'ai besoin d'un formulaire qui appelle le script comme dans le script que j'avais indiqué plus haut...
ou l'autre possibilité... deux listes déroulantes de villes prédéterminées pour le départ et l'arrivée
- Haq
- WRInaute passionné

- Messages: 2104
- Inscription: 29 Aoû 2002
Le script fonctionne nickel comme ça... faut juste entrer des paramètres dans la fonction (les 2 latitudes et les 2 logitudes) et elle te sort la distance.
Donc si t'as les coordonnées géographiques de 2 villes, tu fais:
et ça te sort 200 kilomètres et des brouettes (sauf qu'elle te les sort en mètres).
Donc si t'as les coordonnées géographiques de 2 villes, tu fais:
- Code: Tout sélectionner
print get_distance($longitude_paris, $latitude_paris, $longitude_bruxelles, $latitude_bruxelles);
et ça te sort 200 kilomètres et des brouettes (sauf qu'elle te les sort en mètres).
-

Americas - WRInaute accro

- Messages: 3380
- Inscription: 24 Sep 2003
D'accord pour des distances prédéterminées... mais je veux laisser la possibilité aux visiteurs de calculer un itinéraires entre les villes d'@mérique L@tine.
Ils sont sur une page "colombi@" par exemple... et ils veulent chercher la distance entre Bogot@, Me@dellin, C@li... etc...
Il me faut donc un formulaire pour les laisser entrer ces villes... ou mieux... trouver la distance entre une ville de Colombi@ et une d'un autre pays latin@
Ils sont sur une page "colombi@" par exemple... et ils veulent chercher la distance entre Bogot@, Me@dellin, C@li... etc...
Il me faut donc un formulaire pour les laisser entrer ces villes... ou mieux... trouver la distance entre une ville de Colombi@ et une d'un autre pays latin@
-

Blini - WRInaute impliqué

- Messages: 506
- Inscription: 29 Nov 2004
Je crois qu'Americas attend un script tout fait, une page toute faite, même, avec un formulaire où tu saisies le noms des deux villes.
Bon, sans vouloir faire de pub, mais quand même, il y a www.mappy.com qui est là pour ça (distances réelles par la route)
Sinon, il faut trouver une BdD avec le nom des villes et leur position lat/long, un petit <form> dans une page, une requête mysql, et un appel à la fameuse "get_distance"...
Americas, tu peux sûrement trouver un squelette de page PHP avec un formulaire, puis l'adapter, non ?
Sinon, pour une BdD avec les coordonnées des villes, ça m'a tout l'air d'être dispo gratis ici:
http://earth-info.nga.mil/gns/html/cntry_files.html
Bon, il faut lire un peut pour comprendre les champs des fichiers texte, mais ça devrait être faisable...
Sinon, trouvé aussi ici:
http://jyotisha.00it.com/Latitude.htm
Bon, sans vouloir faire de pub, mais quand même, il y a www.mappy.com qui est là pour ça (distances réelles par la route)
Sinon, il faut trouver une BdD avec le nom des villes et leur position lat/long, un petit <form> dans une page, une requête mysql, et un appel à la fameuse "get_distance"...
Americas, tu peux sûrement trouver un squelette de page PHP avec un formulaire, puis l'adapter, non ?
Sinon, pour une BdD avec les coordonnées des villes, ça m'a tout l'air d'être dispo gratis ici:
http://earth-info.nga.mil/gns/html/cntry_files.html
Bon, il faut lire un peut pour comprendre les champs des fichiers texte, mais ça devrait être faisable...
Sinon, trouvé aussi ici:
http://jyotisha.00it.com/Latitude.htm
28 messages
• Page 2 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Script Php de calcul de distances
- script de calcul de densité en PHP
- Calcul du pagerank avec un script PHP
- Voilà le script de calcul des backlinks en php
- Calcul de la bande passante utilisé par un script php
- Comment lancer un script php à parrtir d'un autre script php ?
- Script de calcul de la latitude/longitude ?
- Script calcul page rank
- calcul en php
- Soucis de calcul en php!
- Calculer le ratio de liens profonds
Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés. - Calculer l'indice de co-occurrence
Cet outil vous permet de calculer l'indice de co-occurrence de 2 ou 3 termes, ainsi que le ratio E/F. L'indice de co-occurrence mesure le relation entre les termes : plus cet indice est élevé, plus les termes sont reliés. Concrètement, plus l'indice est élevé, plus il est fréquent de trouver des documents qui contiennent les différents termes.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
