首頁 >後端開發 >php教程 >如何在PHP中準確計算地理座標之間的距離?

如何在PHP中準確計算地理座標之間的距離?

DDD
DDD原創
2024-12-06 14:51:10967瀏覽

How to Accurately Calculate Distances Between Geographical Coordinates in PHP?

在PHP 中測量座標之間的距離

簡介

實作

提供的 PHP 程式碼嘗試實現半正弦公式計算距離。然而,在處理大距離時,由於舍入誤差,它可能會遇到不準確的情況。相反,我們建議使用Vincenty 公式,如下面的程式碼片段所示:

public static function vincentyGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
  // Convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $lonDelta = $lonTo - $lonFrom;
  $a = pow(cos($latTo) * sin($lonDelta), 2) +
    pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
  $b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);

  $angle = atan2(sqrt($a), $b);
  return $angle * $earthRadius;
}

注意:

預設情況下,距離以米為單位計算:地球半徑6371000公尺。若要變更測量單位,請相應調整 $earthRadius 的值。

錯誤處理

對於對映點(即地球兩側的點),與半正矢公式相比,文森蒂公式提供了更準確的結果。但是,請務必注意,這兩個公式都可能會遇到舍入錯誤或對於非常小的距離產生不準確的結果。

以上是如何在PHP中準確計算地理座標之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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