51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Python pyproj 实现地理坐标转换

本文记录使用 Python 库 pyproj 实现地理坐标转换的流程。

简介 {#简介}

pyproj是一个Python库,用于执行坐标转换和投影变换。它基于Proj库,后者是一个C库,用于处理地图投影和坐标变换。pyproj提供了Python语言的接口,使得用户可以方便地使用这些功能。

坐标转换在地理信息系统(GIS)、地图制作、卫星导航、地震勘探以及许多其他科学和工程领域中都是基本需求。地球上的点的位置通常用一系列的数对来表示,这些数对称为坐标,可以是笛卡尔坐标、经纬度或其他形式。由于各种原因(如地图制作、技术限制等),这些坐标可能需要从一个系统转换到另一个系统。pyproj库正是用来执行这些转换的。

以下是pyproj的一些关键特点:

  1. 坐标系统支持广泛pyproj支持大量的坐标系统,包括各种国际和区域标准,如EPSG、ESRI、OGC等。
  2. 灵活性:它允许用户指定任意的源和目标坐标系统,以及相关的参数。
  3. 高性能 :由于底层的Proj库是用C语言编写的,pyproj在执行坐标变换时提供了较好的性能。
  4. 易用性pyproj的API设计简单直观,使得用户可以轻松地进行坐标变换和投影操作。
  5. 社区支持pyproj有一个活跃的社区,不断更新和改进库的功能。
  6. 跨平台pyproj可以在各种操作系统上运行,包括Windows、macOS和Linux。

Git 仓库:https://github.com/pyproj4/pyproj?tab=readme-ov-file

官方文档:https://pyproj4.github.io/pyproj/stable/

安装方法 {#安装方法}

地理坐标转换 {#地理坐标转换}

pyproj 开发了很多 API ,这里简单介绍常用的地理坐标转换使用方法。

示例数据 {#示例数据}

地表上中国境内一点:

  • 4538 坐标系下: (X, Y) = (548888, 4940000)
  • 4326 坐标系下:(lat, lon) = (44.59390182452887, 87.6157036862893)

Pyproj1 {#Pyproj1}

Pyproj2 {#Pyproj2}

上代码

两种实现比较 {#两种实现比较}

当前网上资料大多数以 pyoroj1 的实现方法为主,但是事实上 pyproj1 相比 pyproj2 速度慢很多

耗时对比:

输出结果:

差了不是一点半点 ...

官方建议 {#官方建议}

官方链接:https://pyproj4.github.io/pyproj/stable/gotchas.html#upgrading-to-pyproj-2-from-pyproj-1

Upgrading to pyproj 2 from pyproj 1

We recommended using the pyproj.transformer.Transformer and pyproj.crs.CRS in place of the pyproj.Proj and pyproj.transformer.transform().

pyproj 1 style:

pyproj 2 style:

结论 {#结论}

无脑用 pyproj2 就完了。

参考资料 {#参考资料}



文章链接:
https://www.zywvvd.com/notes/coding/python/pyproj/pyproj/

赞(0)
未经允许不得转载:工具盒子 » Python pyproj 实现地理坐标转换