📌  相关文章
📜  公式计算距离坐标纬度经度c#(1)

📅  最后修改于: 2023-12-03 15:22:33.436000             🧑  作者: Mango

计算距离坐标的公式(C#)

在开发地理位置相关的应用程序时,计算两个坐标之间的距离是非常常见的需求。在本文中,将介绍如何使用 C# 编程语言计算两个坐标之间的距离,并提供代码示例。

地球半径

计算两个坐标之间的距离需要知道地球的半径。通常认为地球的半径为 6,371 千米。

// 地球半径
const double EarthRadius = 6371.0; // 单位:千米
球面三角函数

计算两个坐标之间的距离需要使用球面三角函数。.NET Framework 提供了 System.Math 类,其中包含了一些常用的球面三角函数,如 SinCosAcos 等。

经纬度转弧度

为了方便计算,需要将经纬度转换为弧度:

// 将角度转换为弧度
private static double ToRadians(double degrees)
{
    return degrees * Math.PI / 180.0;
}

// 计算两个坐标之间的距离
public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
{
    // 将经纬度转换为弧度
    double rlat1 = ToRadians(lat1);
    double rlon1 = ToRadians(lon1);
    double rlat2 = ToRadians(lat2);
    double rlon2 = ToRadians(lon2);

    // 计算距离
    double dlon = rlon2 - rlon1;
    double dlat = rlat2 - rlat1;
    double a = Math.Sin(dlat / 2) * Math.Sin(dlat / 2) +
               Math.Cos(rlat1) * Math.Cos(rlat2) * Math.Sin(dlon / 2) * Math.Sin(dlon / 2);
    double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)));
    double distance = EarthRadius * c;

    return distance;
}
示例代码

下面是一个使用示例,在 Main 函数中计算两个坐标之间的距离:

const double lat1 = 22.2791; // 纬度1
const double lon1 = 114.1735; // 经度1
const double lat2 = 40.7851; // 纬度2
const double lon2 = -73.9683; // 经度2

double distance = CalculateDistance(lat1, lon1, lat2, lon2);
Console.WriteLine($"Distance: {distance:0.00} km");

输出:

Distance: 12762.41 km
结论

本文介绍了使用 C# 编程语言计算两个坐标之间的距离的方法,并提供了示例代码。