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

已知两个坐标的经纬度,可以使用Python中的地理距离计算方法来求它们之间的距离。最常用的方式是利用h*ersine公式计算地球表面两点间的**大圆距离**(近似直线距离)。也可以使用第三方库简化操作。
1. 使用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} 千米")
2. 使用geopy库(推荐)
更简单的方法是使用 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),比球面假设更准确。
3. 注意事项
- 确保坐标顺序是 (纬度, 经度),不要颠倒
- 如果距离很短(如几百米内),可近似用欧氏距离,但长距离必须考虑地球曲率
- 单位注意:结果可输出为千米、米或英里(geopy支持 .miles, .meters 等)
基本上就这些,根据是否允许安装第三方库选择合适方法。
以上就是如何使用Python已知两坐标求距离?的详细内容,更多请关注其它相关文章!
# 坐标距离
# ai
# 上海
# python
# 网站建设的经验之谈
# 标题营销推广怎么回事
# 网站关键词优化排名方案
# 批发行业视频推广营销
# 网页制作与网站建设效果
# 沈阳建站建设网站
# 优化排名推广网站怎么做
# 保定网站网站建设
# 怎么做好大型网站推广
# 英文seo关键词工具
# 更精确
# 的是
# 北京
# 第三方
# 为例
# 数据处理
# 如何使用
# 地球
# 可以使用
# cos
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
ArrayList与LinkedList操作复杂度详解:遍历与修改
Discord Slash 命令响应超时问题的异步解决方案
iwriter统一登录平台 iwrite账号密码登录页面
Django通过AJAX异步上传图片并保存至模型的完整指南
Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】
小米Civi 4录制视频过暗_小米Civi 4亮度优化
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
PySpark中从现有列右侧提取可变长度字符创建新列的教程
VS Code远程开发时如何处理文件权限问题
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
Golang如何实现容器化日志收集与分析_Golang容器日志收集分析方法
css链接悬停下划线样式如何自定义_使用::after结合content和transition
网易大神怎么保存别人动态的图片_网易大神动态图片保存方法
使用Python高效删除Word宏并转换DOCM为DOCX格式
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
LINUX下如何进行磁盘分区_fdisk与parted工具在LINUX中的使用对比
优化MinIO list_objects_v2 操作的性能瓶颈与最佳实践
苹果手机如何防止被恶意App追踪
妖精动漫免费平台 妖精动漫官网资源观看网址
C++如何比较两个字符串_C++ string compare函数与操作符对比
淘宝支付提示失败如何解决 淘宝支付流程优化方法
在Go语言中利用后缀数组处理多字符串:实现高效文本匹配与自动补全
微博网页版主页入口 微博官方网站免登录访问
C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法
UC浏览器官网入口2025最新 UC浏览器网页版正式地址
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
黑猫投诉统一入口官网 消费者权益保护投诉平台
Win11怎么查看显卡显存 Win11显示适配器属性及专用视频内存查询
在Go开发中优雅管理ListenAndServe进程:GoSublime集成方案
如何更改在 Excel 中打开超链接时的默认浏览器
Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
理解J*aScript Promise的微任务队列与执行顺序
CSS布局:解决全屏元素100%尺寸与外边距导致的页面溢出问题
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
Yandex官网免登录入口_俄罗斯Yandex搜索引擎一键访问
夸克浏览器桌面版同步不了书签怎么处理 夸克浏览器跨设备同步异常解决方案
TypeScript/J*aScript:高效查找数组中首个唯一ID对象
马斯克:Optimus 人形机器人复数形式为 Optimi
ACG动漫手机版官网入口 手机ACG动漫APP在线观看正版
c++如何使用chrono库处理时间_c++标准库时间与日期操作
UC浏览器网页版登录入口官网 电脑版网址入口
C++如何实现线程池_C++11手动实现一个简单的固定大小线程池
poki免费入口快捷访问 poki人气小游戏直接玩站点
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
如何在复杂的电商平台中优雅地管理共享资源并确保正确重定向,使用spryker-shop/resource-share-page模块助你一臂之力
QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口


2025-12-02
浏览次数:次
返回列表