I found the solution for this question in C#, но я не могу перевести его на один запрос T-SQL, так как моя реализация C# требует ветвления (если тогда еще).Как рассчитать азимут (угол к северу) между двумя координатами WGS84 в одном запросе T-SQL?
Я также нашел следующую C# решение, которое может быть переведено на один запрос T-SQL, но это не дает правильные результаты
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)))));
}
код из Tamir Khason – Just code
Может кто-то исправить код выше или предоставить альтернативное решение?
Почему вы хотите сделать это в запросе? –
@quant_dev, потому что мне нужна производительность. запрашивать результаты, обрабатывать и записывать их обратно с C# слишком медленно –
Вы выполняете пакетный запрос или запрос по одной строке за раз? (Не обижайтесь, но я это сделал ...) –