我想知道用 GPS 计算当前速度的最佳方法是什么。我有一个外部 GPS 接收器,它通过 USB 连接到我的汽车笔记本电脑。它只给了我以下信息: - 经度 - 纬度 - 高度
我的尝试是获取两个带有时间戳的位置信息。然后我找到时间差(timestamp2 - timestamp1)并计算速度(距离/时间)。
是否有任何其他可能性或任何可用的库?
要计算距离,您将需要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;
}