I found the solution for this question in C#, mais je ne peux pas le traduire en une seule requête T-SQL, puisque mon implémentation en C# nécessite une dérivation (si par la suite).Comment calculer l'azimut (angle au nord) entre deux coordonnées WGS84 dans une seule requête T-SQL?
J'ai aussi trouvé la solution C# suivante, ce qui pourrait se traduire par un T-SQL seule requête, mais il ne produit pas les résultats corrects
public static double GetAzimuth(WGSCoord c1, WGSCoord c2) {
var lat1 = DegToRad(c1.Latitude);
var lon1 = DegToRad(c1.Longitude);
var lat2 = DegToRad(c2.Latitude);
var lon2 = DegToRad(c2.Longitude);
return RadToDeg(Math.Asin(Math.Sin(lon1 – lon2) * Math.Cos(lat2)/Math.Sin(Math.Acos(Math.Sin(lat2) * Math.Sin(lat1) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Cos(lon2 – lon1)))));
}
code de Tamir Khason – Just code
Quelqu'un pourrait-il corriger la code ci-dessus ou fournir une autre solution?
Pourquoi voulez-vous le faire dans une requête? –
@quant_dev parce que j'ai besoin de performance. interroger les résultats, les traiter et les réécrire à partir de C# est trop lent –
Est-ce que vous mettez en lot la requête ou la requête pour une ligne à la fois? (Pas d'offense, mais j'ai vu cela fait ...) –