Maison >base de données >tutoriel mysql >Comment puis-je calculer la distance entre deux points de latitude/longitude dans SQL Server ?

Comment puis-je calculer la distance entre deux points de latitude/longitude dans SQL Server ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-12 13:02:43196parcourir

How Can I Calculate the Distance Between Two Latitude/Longitude Points in SQL Server?

Exploiter le type de données géographiques de SQL Server pour les calculs de distance

La détermination de la distance entre deux points spécifiés par la latitude et la longitude nécessite une approche spécialisée. SQL Server, à partir de la version 2008, propose le geography type de données, un outil puissant pour gérer et analyser les informations géographiques.

La méthode geography::Point construit un objet geography pour chaque point, en utilisant le SRID 4326, qui correspond au WGS84 (World Geodetic System 1984). Une fois ces objets créés, la méthode STDistance calcule efficacement la distance :

<code class="language-sql">DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);

SELECT *,
       @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) AS distance
--INTO #includeDistances
FROM #orig dest</code>

Cela donne une distance précise en mètres. Par exemple, étant donné des exemples de données :

<code>Latitude        Longitude     Distance 
53.429108       -2.500953     85.2981833133896</code>

La distance calculée sera d'environ 85,3 mètres, fournissant un résultat considérablement plus précis que les méthodes plus simples. Le type de données geography est ainsi une solution robuste et efficace pour les applications géospatiales dans SQL Server, simplifiant les calculs complexes tout en améliorant la précision.

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:
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