【发布时间】:2012-01-17 01:57:50
【问题描述】:
我似乎无法弄清楚如何制作高效且外观简洁的代码来解决这个问题。
我有一串坐标,每个点自然由经度、纬度和高度组成(我现在完全不担心高度,我知道我计算镜头的功能不支持高度) :
$coordinates = "-82.36554110283872,26.15200821551467,0 -82.420692,26.097404,0 -82.52855700000001,26.186567,0 -82.41250599999999,25.996422,0 -82.50644510379755,26.05431354409091,0"
我需要找出每个坐标之间的英尺距离并将总和相加。 我有以下函数(效果很好)来计算两点之间的距离:
function coordDistance($lat1, $lon1, $lat2, $lon2) {
$delta_lat = $lat2 - $lat1;
$delta_lon = $lon2 - $lon1;
$earth_radius = 20908800.00; //Distance around the earth in feet
$alpha = $delta_lat/2;
$beta = $delta_lon/2;
$a = sin(deg2rad($alpha)) * sin(deg2rad($alpha)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * sin(deg2rad($beta)) * sin(deg2rad($beta)) ;
$c = asin(min(1, sqrt($a)));
$distance = 2*$earth_radius * $c;
$distance = round($distance, 4);
return $distance;
}
我目前分解坐标字符串并尝试将其传递给函数的方式是完全可笑的。关于如何分割坐标并将它们分解以以一种不错的方式获得路径的总镜头的任何建议?
【问题讨论】:
-
从您的字符串值中,我可以假设
,comma将组成一个点的高度、经度和纬度分开,而space将这些点分开,对吗?
标签: php coordinates