我想要计算两个地理点的距离.点在经度和纬度上给出.
坐标为:
点1:36.578581,-118.291994
point 2:36.23998,-116.83171
这里有一个比较网站的结果:
const double PIx = Math.PI;
const double RAdio = 6378.16;
///
/// Convert degrees to Radians
///
/// Degrees
/// The equivalent in radians
public static double Radians(double x)
{
return x * PIx / 180;
}
///
/// Calculate the distance between two places.
///
///
///
///
///
///
public static double DistanceBetweenPlaces(double lon1,double lat1,double lon2,double lat2)
{
double R = 6371; // km
double dLat = Radians(lat2 - lat1);
double dLon = Radians(lon2 - lon1);
lat1 = Radians(lat1);
lat2 = Radians(lat2);
double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Sin(dLon / 2) * Math.Sin(dLon / 2) * Math.Cos(lat1) * Math.Cos(lat2);
double c = 2 * Math.atan2(Math.Sqrt(a),Math.Sqrt(1 - a));
double d = R * c;
return d;
}
Console.WriteLine(DistanceAlgorithm.DistanceBetweenPlaces(36.578581,-118.291994,36.23998,-116.83171));
问题是我得到两个不同的结果.
我的结果:163,307公里
网站结果:136公里
有什么建议么???
TORTI