用.NET计算当前速度 - 使用GPS

时间:2012-11-08 09:18:41

标签: c# .net gps

我想知道用GPS计算当前速度的最佳方法是什么。 我有一个外接GPS接收器,通过USB连接到我的车载笔记本电脑。它给了我以下信息: - 经度 - 纬度 - 海拔高度

我的尝试是获得两个带时间戳的位置信息。 然后我发现时间上的差异(时间戳2 - 时间戳1)和计算速度(距离/时间)。

是否还有其他任何可能的库?

1 个答案:

答案 0 :(得分:3)

要计算距离,您需要Haversine Formula

你会在网上找到很多它的实现,这是我在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;
}