问题描述
在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