Maison > Article > base de données > Comment récupérer des résultats dans un rayon de marqueur à partir d'une base de données : une approche SQL pour un calcul précis de la distance
Comment récupérer des résultats dans les rayons de marqueurs à partir d'une base de données : calcul précis de la distance
Pour déterminer avec précision les résultats qui se situent dans les rayons de marqueurs spécifiés à partir de une base de données, il est crucial de considérer l'équation d'un cercle :
(x-x1)^2 + (y - y1)^2 = r^2
où (x,y) représente un point dans le cercle, (x1, y1) est le centre du cercle et r est son rayon .
Dans le contexte de cette question, le centre du cercle est l'emplacement du marqueur de l'utilisateur (latitude et longitude), tandis que les correspondances ou résultats potentiels sont représentés par des points à l'intérieur du cercle. Le rayon est fixé à 1 kilomètre.
Pour résoudre le problème des différentes unités (degrés pour la latitude et la longitude par rapport aux kilomètres pour le rayon), l'équation est modifiée comme suit :
((x-x1)*111.12)^2 + ((y-y1)*111.12)^2 = 4 (where 2 is the radius in kilometers and 111.12 represents the conversion factor from degrees to kilometers)
Sur la base de cette équation, l'instruction SQL permettant de récupérer les résultats qui croisent les cercles marqueurs peut s'écrire :
SELECT A.user_id, A.radius_id, A.latitude, A.logitude FROM UserA AS A, (SELECT user_id, latitude, longitude FROM UserB WHERE user_id = 8) AS B WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12, 2)) <= 4
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!