C# 根据经度纬度计算两点的距离
2011-01-10 17:48
260 查看
public class Earth
{
/// <summary>
/// 地球的半径
/// </summary>
public const double EARTH_RADIUS = 6378.137;
/// <summary>
/// 计算坐标点的距离
/// </summary>
/// <param name="begin">开始的经度纬度</param>
/// <param name="end">结束的经度纬度</param>
/// <returns>距离(公里)</returns>
public static double GetDistance(Point begin, Point end)
{
double lat = begin.RadLat - end.RadLat;
double lng = begin.RadLng - end.RadLng;
double dis = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(lat / 2), 2) + Math.Cos(begin.RadLat) * Math.Cos(end.RadLat) * Math.Pow(Math.Sin(lng / 2), 2)));
dis = dis * EARTH_RADIUS;
dis = Math.Round(dis * 1e4) / 1e4;
return dis;
}
}
/// <summary>
/// 代表经度, 纬度
/// </summary>
public class Point
{
/// <param name="lat">纬度 X</param>
/// <param name="lng">经度 Y</param>
public Point(double lat, double lng)
{
this.lat = lat;
this.lng = lng;
}
// 纬度 X
private double lat;
// 经度 Y
private double lng;
/// <summary>
/// 代表纬度 X轴
/// </summary>
public double Lat { set; get; }
/// <summary>
/// 代表经度 Y轴
/// </summary>
public double Lng { get; set; }
public double RadLat { get { return lat * Math.PI / 180; } }
public double RadLng { get { return lng * Math.PI / 180; } }
}
{
/// <summary>
/// 地球的半径
/// </summary>
public const double EARTH_RADIUS = 6378.137;
/// <summary>
/// 计算坐标点的距离
/// </summary>
/// <param name="begin">开始的经度纬度</param>
/// <param name="end">结束的经度纬度</param>
/// <returns>距离(公里)</returns>
public static double GetDistance(Point begin, Point end)
{
double lat = begin.RadLat - end.RadLat;
double lng = begin.RadLng - end.RadLng;
double dis = 2 * Math.Asin(Math.Sqrt(Math.Pow(Math.Sin(lat / 2), 2) + Math.Cos(begin.RadLat) * Math.Cos(end.RadLat) * Math.Pow(Math.Sin(lng / 2), 2)));
dis = dis * EARTH_RADIUS;
dis = Math.Round(dis * 1e4) / 1e4;
return dis;
}
}
/// <summary>
/// 代表经度, 纬度
/// </summary>
public class Point
{
/// <param name="lat">纬度 X</param>
/// <param name="lng">经度 Y</param>
public Point(double lat, double lng)
{
this.lat = lat;
this.lng = lng;
}
// 纬度 X
private double lat;
// 经度 Y
private double lng;
/// <summary>
/// 代表纬度 X轴
/// </summary>
public double Lat { set; get; }
/// <summary>
/// 代表经度 Y轴
/// </summary>
public double Lng { get; set; }
public double RadLat { get { return lat * Math.PI / 180; } }
public double RadLng { get { return lng * Math.PI / 180; } }
}
相关文章推荐
- C# 根据经度纬度计算两点的距离
- C# 根据经度纬度计算两点的距离
- Object-c 根据经度纬度计算两点间的距离
- Object-c 根据经度纬度计算两点间的距离
- 根据两点经纬度计算距离 附C#和PHP代码
- 根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
- 根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
- 根据两点经纬度计算距离 附C#和PHP代码
- 根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
- 根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
- 已知两点的经度和纬度,计算两点间的距离(php,javascript)
- C#实现根据地图上的两点坐标,计算直线距离
- C#中根据经纬度计算两点的距离
- 根据地球上两个地点的经度和纬度,如何获得这两点的距离?
- 根据两点经纬度计算距离 附C#和PHP代码
- 已知两点的经度、纬度,计算两点的距离
- SQL语句根据经度纬度求出两点间的距离排序
- C语言实验:已知地球上两点的经度和纬度求其球面距离
- PHP根据两点间的经纬度计算距离
- 根据两点经纬度计算地球表面两点间的距离