25-11-2008, 11:38 AM
Hum Mathématiquement la formule d'un cercle est :
Y² = X²
Sous SQL il faut faire une fonction qui calcul la distance X et Y en fonction de l'altitude et de la longitude. Ca serait pas si complexe si on considérait la terre sur un espace plat ... le problème vient du rayon de courbure induit par la rondité de la terre ;-). Si tu cherches à faire un calcul exact, il faut que tu passe des paramètres tels que le rayon de la terre, l'aplatissement des pôles ...
Si tu te cantonne à la France, tout petit pays par rapport au monde, tu peux aussi supposer qu'à quelques détails près, la terre est plate. Dans ce cas les calculs gagnent en simplification (et le résultat resteront cohérents car l'angle que ferait 20km par rapport aux 40 000 kms de circonférences est vraiment insignifiant).
où $Const = (2 pi() * 40 000 ) / 360
D'un autre côté, j'ai pas testé car je n'ai pas d'environnement de tests sous la main.
Bon courage ^^ !
Kéké
Y² = X²
Sous SQL il faut faire une fonction qui calcul la distance X et Y en fonction de l'altitude et de la longitude. Ca serait pas si complexe si on considérait la terre sur un espace plat ... le problème vient du rayon de courbure induit par la rondité de la terre ;-). Si tu cherches à faire un calcul exact, il faut que tu passe des paramètres tels que le rayon de la terre, l'aplatissement des pôles ...
Si tu te cantonne à la France, tout petit pays par rapport au monde, tu peux aussi supposer qu'à quelques détails près, la terre est plate. Dans ce cas les calculs gagnent en simplification (et le résultat resteront cohérents car l'angle que ferait 20km par rapport aux 40 000 kms de circonférences est vraiment insignifiant).
Code :
SELECT code_postal from Tatable where (SQUARE ( (Latitude - $lat_ville_ref) * $Const ) + SQUARE ( (Longitude - $long_ville_ref ) * $Const ) ) < 400
D'un autre côté, j'ai pas testé car je n'ai pas d'environnement de tests sous la main.
Bon courage ^^ !
Kéké