Lion1906

Accueil Recherche Infos Utile Divers
Version francaise English version
Liste des sujets
 Discussion Principale
 Sujet : Calcul de proximite - orthodromie - quelqu'un peut... (par Jdalga le 29/11/2006 à 16:07) Répondre 
Message :
Je sais que ce sujet a déja ete debattu, mais j'ai lu les differents posts et malgrès tout je n'y arrive pas.
Quelqu'un pourrait-il m'aider SVP ?
Voici la formule que utilisée:

$Lat= exprimée en degre decimal
$LatA = deg2rad($Lat);

$Long=exprimée en degre decimal
$LongA = deg2rad($Long);

$distance= (si j'ai bien compris en KM);

$minLatitude = $Lat-($distance/6366);
$maxLatitude = $Lat+($distance/6366);
$minLongitude = $Long-($distance/6366/cos($minLatitude));
$maxLongitude = $Long+($distance/6366/cos($maxLatitude));


Requete SQL =SELECT post_id, latitude, longitude, (6366*acos(cos($LatA)*cos(radians(latitude) )*cos(radians(longitude)-$LongA)+sin($LatA) *sin(radians(latitude)))) AS Proximite FROM geocode
WHERE latitude > ".$minLatitude."
AND latitude < ".$maxLatitude."
AND longitude > ".$minLongitude."
AND longitude <".$maxLongitude."
ORDER BY Proximite DESC";

Les colonnes latitude et longitude de ma table geocode sont en degres decimaux.

Cette requete me sort des resultats parfois aberrants :

exemple :

Si $distance = 100 (km ????)
#353, (45.45, 6.983333), 26.25km
#343, (45.396587, 6.566374), 6.89km
#370, (45.396587, 6.566374), 6.89km
#324, (45.396587, 6.566374), 6.89km
#311, (45.396587, 6.566374), 6.89km
#397, (45.396587, 6.566374), 6.89km
#340, (45.416667, 6.65), 0km
#339, (45.416667, 6.65), 0km

Si distance = 50 (km ??? )
340, (45.416667, 6.65), 0km
339, (45.416667, 6.65), 0km

Si distance=1000 (km ???)
0 résultats

Merci
 Sujet : Calcul de proximite - orthodromie - quel... (par noby le 25/01/2007 à 14:34) Répondre 
Message :
"Les colonnes latitude et longitude de ma table geocode sont en degres decimaux."

C'est là le problème, il faut des champs en radians...
Noby.
 Sujet : Calcul de proximite - orthodromie - quel... (par Jdalga le 25/01/2007 à 19:04) Répondre 
Message :
Merci beaucoup,

J'ai créé deux champ dans ma table et transformze mes latitude et longitude en radian. J'ai transforme ma requete de la maniere ci-dessous. Ca marche OK (selectionne bien les id dans le rayon voulu),
mais petit probleme avec la valeur de Proximite -> qui me sort des valeurs aberrantes (10654)et semble t'il toujours identiques. J'ai du encore faire une petouille quelquepart

$sql = "SELECT post_id, latitude,lat_rad, longitude,long_rad, (6366*acos(cos($LatA)*cos(radians(lat_rad) )*cos(radians(long_rad)-$LongA)+sin($LatA) *sin(radians(lat_rad)))) AS Proximite FROM geocode
WHERE lat_rad > ".$minLatitude."
AND lat_rad < ".$maxLatitude."
AND long_rad > ".$minLongitude."
AND long_rad <".$maxLongitude."
ORDER BY Proximite ASC";






















Accueil : Présentation | Actualités | Anciens sites | Forum | Plan du site | Mises à jour
Recherche : Localisation | Orthodromie | Proximité | Codes postaux | Codes INSEE | Carte interactive
Infos : Glossaire | Orthodromie - Cap | Départements et Villes | Le site | FAQ, Aide & possibilités | Articles
Utile : Conversion - Cap | Liens | Outils | Téléchargements
Divers : Webmaster | Livre d'or | Contact | Free