如何计算 Azure Sql 服务器中的两个地理距离(纬度、经度、高度)点?

How calculate two geo distance (Latitude,Logitude,Altidute) points in Azure Sql server?

如何在 Azure Sql 服务器中给定两个地理点(两个 latitude/longitude/Altitude 对)获得准确的距离(以米为单位)?

纬度经度海拔高度 22.30634 113.92934 125

纬度经度海拔高度 58.31962 -157.54788 35000

在SQL服务器中是否有任何可能的方法来计算包括高度在内的距离?

假设您正在寻找 SQRT(Power(L,2)+Power(H,2)

的斜边

要清楚,这个斜边不考虑地球的曲率。

这是一个展示两者的小例子。

 declare @lat1 float = 22.30634 
 declare @lng1 float = 113.92934
 declare @alt1 float = 125

 declare @lat2 float = 58.31962
 declare @lng2 float = -157.54788
 declare @alt2 float = 35000

 
SELECT JustLatLng = geography::Point(@lat1, @lng1, 4326).STDistance(geography::Point(@lat2, @lng2, 4326))
      ,WithAlt    = SQRT(Power(geography::Point(@lat1, @lng1, 4326).STDistance(geography::Point(@lat2, @lng2, 4326)),2)
                        +Power((@alt1-@alt2)*0.3048,2))

Returns

JustLatLng          WithAlt
7838823.94282909    7838831.1502063   --<< delta of 7.20737721