php - 根据经度、纬度、速度和航向计算坐标

标签 php math latitude-longitude coordinate-systems

过去 24 小时我一直在努力解决这个问题...

以下是假设:


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

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

行驶距离(公里):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
    );
}

不幸的是,新的经度和纬度的结果是错误的( map 上显示的不一致)。我彻底关注了a tutorial HERE尝试这个公式,但尽管有这个网站,我还是找不到解决方案。

最佳答案

除非您在此函数之外执行此操作,否则您还需要将初始纬度/经度转换为弧度,并将公式的结果转换回度数。

关于php - 根据经度、纬度、速度和航向计算坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445508/

相关文章:

php - 从数据库生成动态复选框遇到困难

c# - 如何从 Windows 窗体客户端的 HTTP 请求中获取值

php - 使用 PHP 和 MySQL 存储和显示 unicode 字符串 (हिन्दी)

mysql - 结合 BTREE 和地理/空间索引来加速我的查询?

c# - 大型数据集(SQL 到 C#)、加载时间长的修复

php - 使用PHP在while循环中使用动态输入字段数组更新MYSQL数据库

javascript - 为什么 Math.floor((Math.random() * 999999) + 100000) 不能可靠地生成 6 位数字?

math - 正弦波频率拟合

android - 在android中的 Canvas 上的圆线上绘制矩形

sql - MySQL查询地理中点