Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-01 05:40:02
original
324 Les gens l'ont consulté

How to Retrieve Results Within a Marker Radius from a Database: A SQL Approach to Accurate Distance Calculation

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
Copier après la connexion

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)
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal