首页 >数据库 >mysql教程 >SQL Server如何准确计算两个经纬度点之间的距离?

SQL Server如何准确计算两个经纬度点之间的距离?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-12 13:08:45820浏览

How Can SQL Server Accurately Calculate the Distance Between Two Latitude/Longitude Points?

在 SQL Server 中精确计算地理点之间的距离

地图坐标之间准确的距离计算至关重要。 虽然某些公式提供近似值,但 SQL Server 的内置功能提供卓越的精度。

利用 SQL Server 的 geography 数据类型(SQL Server 2008 及更高版本)

geography 数据类型(在 SQL Server 2008 及更高版本中可用)为计算距离提供了强大的解决方案。 方法如下:

<code class="language-sql">DECLARE @source geography = 'POINT(0 51.5)'
DECLARE @target geography = 'POINT(-3 56)'

SELECT @source.STDistance(@target)</code>

此查询返回以米为单位的距离。

geography 类型与现有数据集成

如果您正在使用已建立的数据库模式,则可以无缝集成 geography 类型。 Point 方法有助于实现这一点:

<code class="language-sql">DECLARE @orig_lat DECIMAL(12, 9)
DECLARE @orig_lng DECIMAL(12, 9)
SET @orig_lat=53.381538; SET @orig_lng=-1.463526;

DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);

SELECT *,
    @orig.STDistance(geography::Point(dest.Latitude, dest.Longitude, 4326)) AS distance
FROM #orig dest;</code>

此示例保留现有数据结构,同时利用 geography 数据类型的准确性进行距离计算。

以上是SQL Server如何准确计算两个经纬度点之间的距离?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn