c#语言+计算两个位置的距离,计算两个地理点的距离,单位为km c#

我想要计算两个地理点的距离.点在经度和纬度上给出.

坐标为:

点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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值