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;
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 :
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;
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!