Script Php de calcul de distances

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics


Americas
WRInaute accro
WRInaute accro
 
Messages: 3380
Inscription: Mer Sep 24, 2003 11:49

Script Php de calcul de distances

Message le Dim Jan 23, 2005 13:35

Je cherche un script en PHP pour calculer les distances entre deux villes.

Ce script existe en javascript mais cela ne m'intéresse pas. Si vous connaissez un faites-moi signe SVP. Et si possible avec une base de données conséquentes de villes... pour ne pas avoir à rechercher tout cela :lol:

Haq
WRInaute accro
WRInaute accro
 
Messages: 2104
Inscription: Jeu Aoû 29, 2002 21:18

Message le Dim Jan 23, 2005 14:17

Euh... ça existe, ça ? Ca doit donner un nombre tout à fait incroyable de combinaisons ?

Si tu as mille villes indexées, tu as... euh... un paquet de possibilités. Je n'ai plus fait de stats depuis longtemps, mais c'est énorme.


kevicar
WRInaute passionné
WRInaute passionné
 
Messages: 973
Inscription: Jeu Mai 13, 2004 10:37

Message le Dim Jan 23, 2005 14:39

8O

Effectivement cela doit faire pas mal de combinaisons !!!

Distance à vol d'oiseau, en voiture ( autoroutes ) ou a pied ( petit chemins ). :?:

:?

Haq
WRInaute accro
WRInaute accro
 
Messages: 2104
Inscription: Jeu Aoû 29, 2002 21:18

Message le Dim Jan 23, 2005 14:56

Même en se limitant à une distance arbitraire, c'est énorme...

Entre 3 villes différentes, ça fait 3 possibilités. Là ça va...
Mais pour 5 villes, ça en fait déjà 10...
Pour 10 villes, 45...
Pour 21 villes, 210...
Pour 35 villes, 595...

Et je vous épargne la suite (sous réserve que mes calculs soient bons, ce que je crois).

petit-ourson
WRInaute passionné
WRInaute passionné
 
Messages: 843
Inscription: Lun Mai 31, 2004 15:19

Message le Dim Jan 23, 2005 14:59

Il n'y a pas vraiment de combinaisons si tu souhaites calculer la distance a vol d'oiseaux entre les villes.

Il suffit du couple altitude / longitude pour chacune des villes souhaitées et le calcul se fait par algo.

Donc si tu as 5 villes cela te donne 5 lignes dans ton tableaux, 1000 villes pour 1000 lignes...

Haq
WRInaute accro
WRInaute accro
 
Messages: 2104
Inscription: Jeu Aoû 29, 2002 21:18

Message le Dim Jan 23, 2005 15:12

petit-ourson a écrit:Il n'y a pas vraiment de combinaisons si tu souhaites calculer la distance a vol d'oiseaux entre les villes.


A vol d'oiseau, c'est bien sûr différent... mais alors c'est plus un gadget qu'un outil.

Grantome
WRInaute accro
WRInaute accro
 
Messages: 2899
Inscription: Ven Jan 16, 2004 19:47

Re: Script Php de calcul de distances

Message le Dim Jan 23, 2005 17:37

Americas a écrit:Je cherche un script en PHP pour calculer les distances entre deux villes.


Ah bah quand même...

Je me demandais qu'and le concepteur du calcul des courte distance chez MSN allait demander l'avis de pros :mrgreen:


olivieri
WRInaute passionné
WRInaute passionné
 
Messages: 889
Inscription: Lun Fév 03, 2003 17:30

Message le Dim Jan 23, 2005 18:41

En voila un en ASP qui donne une distance à vol d'oiseau entre deux points repérés par latitude/longitude en tenant compte de la courbure de la terre...

Code: Tout sélectionner
dim gPI
gPI = 3.14159265358979

dim gEARTH_RADIUS_METRES
gEARTH_RADIUS_METRES = 6378007

dim gEARTH_CIRCUM_METRES
gEARTH_CIRCUM_METRES = gEARTH_RADIUS_METRES * 2 * gPI

dim gMETRES_PER_LAT_DEGREES
gMETRES_PER_LAT_DEGREES = 111113.519

Function GetDistance(dX1, dY1, dX2, dY2)
    Dim dDeltaX
    Dim dDeltaY
    Dim dDeltaXMeters
    Dim dDeltaYMeters
    Dim dMetersPerDegreeLong
    Dim dCenterY

    dDeltaX = Abs(dX2 - dX1)
    dDeltaY = Abs(dY2 - dY1)
    dCenterY = (dY1 + dY2) / 2
    dMetersPerDegreeLong = MetresPerDegreeLong(dCenterY)
    dDeltaXMeters = dDeltaX * dMetersPerDegreeLong
    dDeltaYMeters = dDeltaY * gMETRES_PER_LAT_DEGREES
    GetDistance = Sqr(dDeltaXMeters ^ 2 + dDeltaYMeters ^ 2)
End Function

Function MetresPerDegreeLong(dLat )
    MetresPerDegreeLong = (Cos(dLat * (gPI / 180)) * gEARTH_CIRCUM_METRES) / 360
End Function


Ca devrait pas être très compliqué à réécrire en PHP

Tex
WRInaute impliqué
WRInaute impliqué
 
Messages: 447
Inscription: Ven Juil 09, 2004 11:17

