2012-11-18 195 views
1

我一直在試圖解決這個問題,現在過去24小時...計算從經度,緯度,速度座標和航向

這裏是假設:


當前經度(十進制格式):53.3205556

當前緯度(以十進制格式):1400公里

012:-1.7297223

距離在公里數

標題以度爲: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來嘗試這個公式,但我不能在這個網站上看到解決方案。

+0

你應該稍微解釋一下45°定義在哪個軸/平面上。 – phil13131

+0

完成!我不確定這是決定性的信息思想。 –

+0

你應該糾正你的解釋。如果您處於給定座標並以東經45°行駛,那麼角度將用赤道線或約線定義。朝向磁南(位於北部)。 – phil13131

回答

1

除非您在此功能之外完成,否則您還需要將初始緯度/經度轉換爲弧度,並將公式的結果轉換回度數。

0

如果內存服務於幾年前,則需要使用名爲haversine formula的東西來解決這個問題,假設您使用的是WGS84座標。

+0

是的,這是我在我的帖子中提到的鏈接中提到的。沒有幫助。我不是數學大師,但我很確定我的公式已經是來自haversine forumla的一個變體(計算2點之間的距離)。 –

+0

雖然沒有理由投票。 – hd1

+0

你是對的這是一個錯誤...現在糾正。它實際上甚至值得投票,因爲Haversine公式可能會幫助其他人,我認爲 –