Cartopy:Python 画地图的工具,投影问题不用自己算了
Cartopy 在 GitHub 上目前有 1,604 Star。Star 数不算高,但这个库在气象和海洋数据领域几乎是标配。
SciTools 团队维护了这个项目,英国气象局(Met Office)也在参与开发和资金支持。BSD 协议开源,商业项目可自由集成。
1、为什么需要它
在 Python 里处理地理数据并画到地图上,一直是个麻烦事。
Matplotlib 本身不处理投影。给一组经纬度坐标,你要自己决定用什么投影、怎么映射到屏幕坐标。如果换一种投影,全部重算。更麻烦的是海岸线、国界这些底图数据,需要自己找、自己下载、自己解析格式。
Cartopy 把这套基础设施做好了。指定投影、添加地理特征、绘制数据层,三步完成。不需要自己处理投影公式,也不需要操心地理数据从哪里下载。
适合的使用场景很明确:手里有经纬度数据,想画到地图上,并且要保证投影正确。

2、核心功能拆解
投影定义是 Cartopy 最核心的部分。它用面向对象的方式封装了常见投影类型,包括墨卡托、兰勃特、极射赤面等等。每种投影的参数可以直接传入,不需要手动算变换矩阵。
坐标变换方面,点、线、面数据都可以在不同投影之间转换。比如数据源用的是 WGS84 经纬度,出图要用兰勃特投影,Cartopy 自动做插值和映射。这种变换过程封装在底层,调用方不需要理解投影算法的数学细节。
矢量数据处理是另一个亮点。通过集成的 Shapefile 和 Shapely 支持,可以直接加载 shapefile 格式的地理边界数据,减少数据预处理的工作量。加载国界、海岸线、河流等常见地理要素都在内置数据范围内,不需要额外寻找数据源。
3、实际效果

配合 Matplotlib 使用时,Cartopy 暴露的绘图接口和 Matplotlib 原生风格一致。学会 Matplotlib 基础用法后,切换到 Cartopy 几乎没有额外学习成本。
4、安装
通过 conda-forge 安装是最稳定的方式:
conda install cartopy
5、适合的使用场景
气象数据分析,包括温度场、气压场、风场的空间分布可视化。海洋学研究,比如洋流路径、海面温度分布。地理数据处理,涉及行政区划、人口密度、交通路网的空间展示。
如果你是做科学计算和地理信息相关的开发,Cartopy 值得放进工具集。一个库解决投影、变换、底图三个问题,省下的时间可以专注在数据分析本身。项目文档完善,社区活跃度稳定,遇到问题在 StackOverflow 或 Matplotlib Discourse 上都能找到讨论。
StackOverflow 或 Matplotlib Discourse 上都能找到讨论。
2万+

被折叠的 条评论
为什么被折叠?



