Calcul des coordonnées GPS dans un rayon de x km
8 messages
• Page 1 sur 1
- toutoune60
- Nouveau WRInaute

- Messages: 5
- Inscription: 14 Juil 2005
Calcul des coordonnées GPS dans un rayon de x km
Bonjour à tous,
Je géolocalise des données d'un site selon le code postal du lieu où elles se trouvent.
J'ai en parallèle une table avec les villes corrspondantes ainsi que leurs coordonnées GPS...
Je voudrais pouvoir effectuer une recherche sur ces données en spécifiant un code postal ainsi qu'un rayon.
Je pense que pour simplifier et pour pouvoir le faire d'une requête SQL, il faudra que je restreigne en fait au carré donc le cercle est inscrit dedans (lattitudes et longitudes comprises entre 2 bornes).
Mon problème c'est pour trouver ces valeurs de bornes!
J'ai bien le calcul suivant qui me donne la distance entre 2 points. Mais moi j'ai un point et un rayon et je ne m'en sors pas...
avec
d distance entre les 2 points
R rayon de la Terre
x1 lattitude en radians du 1er point
x1 lattitude en radians du 2eme point
y1 longitude en radians du 1er point
y1 longitude en radians du 2eme point
Je géolocalise des données d'un site selon le code postal du lieu où elles se trouvent.
J'ai en parallèle une table avec les villes corrspondantes ainsi que leurs coordonnées GPS...
Je voudrais pouvoir effectuer une recherche sur ces données en spécifiant un code postal ainsi qu'un rayon.
Je pense que pour simplifier et pour pouvoir le faire d'une requête SQL, il faudra que je restreigne en fait au carré donc le cercle est inscrit dedans (lattitudes et longitudes comprises entre 2 bornes).
Mon problème c'est pour trouver ces valeurs de bornes!
J'ai bien le calcul suivant qui me donne la distance entre 2 points. Mais moi j'ai un point et un rayon et je ne m'en sors pas...
- Code: Tout sélectionner
d = R * (pi/2 - asin ( sin x1 * sin x2 + cos ( y1 - y2 ) * cos x1 * cos x2 ))
avec
d distance entre les 2 points
R rayon de la Terre
x1 lattitude en radians du 1er point
x1 lattitude en radians du 2eme point
y1 longitude en radians du 1er point
y1 longitude en radians du 2eme point
- jeroen
- WRInaute passionné

- Messages: 2461
- Inscription: 30 Aoû 2002
Latitude : 1°=+-111 km
Longitude, ça dépend de la latitude :
à nice 1°=+-82 km
à Lille 1°=+-71 km
Tu peux prendre 76 km de moyenne pour la france, ce sera plus simple
et donc, pour un carré de coté 2d centré sur ton point, il faudra chercher les LAT et LONG telles que :
LATpt - d/111 < LAT < LATpt + d/111
LONGpt - d/76 < LONG < LONGpt + d/76
avec :
d distance en km
LATpt, LONGpt coordonnées de ton point en décimal.
J'ai mis en place ça pas plus tard que la semaine dernière. ici : http://www.vttour.fr/topos/recherche.php (avec une intégration qui peut te donner des idées)
a+
Longitude, ça dépend de la latitude :
à nice 1°=+-82 km
à Lille 1°=+-71 km
Tu peux prendre 76 km de moyenne pour la france, ce sera plus simple
et donc, pour un carré de coté 2d centré sur ton point, il faudra chercher les LAT et LONG telles que :
LATpt - d/111 < LAT < LATpt + d/111
LONGpt - d/76 < LONG < LONGpt + d/76
avec :
d distance en km
LATpt, LONGpt coordonnées de ton point en décimal.
J'ai mis en place ça pas plus tard que la semaine dernière. ici : http://www.vttour.fr/topos/recherche.php (avec une intégration qui peut te donner des idées)
a+
- toutoune60
- Nouveau WRInaute

- Messages: 5
- Inscription: 14 Juil 2005
Super, donc j'en déduis que la solution du carré 2D centré sur le point est le plus simple d'un point de vue requêtage SQL?
Sinon tu connais la formule permettant de calculer à quoi correspond 1° de longitude à un point donné de manière précise?
Sinon tu connais la formule permettant de calculer à quoi correspond 1° de longitude à un point donné de manière précise?
- jeroen
- WRInaute passionné

