计算经度,纬度,速度和航向的坐标

时间:2012-11-18 23:01:05

标签: php math latitude-longitude coordinate-systems

我过去24小时一直试图解决这个问题...

以下是假设:


当前经度(十进制格式):53.3205556

当前纬度(十进制格式): - 1.72297223

以公里为单位的距离:1400公里

度数:45°


我想在1400公里后计算小数点的新坐标。这是我的代码(在PHP中)。

function calc_position($latitude, $longitude, $distance, $heading){

    $r = 6378;
    // Earth circonference
    // Convert heading in degres to radians
    $bearing = deg2rad($heading); 

    // Compute new latitude and longitude
    $latitude2 =  asin( (sin($latitude) * cos($distance/$r)) + (cos($latitude) * sin($distance/$r) * cos($bearing)) );
    $longitude2 = $longitude + atan2( sin($bearing)*sin($distance/$r)*cos($latitude), cos($distance/$r)-(sin($latitude)*sin($latitude2)) );

    return (object) array(
        'latitude' => $latitude2,
        'longitude' => $longitude2
    );
}

不幸的是,新经度和纬度的结果是错误的(在地图上显示不一致)。我已经完全按照a tutorial HERE尝试了这个公式,但是尽管有这个网站,我仍然无法找到解决方案。

2 个答案:

答案 0 :(得分:1)

除非你在这个函数之外做了,否则你还需要将初始lat / long转换为弧度,并将公式的结果转换回度。

答案 1 :(得分:0)

如果内存服务于几年前,你需要一些名为haversine formula的东西来解决这个问题,假设你正在使用WGS84坐标。