J'essaie de calculer la distance entre deux positions sur une carte. J'ai stocké dans mes données : Longitude, Latitude, X POS, Y POS.
J'ai déjà utilisé le code ci-dessous.
DECLARE @orig_lat DECIMAL
DECLARE @orig_lng DECIMAL
SET @orig_lat=53.381538 set @orig_lng=-1.463526
SELECT *,
3956 * 2 * ASIN(
SQRT( POWER(SIN((@orig_lat - abs(dest.Latitude)) * pi()/180 / 2), 2)
+ COS(@orig_lng * pi()/180 ) * COS(abs(dest.Latitude) * pi()/180)
* POWER(SIN((@orig_lng - dest.Longitude) * pi()/180 / 2), 2) ))
AS distance
--INTO #includeDistances
FROM #orig dest
Je ne fais cependant pas confiance aux données qui en découlent, elles semblent donner des résultats légèrement inexacts.
Quelques exemples de données au cas où vous en auriez besoin
Latitude Longitude Distance
53.429108 -2.500953 85.2981833133896
Quelqu'un pourrait-il m'aider avec mon code ? Cela ne me dérange pas si vous voulez corriger ce que j'ai déjà, mais si vous avez une nouvelle façon de le faire, ce serait génial.
Veuillez indiquer dans quelle unité de mesure vos résultats sont exprimés.