我在 C# 中找到了这个问题的解决方案,但我无法将其转换为单个查询 T-SQL,因为我的 C# 实现需要分支(如果则不然)。
我还找到了以下 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)))));
}
有人可以更正上面的代码或提供替代解决方案吗?