如何计算 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
如何在 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