C#根据经纬度求两点间距离的函数代码

来源:互联网 发布:服装行业大数据分析 编辑:程序博客网 时间:2024/06/13 22:21

C#根据经纬度求两点间距离的函数代码

[ 来源:互联网 |时间:20071016 |收藏本文]

Google Map上弄来的根据经纬度求地球表面两点间距离的实现,稍微改编了一下,对于我国境内空间距离计算,该实现已经够用,以米为单位。.Net2.0C#实现。

public static double DistanceOfTwoPoints(double lng1,double lat1, double lng2, double lat2, GaussSphere gs)

{

double radLat1 = Rad(lat1);

double radLat2 = Rad(lat2);

double a = radLat1 - radLat2;

double b = Rad(lng1) - Rad(lng2);

double s = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(a / 2), 2) +

Math.Cos(radLat1) * Math.Cos(radLat2) * Math.Pow(Math.Sin(b / 2), 2)));

s = s * (gs == GaussSphere.WGS84 ? 6378137.0 : (gs == GaussSphere.Xian80 ? 6378140.0 : 6378245.0));

s = Math.Round(s * 10000) / 10000;

return s;

}

 

private static double Rad(double d)

{

return d * Math.PI / 180.0;

}

GaussSphere 为自定义枚举类型

/// <summary>

/// 高斯投影中所选用的参考椭球

/// </summary>

public enum GaussSphere

{

Beijing54,

Xian80,

WGS84,

}

 http://www.tianmomo.com/GIS/Component-GIS/20071016-CSharp-Map-Distence.html