您的位置:首页 > 其它

怎么计算两个经纬度之间的距离.

2015-03-10 14:00 351 查看
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>///<paramname="LonA">经度A</param>///<paramname="LatA">纬度A</param>///<paramname="LonB">经度B</param>///<paramname="LatB">经度B</param>///<returns>距离(千米)</returns>publicstaticdoublegetDistance(doubleLonA,doubleLatA,doubleLonB,doubleLatB){//东西经,南北纬处理,只在国内可以不处理(假设都是北半球,南半球只有澳洲具有应用意义)doubleMLonA=LonA;doubleMLatA=LatA;doubleMLonB=LonB;doubleMLatB=LatB;//地球半径(千米)doubleR=6371.004;doubleC=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));}

privatestaticdoublerad(doubled){returnd*Math.PI/180.0;}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: