Classe GPS - calcul distance

mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 1 oct. 2014 à 13:56
inwebo Messages postés 380 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 23 octobre 2014 - 14 oct. 2014 à 10:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/100762-classe-gps-calcul-distance

inwebo Messages postés 380 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 23 octobre 2014
14 oct. 2014 à 10:29
Bonjour,

J'entends bien ce que vous me dites. Ce n'était pas l'objet de mon message. Je donnais juste des conseils pour faire des objets un peu moins bâtards et de bonne pratique de conception d'objet PHP5.

PSR

@+
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 4
13 oct. 2014 à 08:00
Bonjour,

Le but de cette classe - qui sera complétée par d'autres méthodes - c'est avant tout déterminer la distance entre deux points. Je m'en sers personnellement ici:
http://www.camping-car.org/aires/autour-de-vous

Je récupère la localisation de l'utilisateur, puis en SQL je cherche toutes les aires dans une zone comprise en lon et lat +/- un décalage arbitraire qyui permet d'isoler les fiches qui m'intéressent.

Ensuite, fiche par fiche, je calcule la distance de ces sites par rapport au point de référence (position de l'utilisateur). J'effectue un tri et je restitue la liste des sites par distance croissante.

Par exemple, pour ma position, j'ai une aire à RENNES LE CHATEAU à 20 Km de ma position. Si je fais calculer par Google Maps un trajet routier, en réalité, j'ai 52 Km de route. J'indique bien que c'est la distance en ligne droite approximative.

A+
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
13 oct. 2014 à 07:02
Bonjour, comme je l'ai mis plus haut c'est une très vague approximation. La terre est loin d'être une sphère.
Pour améliorer cette approximation on peut calculer une sphère qui localement colle à peu près à la réalité. De cas le rayon de la terre dépend du système de référence choisi (RGF93, WGS 84, etc...) et du point de départ. L'approximation par sphère locale donne un résultat centimétrique jusqu'à 50 km environ, au delà l'incertitude augmente rapidement.
Je vous invite à consulter les site de l'IGN, mots clés géodésie, distance suivant la courbue, approximation sphérique.
inwebo Messages postés 380 Date d'inscription lundi 12 novembre 2007 Statut Membre Dernière intervention 23 octobre 2014
12 oct. 2014 à 19:27
Bonjour,

C'est un bon début de classe métier, elle fait des choses simples mais elle le fait bien. C'est l'occasion pour faire des objets plus objets pour du PHP5 (qui a 10 ans ne l'oublions pas). J'entends par là de bien séparé les différents métiers que cette classe fait. Par exemple est-ce vraiment à la méthode distance de la classe GPS de changer les unités des points ?


$rlo1 = deg2rad($lng1);
$rla1 = deg2rad($lat1);
$rlo2 = deg2rad($lng2);
$rla2 = deg2rad($lat2);


Je pense que non. Le membre de la classe $earth_radius est-il amené à changer ? Non plus.

Je vous propose de séparer cette classe en deux objets.

* Un objet Point, avec un constructeur prenant deux flottants en paramétre et une méthode public toRad() qui retourne la valeur du flottant en radiant.
* Un objet GPS, avec un constructeur prenant deux objets Point en entrée.

De passer $earth_radius en constante de classe.


Cela ne change pas fondamentalement les choses mais c'est une approche plus objets, je trouve que c'est également un bon exercice.

- Constantes de classe
- POO PHP5
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 4
1 oct. 2014 à 14:23
Oui, j'ai oublié de préciser, c'est la distance à vol d'oiseau, point à point.
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
1 oct. 2014 à 14:02
Bonjour,
il faut préciser que l'algorithme de la distance sphérique est une approximation très approximatives.
Rejoignez-nous