文章目录
- contextily:Python 地图可视化的底图利器
- 核心功能:获取瓦片并叠加
- 安装与依赖
- 适用场景
contextily:Python 地图可视化的底图利器
做地理数据可视化时,matplotlib 画出的地图往往是纯色块和线条,缺少真实地理环境的参照。contextily 是一个轻量级的 Python 包,专门解决这个问题。它能从互联网获取瓦片地图,作为底图叠加到你的 matplotlib 图表上,让地图看起来更直观。
这个项目托管在 geopandas 组织下,目前收获了 586 个 Star。体量不算大,但在地理信息圈子里口碑不错。
核心功能:获取瓦片并叠加
contextily 的主要能力可以概括为两点:获取瓦片地图、叠加到已有图表。
获取瓦片时,你不需要手动查找瓦片服务器的 URL。项目内置了 xyzservices 包的提供商列表,包含 OpenStreetMap、Stamen Design 的 Toner 和 Terrain 等多种风格。调用时直接写提供商名称即可,接口很简洁。
坐标系方面,contextily 支持 WGS84 和 Spheric Mercator 两种常用坐标系。这意味着大部分地理数据都能直接对接,不需要频繁做坐标转换。
叠加到 matplotlib 的过程也很简单。你先用 geopandas 或其他库画好基础地图,然后调用 contextily 的 add_basemap 函数,底图就会自动对齐到正确的位置。整个过程不需要手动处理投影和边界框。
除了可视化,contextily 还支持把瓦片地图写入磁盘。导出格式是标准的地理栅格文件,方便在其他 GIS 软件里复用。
安装与依赖
contextily 要求 Python 3.10 及以上版本。安装方式有两种,pip:
pip install contextily或者 conda:
conda install contextily依赖项包括 numpy、matplotlib、pillow、rasterio、requests、geopy、joblib、xyzservices 等。这些库在地理数据和图形处理领域都很常见,如果你已经在用 geopandas 生态,大部分依赖应该已经就位。
适用场景
contextily 的定位很明确,它不是完整的 GIS 工具,而是专注于"给地图加底图"这一件事。这个定位让它在特定场景下很有价值。
比如做城市数据分析时,你画了一组区域边界,但光凭边界很难判断这些区域在城市中的具体位置。加上 OpenStreetMap 的底图,空间关系立刻清晰起来。又比如在科研论文里需要展示采样点分布,带底图的图比纯色地图更容易让读者理解。
对于需要做报告、写论文、或者日常做地理数据探索的人来说,contextily 能省去手动下载和处理底图的时间。几行代码就能让地图从"能用"变成"好看"。
项目采用 BSD 协议开源,由社区志愿者维护。代码结构清晰,如果你对地理可视化感兴趣,也可以参与贡献。
协议开源,由社区志愿者维护。代码结构清晰,如果你对地理可视化感兴趣,也可以参与贡献。