可以使用h*ersine公式或geopy库计算两地间的大圆距离。1. 手动实现h*ersine公式,通过经纬度转弧度、计算球面差值与地球半径乘积得距离;2. 推荐使用geopy库的geodesic方法,基于WGS-84椭球模型更精确;3. 注意坐标顺序为(纬度, 经度),避免颠倒,且长距离需考虑地球曲率,单位可选千米、米或英里。

已知两个坐标的经纬度,可以使用Python中的地理距离计算方法来求它们之间的距离。最常用的方式是利用h*ersine公式计算地球表面两点间的**大圆距离**(近似直线距离)。也可以使用第三方库简化操作。
假设两个点的经纬度分别为 (lat1, lon1) 和 (lat2, lon2),单位为度。以下是实现代码:
import math <p>def calculate_distance(lat1, lon1, lat2, lon2):</p><h1>地球半径(千米)</h1><pre class='brush:python;toolbar:false;'>R = 6371.0 # 将经纬度转换为弧度 lat1_rad = math.radians(lat1) lon1_rad = math.radians(lon1) lat2_rad = math.radians(lat2) lon2_rad = math.radians(lon2) # 计算差值 dlat = lat2_rad - lat1_rad dlon = lon2_rad - lon1_rad # h*ersine 公式 a = math.sin(dlat / 2)**2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(dlon / 2)**2 c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a)) # 距离(千米) distance = R * c return distance
beijing = (39.9042, 116.4074) shanghai = (31.2304, 121.4737)
dist = calculate_distance(beijing[0], beijing[1], shanghai[0], shanghai[1]) print(f"两地距离约为: {dist:.2f} 千米")
更简单的方法是使用 geopy 库,它封装了多种距离计算方式。
码上飞
码上飞(CodeFlying) 是一款AI自动化开发平台,通过自然语言描述即可自动生成完整应用程序。
430
查看详情
# 安装命令:pip install geopy
<p>from geopy.distance import geodesic</p><h1>坐标格式:(纬度, 经度)</h1><p>point1 = (39.9042, 116.4074) # 北京
point2 = (31.2304, 121.4737) # 上海</p><h1>计算距离</h1><p>distance = geodesic(point1, point2).kilometers
print(f"两地距离为: {distance:.2f} 千米")</p>geopy 使用的是更精确的椭球模型(WGS-84),比球面假设更准确。
基本上就这些,根据是否允许安装第三方库选择合适方法。
以上就是如何使用Python已知两坐标求距离?的详细内容,更多请关注其它相关文章!
相关文章:
Python getattr() 异常处理深度解析:避免程序意外退出
J*aScript实现动态背景色下的文本与按钮颜色自适应调整
126邮箱网页版官方入口 126邮箱账号在线登录平台
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
Surface怎么安装系统 微软Surface Pro U盘重装win11教程
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
在Runstone环境中高效处理TasteDive API的JSON数据
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
韩剧圈正版入口页面_韩剧圈官网登录链接
必由学官网入口 必由学教师登录入口
小红书网页版入口链接分享 小红书官网直接进
在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案
C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图
蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源
消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技
在Socket.IO连接中实现Access Token自动更新与动态重连
黑猫投诉统一入口官网 消费者权益保护投诉平台
葱吃多了会怎样 葱吃多了会伤胃吗
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
Lar*el Migration:重命名列后添加新列的正确操作顺序
uc浏览器网页版入口 uc浏览器网页版最新网址
铁路12306的积分有效期是多久_铁路12306积分有效期说明
HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全
UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS
理解Python模块与全局变量的作用域管理
将HTML Canvas内容转换为可上传的图像文件(File对象)
自定义Bag-of-Words实现:处理带负号的词汇权重
夸克浏览器网页版最新地址 夸克浏览器官方入口合集
uc手机浏览器网页版入口 uc浏览器手机版便捷登录首页
自定义 WooCommerce 购物车:始终显示全部交叉销售商品
PostgreSQL海量数据高效导入策略:Python与Django实践指南
Win11怎么关闭快速启动_Win11彻底关机设置教程
CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略
HTML空白字符处理机制:渲染、DOM与编码实践
J*aScript中在Map循环中检测并处理空数组元素
QQ邮箱网页版快速登录 QQ邮箱邮箱账号官方入口地址
b站如何看历史记录_b站观看历史找回方法
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
漫蛙2漫画入口 漫蛙正版网页漫画直达网址
J*aScript 字符串标签转换:使用正则表达式高效替换
Golang如何安装Swagger工具_GoSwagger文档生成环境
Pandas DataFrame 多条件优先级排序与排名
如何在Promise链中优雅地中断后续then执行
Go语言:非阻塞式判断标准输入(os.Stdin)是否有数据
Yandex免登录官网入口_俄罗斯Yandex搜索引擎直达链接
Go语言中Map值调用指针接收器方法的限制与应对
Yandex官方入口网址 Yandex俄罗斯搜索引擎最新在线地址
Win11截图该按哪些键 Win11截屏完整流程解析【教程】
mysql备份恢复性能优化_mysql备份恢复性能优化方法