1. 程式人生 > >PHP 輸入多個經緯度座標 找出中心點

PHP 輸入多個經緯度座標 找出中心點

參考: https://stackoverflow.com/questions/6671183/calculate-the-center-point-of-multiple-latitude-longitude-coordinate-pairs
Python Java C# JavaScript Objective-C PHP 版本均有

function GetCenterFromDegrees($data){
    
    if (!is_array($data)) return FALSE;

    $num_coords = count($data);

    $X
= 0.0; $Y = 0.0; $Z = 0.0; foreach ($data as $coord){ $lat = deg2rad((float)$coord[0]); $lon = deg2rad((float)$coord[1]); $a = cos($lat) * cos($lon); $b = cos($lat) * sin($lon); $c = sin($lat); $X += $a; $Y += $b; $Z +
= $c; } $X /= $num_coords; $Y /= $num_coords; $Z /= $num_coords; $lon = atan2($Y, $X); $hyp = sqrt($X * $X + $Y * $Y); $lat = atan2($Z, $hyp); return array(rad2deg($lat), rad2deg($lon)); } // 測試資料 $data = array( array(45.849382, 76.322333), array(45.843543, 75.324143
), array(45.765744, 76.543223), array(45.784234, 74.542335) ); print_r(GetCenterFromDegrees($data)); // Array ( [0] => 45.813538469271 [1] => 75.682996448603 )