Maison  >  Article  >  base de données  >  Comment interroger une base de données pour obtenir des résultats chevauchant plusieurs marqueurs circulaires avec des rayons spécifiés ?

Comment interroger une base de données pour obtenir des résultats chevauchant plusieurs marqueurs circulaires avec des rayons spécifiés ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-31 03:04:31446parcourir

How to Query a Database for Results Overlapping Multiple Circular Markers with Specified Radii?

Interrogation de la base de données pour les résultats dans les chevauchements de rayon

Problème :

Dans une base de données avec données, vous souhaitez sélectionner des résultats qui chevauchent partiellement plusieurs marqueurs circulaires avec des rayons spécifiés. Une requête SQL existante n'identifie pas avec précision les résultats qui chevauchent plusieurs marqueurs.

Solution :

Pour des résultats précis, l'instruction SQL suivante peut être utilisée :

<code class="sql">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*cos(A.latitude), 2)) <= 4</code>

Explication :

Cette requête utilise l'équation d'un cercle pour déterminer si un point donné (de l'utilisateur A) se situe dans le rayon d'un cercle (défini par la latitude et longitude d'un rayon de l'utilisateur B). Les étapes suivantes sont impliquées :

  1. Convertir la latitude et la longitude en kilomètres : Multipliez les différences de latitude et de longitude par 111,12 pour convertir en kilomètres.
  2. Calculer distance en utilisant l'équation du cercle : Calculez la distance entre le point et le centre du rayon en utilisant la formule modifiée POW((A.latitude-B.latitude)*111.12, 2) POW((A.longitude - B. longitude)*111.12*cos(A.latitude), 2).
  3. Comparez la distance au rayon : Si la distance calculée est inférieure ou égale au rayon carré, le point se situe dans le rayon.

En utilisant cette requête, vous pouvez identifier avec précision les résultats qui chevauchent plusieurs marqueurs circulaires, même si les cercles se touchent.

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!

Déclaration:
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