Maison > développement back-end > tutoriel php > Comment puis-je calculer la distance orthodromique en utilisant uniquement MySQL ?

Comment puis-je calculer la distance orthodromique en utilisant uniquement MySQL ?

Susan Sarandon
Libérer: 2024-12-26 14:18:11
original
561 Les gens l'ont consulté

How Can I Calculate Great Circle Distance Using Only MySQL?

Distance orthodromique MySQL (formule Haversine)

Cet article aborde le défi du calcul de la distance orthodromique entre deux coordonnées géographiques en utilisant uniquement MySQL . L'implémentation PHP traditionnelle, impliquant plusieurs requêtes SQL et calculs complexes, peut être lourde.

Solution

Pour convertir le code PHP en MySQL pur, nous exploitons la formule Haversine , une équation mathématique qui calcule la distance entre deux points sur une sphère. Cette formule est supportée par les fonctions MySQL ACOS() et RADIANS().

Voici la requête MySQL correspondante :

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
Copier après la connexion

Explication

  • La requête sélectionne l'identifiant et la distance calculée à partir de la table des marqueurs.
  • La fonction ACOS() calcule le angle entre les deux points, qui est ensuite multiplié par 3959 (rayon de la Terre en miles ou 6371 pour les kilomètres).
  • La fonction RADIANS() convertit les coordonnées en radians.
  • L'HAVING La clause filtre les résultats dont la distance est inférieure à 25 miles (ou kilomètres).
  • La clause ORDER BY trie les résultats par distance. par ordre croissant.
  • La clause LIMIT limite le nombre de résultats à 20.

En utilisant cette approche basée sur MySQL, vous pouvez calculer efficacement la distance orthodromique entre les coordonnées sans le besoin de calculs PHP externes ou de requêtes SQL 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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal