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

如何在 SQL Server 中计算两个纬度/经度点之间的距离?

Susan Sarandon
Susan Sarandon原创
2025-01-12 13:02:43151浏览

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

利用 SQL Server 的地理数据类型进行距离计算

确定由纬度和经度指定的两点之间的距离需要采用专门的方法。 SQL Server 从 2008 版本开始提供 geography 数据类型,这是处理和分析地理信息的强大工具。

geography::Point 方法为每个点构造一个 geography 对象,使用 SRID 4326,对应于 WGS84(世界大地测量系统 1984)。 创建这些对象后,STDistance 方法将有效计算距离:

<code class="language-sql">DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);

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

这会产生以米为单位的精确距离。 例如,给定样本数据:

<code>Latitude        Longitude     Distance 
53.429108       -2.500953     85.2981833133896</code>

计算出的距离约为 85.3 米,比更简单的方法提供了更准确的结果。因此,geography 数据类型是 SQL Server 中地理空间应用程序的强大且高效的解决方案,可简化复杂的计算,同时提高准确性。

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

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