- Messages: 2461
- Inscription: 30 Aoû 2002
D'un point de vue SQL, beaucoup plus simple de faire un carré, et ça consomme beaucoup moins de ressources.
latitude: circonférence de la terre=40000 km=360° d'angle > 1°=111 km
Longitude :
1° : 111km à l'équateur et 0km au pôle avec une rep sinusoidale
distance_longitude=111*cos(LAT)
avec
distance_longitude en km
LAT en radians

latitude: circonférence de la terre=40000 km=360° d'angle > 1°=111 km
Longitude :
1° : 111km à l'équateur et 0km au pôle avec une rep sinusoidale
distance_longitude=111*cos(LAT)
avec
distance_longitude en km
LAT en radians
- toutoune60
- Nouveau WRInaute

- Messages: 5
- Inscription: 14 Juil 2005
Merci beaucoup! Je l'ai mis en place, avec à chaque fois calcul du pas de la longitude en fonction du point central. Ca marche impecc'! Merci 
- anounou
- Nouveau WRInaute

- Messages: 2
- Inscription: 12 Juin 2007
Bonjour,
Je me sers actuellement de vos explications, mais je rencontre un problème au niveau de ma requete sql et je voulais savoir comment vous procédiez pour vos requetes.
Voilà comment j'écris ma requete :
Cette requete fonctionne parfaitement :
select * from `spip_communes` where (`lat` between 46.9 and 47.1) and (`long` between 0.47 and 0.49)
Alors que la suivante ne fonctionne pas du tout (lorsque je dis ne fonctionne pas, elle ne me propose aucun résultat alors qu'il devrait proposé quelques réponses) :
select * from `spip_communes` where (`lat` between 46.9 and 47.1) and (`long` between -0.47 and -0.49)
Je crois que le soucis provient des valeurs négative qui se trouve dans la requete. Pouvez vous m'aider s'il vous plait!
Merci d'avance pour votre réponse.
Je me sers actuellement de vos explications, mais je rencontre un problème au niveau de ma requete sql et je voulais savoir comment vous procédiez pour vos requetes.
Voilà comment j'écris ma requete :
Cette requete fonctionne parfaitement :
select * from `spip_communes` where (`lat` between 46.9 and 47.1) and (`long` between 0.47 and 0.49)
Alors que la suivante ne fonctionne pas du tout (lorsque je dis ne fonctionne pas, elle ne me propose aucun résultat alors qu'il devrait proposé quelques réponses) :
select * from `spip_communes` where (`lat` between 46.9 and 47.1) and (`long` between -0.47 and -0.49)
Je crois que le soucis provient des valeurs négative qui se trouve dans la requete. Pouvez vous m'aider s'il vous plait!
Merci d'avance pour votre réponse.
- anounou
- Nouveau WRInaute

- Messages: 2
- Inscription: 12 Juin 2007
jeroen a écrit:essaie peut être
1/ de mettre des quote pour les valeurs : '-0.47'
2/ d'inverser les valeurs, car en négatif le plus 'petit' c'est 0.49 : between -0.49 and -0.47
Merci d'avoir répondu rapidement, il s'agit de la deuxième solution.
C'était tout simple
Merci pour le conseil
8 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Coordonnées GPS /départements
- Coordonnées GPS des communes
- BDD Coordonnées GPS Ville + Eloignement
- Transmettre coordonnées de Google Map à un navigateur GPS
- Google Map : Marqueur déplaçable et récupération coordonnées GPS dans MySQL
- Rayon asp dot Net...
- Système de recherche par code postal + rayon de x kms
- Afficher sur 1 carte les résultats situés dans 1 rayon de x km par rapport à 1 adresse
- gps-carminat.com
- tracé de trajectoire GPS
Consultez la description détaillée des produits ou services de Google suivants : Google Latitude
- Calcul du taux de backlinks vers pages internes
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. - Calcul de l'indice de cooccurrence
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 1 invité
