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中文網其他相關文章!