怎么计算两个经纬度之间的距离.
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 阅读(10959) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本