当前位置: 首页 > news >正文

[GeographicLib] LocalCartesian用法

LocalCartesian
下面我将通过一个具体实例来演示 LocalCartesian 的应用,使用 GeographicLib 库(一个常用的地理计算库)来实现经纬度与局部笛卡尔坐标之间的转换。

这个示例会完成以下操作:

选择一个参考点(例如某个城市的经纬度)
将其他点的经纬度转换为相对于参考点的局部笛卡尔坐标
再将局部笛卡尔坐标转换回经纬度,验证转换的准确性
# 安装依赖:pip install geographiclibfrom geographiclib.geodesic import Geodesic
from geographiclib.localcartesian import LocalCartesiandef main():# 定义参考点(例如:北京天安门的经纬度)# 纬度(lat), 经度(lon), 海拔(h)ref_lat = 39.9042ref_lon = 116.4074ref_h = 0.0# 初始化局部笛卡尔坐标系,以参考点为原点lc = LocalCartesian(ref_lat, ref_lon, ref_h, Geodesic.WGS84)# 示例点1:北京故宫(距离参考点不远)point1_lat = 39.9163point1_lon = 116.3908point1_h = 0.0# 将经纬度转换为局部笛卡尔坐标 (x, y, z)# x: 东方向, y: 北方向, z: 垂直方向x1, y1, z1 = lc.Forward(point1_lat, point1_lon, point1_h)print(f"点1相对于参考点的局部坐标:")print(f"x: {x1:.2f}米 (东方向)")print(f"y: {y1:.2f}米 (北方向)")print(f"z: {z1:.2f}米 (垂直方向)\n")# 示例点2:上海人民广场(距离参考点较远)point2_lat = 31.2304point2_lon = 121.4737point2_h = 0.0x2, y2, z2 = lc.Forward(point2_lat, point2_lon, point2_h)print(f"点2相对于参考点的局部坐标:")print(f"x: {x2:.2f}米 (东方向)")print(f"y: {y2:.2f}米 (北方向)")print(f"z: {z2:.2f}米 (垂直方向)\n")# 将局部坐标转换回经纬度,验证准确性lat, lon, h = lc.Reverse(x1, y1, z1)print(f"将点1的局部坐标转换回经纬度:")print(f"纬度: {lat:.6f}, 经度: {lon:.6f}, 海拔: {h:.2f}米")print(f"原始值: 纬度: {point1_lat:.6f}, 经度: {point1_lon:.6f}")if __name__ == "__main__":main()

代码解释:

参考点设置:我们选择了北京天安门作为参考点,以此为原点建立局部笛卡尔坐标系
核心转换方法:Forward():将经纬度坐标转换为局部笛卡尔坐标Reverse():将局部笛卡尔坐标转换回经纬度坐标
坐标含义:x:东方向距离(米)y:北方向距离(米)z:垂直方向距离(米)

实际应用场景:
这个示例展示了 LocalCartesian 在以下场景中的价值:

无人机导航:可以将起飞点作为参考点,无人机的位置用局部坐标表示,简化距离和方向计算
机器人定位:在局部区域内,使用笛卡尔坐标比经纬度更便于路径规划和运动控制
工程测量:在建筑工地上,以某个基准点建立局部坐标系,方便计算各点之间的相对位置

注意:局部笛卡尔坐标系更适合小范围区域(如城市级别),对于跨大洲等大范围场景,误差会逐渐增大。

http://www.dtcms.com/a/349126.html

相关文章:

  • 从成本中心到价值创造者:网络安全运维的实施框架与价值流转
  • 深入两种高级并发设计模式
  • 零基础玩转STM32:深入理解ARM Cortex-M内核与寄存器编程
  • 奈飞工厂:算法优化实战
  • MySQL性能优化的5个维度
  • 02-开发环境搭建与工具链
  • 【Android Kotlin】Kotlin专题学习
  • 十一、redis 入门 之 数据持久化
  • [滑动窗口]1493. 删掉一个元素以后全为 1 的最长子数组
  • 3.6 虚拟存储器 (答案见原书 P225)
  • 国内第一本系统介绍 Obsidian 的书出版了
  • 基于Python的淘宝电商服装价格可视化分析
  • 【知识杂记】卡尔曼滤波及其变种,从理论精要到工程实践深入解析
  • AI代理需要数据完整性
  • C++ 可变参数模板(Variadic Templates)
  • 2025年09月计算机二级Java选择题每日一练——第六期
  • c#_数据持久化
  • LangGraph 那点事
  • 自定义SpringBoot的自动配置
  • 从零到精通:如何用 Python 高效查找数组中出现频率最高的元素
  • leetcode刷题记录04——top100题里的7道中等题
  • 网络编程-创建TCP协议服务器
  • 后端Web实战-Java代码操作数据库
  • 跨摄像头追踪精度↑79%!陌讯动态决策模型在智慧园区的落地实践
  • 跨摄像头追踪准确率↑18%!陌讯时空感知算法在智慧安防的实战解析
  • 复杂场景鲁棒性突破!陌讯自适应融合算法在厂区越界检测的实战优化​
  • 使用Localtunnel搭建与外网交互简单的https本地服务器
  • 时序数据库选型“下半场”:从性能竞赛到生态博弈,四大主流架构深度横评
  • Windows 系统下 Android SDK 配置教程
  • 【数据结构与算法】并查集