PHP 輸入多個經緯度座標 找出中心點
阿新 • • 發佈:2018-11-16
參考: 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 )