首頁 >資料庫 >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