Sto provando a calcolare la distanza tra due posizioni su una mappa. Ho memorizzato i miei dati: Longitudine, Latitudine, X POS, Y POS.Calcolo della distanza tra due punti (latitudine, longitudine)
Ho utilizzato in precedenza il frammento di seguito.
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
Non mi fido comunque dei dati che ne derivano, sembra che dia risultati leggermente imprecisi.
Alcuni dati di esempio in caso di necessità
Latitude Longitude Distance
53.429108 -2.500953 85.2981833133896
Qualcuno potrebbe aiutarmi con il mio codice, non mi importa se si vuole risolvere quello che ho già avere se si dispone di un nuovo modo per raggiungere questo sarebbe fantastico.
si prega di indicare quale unità di misura i risultati sono in.
Quale sistema di database? – AakashM
MSSQL 2008 R2 .. – Waller
Non si deve dividere l'argomento di seno con l'ulteriore/2. Inoltre, potresti avere una maggiore precisione nel raggio della Terra e utilizzare alcuni _Datum_ utilizzati per es.dal sistema GPS (WGS-84) che approssima la Terra con un ellissoide (con raggi diversi all'equatore e ai poli) –