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

pyproj 库中 Geod 类讲解

geod.inv 是 pyproj 库中 Geod 类的一个核心方法,用于执行 ​逆地理问题(Inverse Geodetic Problem)​ 的计算,即根据两个地理坐标点(经纬度)计算它们之间的 ​前向方位角、后向方位角和测地线距离。以下是其详细解析

1. 函数签名

from pyproj import Geod

# 创建 Geod 对象(需指定地球椭球模型)
geod = Geod(ellps="WGS84")  # 默认使用 WGS84 椭球体

# 调用方法
forward_azimuth, back_azimuth, distance = geod.inv(lon1, lat1, lon2, lat2)

2. 参数说明

参数类型说明
lon1float第一个点的经度(单位:度,范围:-180 到 180 或 0 到 360)
lat1float第一个点的纬度(单位:度,范围:-90 到 90)
lon2float第二个点的经度(单位:度,范围:-180 到 180 或 0 到 360)
lat2float第二个点的纬度(单位:度,范围:-90 到 90)

3.返回值

返回值类型说明
forward_azimuthfloat从第一个点到第二个点的​前向方位角​(单位:度,范围:0° 到 360°)
back_azimuthfloat从第二个点返回到第一个点的​后向方位角​(单位:度,范围:0° 到 360°
distancefloat两点之间的​测地线距离​(单位:米)

4.方位角定义

  • ​前向方位角 (forward_azimuth):
    从第一个点出发,指向第二个点的方向角度。

    • 0° 表示正北方向,90° 为正东,180° 为正南,270° 为正西。
  • ​后向方位角 (back_azimuth):
    从第二个点返回第一个点的方向角度,与前向方位角互补(±180°)

5.使用示例

计算北京到上海的方位角和距离

from pyproj import Geod

# 初始化 Geod 对象
geod = Geod(ellps="WGS84")

# 北京天安门的坐标 (lon1, lat1)
beijing = (116.3975, 39.9085)

# 上海东方明珠的坐标 (lon2, lat2)
shanghai = (121.4997, 31.2397)

# 计算逆解
forward_az, back_az, distance = geod.inv(beijing[0], beijing[1], shanghai[0], shanghai[1])

print(f"前向方位角: {forward_az:.2f}°")  # 输出: 约 109.39°
print(f"后向方位角: {back_az:.2f}°")     # 输出: 约 290.62°
print(f"距离: {distance / 1000:.2f} 公里")  # 输出: 约 1076.06 公里

6.关键注意事项

  • ​椭球模型的选择:
    不同椭球模型(如 WGS84、GRS80)会影响计算结果精度。默认使用 WGS84,适用于 GPS 数据。

  • ​输入顺序:
    ​第一个点是起点,​第二个点是终点,顺序颠倒会导致方位角反转。

  • ​坐标范围:

    • 经度(lon)可以是 ​**-180 到 180** 或 ​0 到 360,但建议统一范围。
    • 纬度(lat)必须是 ​**-90 到 90**,超出范围会抛出异常。
  • ​重合点的处理:
    如果两点重合,distance 为 0,但方位角可能为 NaN(需代码容错)

7.总结

  • 功能:geod.inv 是地理空间分析的核心工具,用于计算两点间的方位角和测地距离。
  • ​适用场景:导航系统、路径规划、地理围栏、距离估算等。
  • ​精度保障:使用合适的椭球模型(如 WGS84)可确保高精度结果

相关文章:

  • RK3568使用gpio子系统完成led驱动程序编写
  • f103.delay,teitou
  • docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警
  • DevOps部署平台
  • 【数论2】
  • 【ArcGIS操作】ArcGIS 进行空间聚类分析
  • 全星研发管理APQP软件系统:驱动汽车产品研发全周期,打造高效合规的质量管理引擎
  • TDengine 中的关联查询
  • Java康威生命游戏(Conway‘s Game of Life)
  • opencv图像处理之指纹识别
  • Java并发编程笔记
  • unity3d端监听 uri scheme
  • 解决Docker端口映射后外网无法访问的问题
  • Leetcode-100 回溯法-单词搜索
  • c#中的virtual方法
  • redis错误分析 forceUnlock的问题说明
  • #基于Django实现机器学习医学指标概率预测网站
  • 双塔模型2之如何选择正确的正负样本
  • Matlab基础知识与常见操作【无痛入门】
  • GPT Workspace体验
  • 快速建网站软件/优化网站搜索排名
  • 如何架设php网站/杭州网站运营十年乐云seo
  • 不花钱怎么做网站运营/百度账号申请注册
  • 做期货到哪个网站看新闻/个人网站seo入门
  • 淘宝客网站需要多大主机/官网百度
  • wordpress 非插件代码高亮/seo优化外链平台