Maison > base de données > tutoriel mysql > Comment puis-je trouver efficacement des points dans un cercle à l'aide des extensions spatiales MySQL ?

Comment puis-je trouver efficacement des points dans un cercle à l'aide des extensions spatiales MySQL ?

DDD
Libérer: 2025-01-06 12:11:40
original
871 Les gens l'ont consulté

How Can I Efficiently Find Points Within a Circle Using MySQL Spatial Extensions?

Recherche de points dans un cercle à l'aide des extensions spatiales MySQL

Dans un scénario où l'emplacement de l'utilisateur est déterminé par la latitude et la longitude, une tâche courante est pour récupérer les drapeaux à proximité dans un certain rayon. Grâce aux extensions spatiales de MySQL, il est possible d'effectuer des requêtes de proximité sur des données géospatiales.

Fonctions spatiales pour les requêtes circulaires

Alors que MySQL manquait initialement de fonctions spatiales pour les calculs de distance de latitude/longitude , la version de MySQL 5.7 a introduit la prise en charge géospatiale pour de tels calculs. Pour les requêtes de proximité circulaire, la fonction ST_Distance_Sphere peut être utilisée.

SELECT * FROM flags
WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(latpoint longpoint)')) < 100;
Copier après la connexion

Dans cette requête, les coordonnées représentent la colonne contenant les points géospatiaux, tandis que le point lat et le point long sont les valeurs de latitude et de longitude de l'emplacement de l'utilisateur. Le rayon du cercle est spécifié en mètres.

Approches alternatives

Avant MySQL 5.7, les utilisateurs pouvaient utiliser des approches alternatives :

  • Formule Haversine : Cette formule calcule la distance orthodromique entre deux points sur une sphère. Il peut être implémenté à l'aide de fonctions SQL telles que ACOS et SIN.
  • Bounding Rectangle : en créant un rectangle englobant entourant le cercle de l'utilisateur, les points à l'intérieur du rectangle peuvent être identifiés à l'aide de la fonction MBRContains. Cette approche a des limites car elle peut inclure des points en dehors du cercle réel.

Exemple d'utilisation

En supposant une table de « drapeaux » avec des « coordonnées » comme élément géométrique colonne de points, la requête suivante récupère tous les drapeaux à moins de 100 m du point de vue d'un utilisateur. location :

SELECT * FROM flags
WHERE ST_Distance_Sphere(coordinates, ST_GeomFromText('POINT(42.81 -70.81)')) < 100;
Copier après la connexion

Conclusion

Les extensions spatiales de MySQL fournissent des outils puissants pour des requêtes de proximité efficaces sur les données géospatiales, y compris la possibilité de trouver des points dans un cercle en fonction de la latitude et positions de longitude.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal