Localisation de points dans un cercle à l'aide des extensions spatiales MySQL
Arrière-plan
Les extensions spatiales MySQL permettent les utilisateurs pour manipuler et analyser les données spatiales stockées dans les bases de données MySQL. Une tâche courante consiste à identifier les points situés dans un cercle donné. Ce scénario est souvent rencontré dans des applications telles que les services de localisation et l'analyse géospatiale.
Utilisation des fonctions de distance MySQL pour les latitudes et les longitudes
Informations obsolètes :
La question indiquait initialement que les extensions spatiales MySQL ne prenaient pas en charge les calculs de distance de latitude et de longitude. Cependant, ces informations sont obsolètes. Depuis MySQL 5.7, les extensions spatiales prennent en charge les calculs de distance euclidienne entre les points définis à l'aide des coordonnées de latitude et de longitude.
Exemple d'implémentation
Pour sélectionner des points dans un cercle à l'aide de MySQL spatial extensions, vous pouvez utiliser la fonction ST_Distance(). Cette fonction calcule la distance entre deux points en mètres. En créant un cercle virtuel autour de l'emplacement de l'utilisateur avec un rayon de 100 mètres et en vérifiant si la distance entre les coordonnées des « drapeaux » et le centre du cercle se situe dans ce rayon, vous pouvez filtrer les points à l'intérieur du cercle.
Voici un exemple de requête :
SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters FROM flags HAVING distance_in_meters <= 100 ORDER BY distance_in_meters ASC;
Cette requête récupère tous les « drapeaux » dans un cercle de rayon de 100 mètres, classés en fonction de leur proximité. à l'emplacement de l'utilisateur.
Remarques supplémentaires :
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!