Message le Dim Jan 23, 2005 18:46

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 :)


olivieri
WRInaute passionné
WRInaute passionné
 
Messages: 889
Inscription: Lun Fév 03, 2003 17:30

Message le Dim Jan 23, 2005 18:53

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 ?


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 451
Inscription: Mer Sep 01, 2004 20:10

Message le Dim Jan 23, 2005 21:06

Bon, 2 optiques :
- soit il s'agit de la distance à vol d'oiseau, auquel cas la formule est racine carrée ((x2 - x1)² + (y2 - y1)²)
- soit il s'agit de la distance entre 2 villes en suivant des sections de route dnot on connaît la longueur, auquek cas il s'agit de l'algorithme du chemin minimal entre deux sommets d'un graphe, algorithme que tu trouveras sur Google

NB pour Olivieri : LA distance signifie nécessairement la distance la plus courte, car on peut toujours trouver plus long (en s'amusant à faire un tour pour rien par exemple) ;)


Blini
WRInaute passionné
WRInaute passionné
 
Messages: 506
Inscription: Lun Nov 29, 2004 8:59

Message le Dim Jan 23, 2005 21:15

MarvinLeRouge a écrit:- soit il s'agit de la distance à vol d'oiseau, auquel cas la formule est racine carrée ((x2 - x1)² + (y2 - y1)²)


Valable seulement en métrique, pour des distances courtes...

MarvinLeRouge a écrit:NB pour Olivieri : LA distance signifie nécessairement la distance la plus courte, car on peut toujours trouver plus long (en s'amusant à faire un tour pour rien par exemple) ;)


Et si tu parcours un graphes où les "distances" entre les sommets du graphe sont des temps de parcours, par exemple, eh bien ton calcul du "plus court" correpsond au plus rapide (temps le plus petit) !


MarvinLeRouge
WRInaute impliqué
WRInaute impliqué
 
Messages: 451
Inscription: Mer Sep 01, 2004 20:10

Message le Dim Jan 23, 2005 23:39

Blini a écrit:
MarvinLeRouge a écrit:- soit il s'agit de la distance à vol d'oiseau, auquel cas la formule est racine carrée ((x2 - x1)² + (y2 - y1)²)


Valable seulement en métrique, pour des distances courtes...


Comment ça valable seulement pour des distances courtes ? 8O C'est la formule de calcul de la distance du point A au point B dans le plan, et l'ordre de grandeur n'a rien à voir là dedans, pas plus que l'unité employée. A moins que tu ne tiennes compte de la non-planitude de la surface terrestre, mais là il n'est plus question du même argument. :?

Blini a écrit:
MarvinLeRouge a écrit:NB pour Olivieri : LA distance signifie nécessairement la distance la plus courte, car on peut toujours trouver plus long (en s'amusant à faire un tour pour rien par exemple) ;)


Et si tu parcours un graphes où les "distances" entre les sommets du graphe sont des temps de parcours, par exemple, eh bien ton calcul du "plus court" correpsond au plus rapide (temps le plus petit) !


Oui, on peut effectivement calculer le temps de parcours minimal selon la même méthode (ce qui en général ne rend pas le même chemin, d'ailleurs :roll: ).


Bobez
WRInaute passionné
WRInaute passionné
 
Messages: 716
Inscription: Jeu Mai 20, 2004 13:03

Message le Lun Jan 24, 2005 0:51

MarvinLeRouge a écrit:Comment ça valable seulement pour des distances courtes ? 8O C'est la formule de calcul de la distance du point A au point B dans le plan, et l'ordre de grandeur n'a rien à voir là dedans, pas plus que l'unité employée. A moins que tu ne tiennes compte de la non-planitude de la surface terrestre, mais là il n'est plus question du même argument. :?

Oui, je crois que c'est cela dont il s'agit...la terre n'est pas un plan, donc sur de grosses distances ce genre de calcul doit être très approximatif, je suppose.


Blini
WRInaute passionné
WRInaute passionné
 
Messages: 506
Inscription: Lun Nov 29, 2004 8:59

Message le Lun Jan 24, 2005 9:37

MarvinLeRouge a écrit:Comment ça valable seulement pour des distances courtes ? 8O C'est la formule de calcul de la distance du point A au point B dans le plan, et l'ordre de grandeur n'a rien à voir là dedans, pas plus que l'unité employée. A moins que tu ne tiennes compte de la non-planitude de la surface terrestre, mais là il n'est plus question du même argument. :?


Oui, la formule, c'est pour le plan. Mais pour les cartes terrestres, deux cas: ou bien tu représentes basiquement les coordonnées sur les axes (degrés-minutes-secondes), et là, pas possible de calculer des distances, ou bien tu as une carte métrique, ce qui suppose que tu as fait une projection. La projection habituelle pour la France est le Lambert IIe (avec des variantes possibles: projections différentes sur 4 parties de la France). Le Lambert IIe, c'est une projection de l'ellipsoïde terrestre sur un cône sécant en deux parallèles de l'ellipsoïde. Je vais peut-être pas rentrer dans les détails, mais grosso modo, plus tu t'éloignes du centre de projection, plus l'erreur est importante. Donc, oui, les calculs de distances par la formule donnée ne sont valables que pour des distances assez courtes.

Script Php de calcul de distances

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 Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • 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