Maison >base de données >tutoriel mysql >Comment trouver des bâtiments dans un rayon de 5 milles à l'aide de coordonnées ?
Localisation des bâtiments dans un rayon de 5 miles via les coordonnées
Ce guide explique comment récupérer efficacement tous les bâtiments dans un rayon de 5 miles de coordonnées données.
Étape 1 : optimiser le stockage des données
Stockez les données de localisation des bâtiments à l'aide d'un type de données géométriques ou géographiques. Cela améliore considérablement les performances des requêtes spatiales et évite les problèmes de conversion de type de données.
Étape 2 : Utiliser ST_DWithin ou ST_Distance
Deux fonctions facilitent les calculs de distance :
ST_DWithin : Cette fonction détermine efficacement si les géométries se situent dans une distance spécifiée. Pour trouver des bâtiments à moins de 5 miles de (-4.6314, 54.0887) :
<code class="language-sql">SELECT name, longitude, latitude FROM building WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72); -- 8046.72 meters = 5 miles</code>
ST_Distance : Cette fonction calcule la distance en mètres. Convertissez des mètres en miles en utilisant : distance * 0.000621371
. Pour les bâtiments à moins de 5 miles de (-4.6314, 54.0887) :
<code class="language-sql">SELECT name, longitude, latitude, ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles FROM building WHERE distance_miles <= 5;</code>
Étape 3 : Considérations clés
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!