Maison > base de données > tutoriel mysql > Comment trouver des bâtiments dans un rayon de 5 milles à l'aide de coordonnées ?

Comment trouver des bâtiments dans un rayon de 5 milles à l'aide de coordonnées ?

DDD
Libérer: 2025-01-09 11:37:43
original
803 Les gens l'ont consulté

How to Find Buildings Within a 5-Mile Radius Using Coordinates?

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 :

  1. 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) :

    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
    Copier après la connexion
  2. 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) :

    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;
    Copier après la connexion

Étape 3 : Considérations clés

  • Maintenir l'ordre correct dans ST_MakePoint : longitude, latitude.
  • Les calculs ST_Distance contournent les index spatiaux. Utilisez-le dans la clause SELECT pour éviter les goulots d'étranglement des performances.
  • Amazon Athena utilise les degrés pour les calculs de distance dans ST_Distance.

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!

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