C#根据经纬度计算距离
时间: 2024-10-27 15:00:34 浏览: 38
C#通过经纬度计算2个点之间距离的实现代码
在C#中,我们可以使用Haversine公式(赫氏公式)来根据经纬度计算两点之间的距离。这是一种常见的算法,用于估算地球上两点的大致直线距离。以下是一个简单的示例:
```csharp
using System;
using System.Globalization;
using System.Threading;
class HaversineDistanceCalculator
{
private const double EarthRadiusInKm = 6371; // 地球平均半径,单位为公里
public static double CalculateDistance(double lat1, double lon1, double lat2, double lon2)
{
var dLat = ToRadians(lat2 - lat1);
var dLon = ToRadians(lon2 - lon1);
var a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
Math.Cos(ToRadians(lat1)) * Math.Cos(ToRadians(lat2)) *
Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
var distance = EarthRadiusInKm * c;
return distance;
}
private static double ToRadians(double degrees)
{
return degrees * (Math.PI / 180.0);
}
}
// 使用方法
public static void Main()
{
double latitude1 = 39.9042; // 北京纬度
double longitude1 = 116.4074; // 北京经度
double latitude2 = 51.5074; // 伦敦纬度
double longitude2 = -0.1278; // 伦敦经度
double distance = HaversineDistanceCalculator.CalculateDistance(latitude1, longitude1, latitude2, longitude2);
Console.WriteLine($"北京到伦敦的距离大约是 {distance} 公里.");
}
```
这个代码首先将输入的角度转换为弧度,然后应用Haversine公式来计算两点间的弧度差,最后将其转换回距离(地球半径乘以角度)。注意这是大圆距离,对于实际的飞行或导航路线可能略有偏差。
阅读全文