0

GPSで現在の速度を計算する最良の方法を教えてください。USB経由で車のノートブックに接続されている外部GPSレシーバーがあります。次の情報だけが得られます: - 経度 - 緯度 - 高度

私の試みは、タイムスタンプ付きの 2 つの位置情報を取得することです。次に、時間の差 (timestamp2 - timestamp1) を見つけて、速度 (距離/時間) を計算しています。

おそらく利用可能なライブラリ以外に他の可能性はありますか?

4

1 に答える 1

3

距離を計算するには、Haversine Formulaが必要です。

Web で多くの実装を見つけることができます。ここでは、C# で使用するものを示します。

private static double ArcInMeters(double lat0, double lon0, double lat1, double lon1)
{
    double earthRadius = 6372797.560856; // m
    return earthRadius * ArcInRadians(lat0, lon0, lat1, lon1);
}

private static double ArcInRadians(double lat0, double lon0, double lat1, double lon1)
{
    double latitudeArc = DegToRad(lat0 - lat1);
    double longitudeArc = DegToRad(lon0 - lon1);
    double latitudeH = Math.Sin(latitudeArc * 0.5);
    latitudeH *= latitudeH;
    double lontitudeH = Math.Sin(longitudeArc * 0.5);
    lontitudeH *= lontitudeH;
    double tmp = Math.Cos(DegToRad(lat0)) * Math.Cos(DegToRad(lat1));
    return 2.0 * Math.Asin(Math.Sqrt(latitudeH + tmp * lontitudeH));
}

private static double DegToRad(double x)
{
    return x * Math.PI / 180;
}
于 2012-11-08T09:37:46.270 に答える