Optimisation des calculs de distance de latitude/longitude dans SQL Server
Cet article explore des méthodes améliorées pour calculer les distances entre les points de latitude/longitude, en répondant aux problèmes de précision des approches traditionnelles.
Limitations des méthodes existantes
Les calculs de distance actuels reposent souvent sur la formule Haversine, qui, bien que fonctionnelle, peut souffrir de limitations de précision.
Exploiter le type de données géographiques de SQL Server
Introduit dans SQL Server 2008, le type de données geography
offre une solution supérieure. Ce type de données spécialisé est optimisé pour les données géographiques et les calculs, offrant des avantages significatifs :
geography
utilise des algorithmes raffinés, ce qui permet des calculs de distance plus précis.STDistance
compare directement deux geography
instances, éliminant le besoin de formules complexes comme la formule Haversine.Exemple illustratif utilisant geography
Ce qui suit montre le calcul de la distance entre Londres et Édimbourg en utilisant le geography
type de données :
<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)' DECLARE @target geography = 'POINT(-3 56)' SELECT @source.STDistance(@target)</code>
Cela donne une distance d'environ 538 kilomètres.
Intégration geography
avec les structures de données existantes
Maintenir votre structure de données actuelle est possible tout en bénéficiant de la précision de STDistance
. Construisez des geography
instances à partir de vos champs de latitude et de longitude existants :
<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>
En utilisant le type de données geography
et la méthode STDistance
, vous obtenez à la fois une précision améliorée et un code rationalisé pour les calculs de distance géographique.
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!