inwebo
Messages postés380Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention23 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.
mpmp93
Messages postés6652Date d'inscriptionmercredi 13 avril 2011StatutMembreDernière intervention28 septembre 20154 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és18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024654 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és380Date d'inscriptionlundi 12 novembre 2007StatutMembreDernière intervention23 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 ?
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.
14 oct. 2014 à 10:29
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
@+
13 oct. 2014 à 08:00
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+
13 oct. 2014 à 07:02
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.
12 oct. 2014 à 19:27
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 ?
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
1 oct. 2014 à 14:23
1 oct. 2014 à 14:02
il faut préciser que l'algorithme de la distance sphérique est une approximation très approximatives.