如何计算Azure Sql服务器中的两个地理距离纬度,对数,高度点?

问题描述

在Azure sql服务器中给定两个地理位置(两个纬度/经度/海拔高度对)的情况下,如何获得准确的距离(以米为单位)?

纬度经度海拔 22.30634 113.92934 125

纬度经度海拔 58.31962 -157.54788 35000

sql Server中,有没有办法计算包括海拔在内的距离?

解决方法

假设您正在寻找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,2)
                        +Power((@alt1-@alt2)*0.3048,2))

返回

JustLatLng          WithAlt
7838823.94282909    7838831.1502063   --<< delta of 7.20737721