pyproj:Python 坐标转换的标准接口
pyproj 在 GitHub 上已有 1,209 Star。它是 Python 访问 PROJ 库的接口,专门处理地图投影和坐标转换。
1、 这玩意儿是干嘛的
说穿了,pyproj 就是一个桥梁。PROJ 本身是用 C/C++ 写的地理坐标转换库,在 GIS 领域用了几十年,支撑了从 QGIS 到 PostGIS 在内的大量地理软件。pyproj 把它的能力包进 Python,让你用几行代码就能完成坐标系转换、地图投影这些本来很底层的事。
不管是把 WGS84 经纬度转成高斯投影平面坐标,还是处理 UTM 分带计算,或者在不同国家坐标系之间切换,pyproj 都能直接调用 PROJ 的转换引擎完成。它支持的坐标系覆盖 EPSG 标准库里的绝大多数条目。
2、 为什么要用它
做地理数据处理的人都清楚,坐标系是个雷区。同一个点,用不同坐标系表示,数值天差地别。PROJ 的版本升级、EPSG 编码变更、WKT 字符串解析,随便一个细节踩错,结果就差出几百米。
pyproj 把 PROJ 的版本管理、坐标参考系对象化、转换流水线这些复杂逻辑全部封装好了。你不用自己去链接 C 库、处理内存分配、追踪 EPSG 更新。安装完直接 import,创建 Transformer 对象就能开始转换。
72 位贡献者持续维护,GitHub Actions 跑全平台测试,Codecov 跟踪覆盖率,文档也分了 stable 和 latest 两个版本。对于生产环境来说,这些保障够用了。
3、 安装与使用
pip 直接装:
pip install pyproj
conda 用户:
conda install -c conda-forge pyproj
基础用法:
from pyproj import Transformer
transformer = Transformer.from_crs("EPSG:4326", "EPSG:32633", always_xy=True)
x, y = transformer.transform(12.0, 42.0)
这个例子把 WGS84 经纬度转换到了 UTM 33N 投影坐标。Transformer 会自动选择最优的转换路径,支持包括网格偏移文件在内的复杂转换。你也可以直接操作 CRS 对象,查询坐标系的名称、范围、轴顺序这些元数据。
4、 适合哪些人用
- 用 Python 处理地理空间数据的开发者
- 在搞遥感影像配准、GIS 分析的工程师
- 需要坐标转换但不想碰 C/C++ 的科研人员
- 在搭数据管线、需要把不同来源的数据统一到同一坐标系的团队
项目维护节奏稳定,社区响应及时。对于任何要在 Python 里处理坐标转换的场景,pyproj 基本是默认选项。