怎么计算两个经纬度之间的距离.
1.
用经纬度大致计算距离 地球赤道上环绕地球一周走一圈共 40075.04公里 而一圈分成360° 而每1°(度)有60' 每一度一秒在赤道上的长度计算如下: 40075.04km/360°=111.31955km 111.31955km/60'=1.8553258km=1855.3m 而每一分又有60秒 每一秒就代表 1855.3m/60=30.92m 任意两点距离计算公式为 d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]} 其中:A点经度,纬度分别为λA和ΦA B点的经度、纬度分别为λB和ΦB,d为距离 地球上所有地方的纬度一分的距离都是约等于1.86公里,也就是一度等于1.86*60=111公里。 不同纬度处的经度线上的一分的实际长度是不同的,219国道基本在东经29-38度之间,29度处的一分经线长约1.63公里,38度处的一分经线长约1.47公里。
2.
/// <summary> /// 获取两个经纬度之间的距离 /// </summary> /// <param name="LonA">经度A</param> /// <param name="LatA">纬度A</param> /// <param name="LonB">经度B</param> /// <param name="LatB">经度B</param> /// <returns>距离(千米)</returns> public static double getDistance(double LonA, double LatA, double LonB, double LatB) { // 东西经,南北纬处理,只在国内可以不处理(假设都是北半球,南半球只有澳洲具有应用意义) double MLonA = LonA; double MLatA = LatA; double MLonB = LonB; double MLatB = LatB; // 地球半径(千米) double R = 6371.004; double C = Math.Sin(rad(LatA)) * Math.Sin(rad(LatB)) + Math.Cos(rad(LatA)) * Math.Cos(rad(LatB)) * Math.Cos(rad(MLonA - MLonB)); return (R * Math.Acos(C)); }
private static double rad(double d) { return d * Math.PI / 180.0; }
posted on 2015-03-10 14:00 简简单单2018 阅读(10885) 评论(0) 编辑 收藏 举报