Calcul précis de la distance entre deux points géographiques dans SQL Server
SQL Server nécessite souvent de calculer les distances entre les coordonnées de latitude et de longitude. Bien que la formule Haversine soit courante, ses limites en matière de précision nécessitent une solution plus robuste.
Exploiter le geography
Type de données
SQL Server 2008 et versions ultérieures offrent le type de données geography
, idéal pour une gestion efficace et précise des données spatiales, y compris les calculs de distance. Le code suivant démontre son utilisation :
<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)'; DECLARE @target geography = 'POINT(-3 56)'; SELECT @source.STDistance(@target);</code>
Cela renvoie la distance (en kilomètres) entre les deux points. Par exemple, ce qui précède retournera environ 538 km. Les méthodes spatiales étendues du type geography
en font l'approche recommandée pour les données géographiques dans SQL Server.
Intégration avec les structures de données existantes
Maintenir votre structure de données actuelle est possible tout en bénéficiant de la méthode STDistance
. Convertissez vos valeurs de latitude et de longitude en geography
instances :
<code class="language-sql">DECLARE @orig_lat DECIMAL(12, 9); DECLARE @orig_lng DECIMAL(12, 9); SET @orig_lat = 53.381538; SET @orig_lng = -1.463526; DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326); SELECT *, @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) AS distance FROM #orig dest;</code>
Cette approche garantit des calculs de distance précis sans restructuration majeure des données.
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!