在PHP 中精確測量兩個座標之間的距離
計算地球表面上兩點之間的距離需要精確度,尤其是在天文情況下涉及距離。半正弦公式是此類計算的常用方法,但其在提供的程式碼中的實現似乎會產生不準確的結果。
半正弦公式註意事項
半正弦公式採用球面三角學來估計兩個地理座標之間的距離。雖然它可以為短距離提供準確的近似值,但對於極端距離(例如,靠近對映體),它的可靠性會降低。
替代計算公式:Vincenty
克服克服了半正矢公式的局限性,特別是對於大規模距離計算,文森蒂公式提供了更高的精度。它使用迭代方法計算沿著近似地球表面的橢球體的測地距離。
實現
下面是Vincenty 公式在PHP 中的實現:
function vincentyGreatCircleDistance($latFrom, $lonFrom, $latTo, $lonTo, $earthRadius = 6371000) { // Convert to radians $latFrom = deg2rad($latFrom); $lonFrom = deg2rad($lonFrom); $latTo = deg2rad($latTo); $lonTo = deg2rad($lonTo); $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; }
此實現輸出以米為單位的距離,與輸入一致$earthRadius。對於英里,您可以傳入 3959 英里作為 $earthRadius 參數。利用 Vincenty 公式可確保可靠的距離計算,即使對於極端距離也是如此。
以上是PHP中如何準確計算兩個座標之間的距離?的詳細內容。更多資訊請關注PHP中文網其他相關文章!