首頁 >資料庫 >mysql教程 >如何在SQL Server中精確計算兩個經緯度點之間的距離?

如何在SQL Server中精確計算兩個經緯度點之間的距離?

Patricia Arquette
Patricia Arquette原創
2025-01-12 13:16:42302瀏覽

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

SQL Server 中兩個地理點之間的精確距離計算

SQL Server經常需要計算緯度和經度座標之間的距離。雖然半正矢公式很常見,但其準確性限制需要更強大的解決方案。

利用 geography 資料型態

SQL Server 2008 及更高版本提供 geography 資料類型,非常適合高效、準確的空間資料處理,包括距離計算。 下面的程式碼示範了它的使用:

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

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

這將返回兩點之間的距離(以公里為單位)。 例如,上面將返回大約 538 公里。 geography 類型廣泛的空間方法使其成為 SQL Server 中地理資料的建議方法。

與現有資料結構整合

維護目前的資料結構是可能的,同時仍受益於STDistance方法。 將您的緯度和經度值轉換為 geography 實例:

<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>

這種方法可以確保準確的距離計算,而無需進行重大資料重組。

以上是如何在SQL Server中精確計算兩個經緯度點之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn