Extensions spatiales MySQL : sélection de points dans un cercle en fonction de la latitude/longitude
Arrière-plan :
MySQL peut stocker des données géospatiales à l'aide de ses extensions spatiales. Cela permet une interrogation et une manipulation efficaces des objets spatiaux, notamment des points, des lignes et des polygones. Une tâche courante consiste à sélectionner des points dans un rayon spécifié à partir d'un emplacement donné.
Utilisation des extensions géospatiales :
Pour effectuer cette tâche, MySQL fournit plusieurs fonctions géospatiales, notamment Buffer (), qui crée une zone tampon autour d'un point ou d'une ligne. Cependant, il est important de noter que MySQL ne prend pas nativement en charge les calculs de proximité basés sur la latitude et la longitude.
Approche alternative :
Pour déterminer des points dans un cercle en fonction de latitude et longitude, une approche différente est nécessaire. La formule de la distance du grand cercle peut être utilisée pour calculer la distance entre deux points à la surface de la Terre. Cela peut être incorporé dans une requête MySQL pour filtrer les points dans un rayon spécifié.
Exemple de requête :
La requête suivante montre comment utiliser la formule de distance orthodromique pour sélectionnez des drapeaux dans un rayon de 100 mètres d'une latitude et d'une longitude données :
SELECT id, coordinates, name, r, units * DEGREES(ACOS(LEAST(1.0, COS(RADIANS(latpoint)) * COS(RADIANS(latitude)) * COS(RADIANS(longpoint) - RADIANS(longitude)) + SIN(RADIANS(latpoint)) * SIN(RADIANS(latitude))))) AS distance FROM flags JOIN ( SELECT 42.81 AS latpoint, -70.81 AS longpoint, 10.0 AS r, 69.0 AS units ) AS p ON (1=1) WHERE MbrContains(GeomFromText ( CONCAT('LINESTRING(', latpoint-(r/units),' ', longpoint-(r /(units* COS(RADIANS(latpoint)))), ',', latpoint+(r/units) ,' ', longpoint+(r /(units * COS(RADIANS(latpoint)))), ')')), coordinates)
Dans cette requête, les paramètres latpoint et longpoint représentent le l'emplacement de l'utilisateur. Les paramètres r et unités spécifient le rayon (en mètres) et les unités de distance par degré de latitude.
Considérations supplémentaires :
En suivant cette approche, vous pouvez sélectionner efficacement des points dans un cercle en fonction de la latitude et de la longitude, vous permettant ainsi de créer des applications basées sur la localisation à l'aide de l'outil spatial MySQL. extensions.
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!