You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2022新版Cartopy如何将img_tiles瓦片转换为灰度显示

新版Cartopy img_tiles灰度底图实现方案

问题根源

Cartopy 0.20及以上版本重构了ax.add_image()的参数校验逻辑,旧版本直接在add_image()中传入cmap参数的写法已被废弃。传入未被识别的参数会触发运行时异常,直接阻塞savefig()等后续流程,该问题和瓦片数据源无关。
所有瓦片渲染相关的样式参数(包括cmap、norm、透明度alpha等),新版需要直接绑定到瓦片实例的属性上,不能通过add_image()传参。

方案1:原生支持灰度输出的瓦片(以Stamen地形背景为例)

Stamen地形背景瓦片原生提供单通道灰度数据,初始化瓦片实例时指定拉取单通道格式,再给实例绑定灰度色带即可,无需向add_image()传额外参数:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.io.img_tiles as cimgt

fig = plt.figure(figsize=(10,7.5))
ax  = plt.axes(projection=ccrs.PlateCarree())

[lon0,lat0,lon1,lat1] = [102., 11., 107., 15.]
ax.set_extent([lon0, lon1, lat0, lat1])

# 初始化时指定拉取单通道灰度瓦片,给实例绑定灰度色带
stamen_terrain = cimgt.Stamen(desired_tile_form="L", style="terrain-background")
stamen_terrain.cmap = "gray"
ax.add_image(stamen_terrain, 8)

# 后续叠加洪涝观测数据、保存图片逻辑可正常运行
# plt.savefig("stamen_gray_terrain.png", dpi=300, bbox_inches="tight")
plt.show()

方案2:仅提供彩色资源的瓦片(以ESRI晕渲地形为例)

对于仅提供彩色瓦片的数据源,需要重写瓦片类的图像加载方法,在瓦片拉取完成后自动转换为单通道灰度格式,再绑定灰度色带:

from cartopy.io.img_tiles import GoogleTiles
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

class ShadedReliefESRI(GoogleTiles):
    # 重写图像加载方法,拉取后自动转灰度
    def get_image(self, tile):
        img = super().get_image(tile)
        return img.convert("L")
    
    # ESRI晕渲地形瓦片地址
    def _image_url(self, tile):
        x, y, z = tile
        url = ('https://server.arcgisonline.com/ArcGIS/rest/services/' \
               'World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}.jpg').format(
               z=z, y=y, x=x)
        return url

fig = plt.figure(figsize=(10,7.5))
ax  = plt.axes(projection=ccrs.PlateCarree())
ax.set_extent([102., 107., 11., 15.])

# 初始化瓦片实例,绑定灰度色带
esri_terrain = ShadedReliefESRI(desired_tile_form="L")
esri_terrain.cmap = "gray"
ax.add_image(esri_terrain, 8)

# 后续叠加洪涝数据、保存图片无异常
# plt.savefig("esri_gray_terrain.png", dpi=300, bbox_inches="tight")
plt.show()

提示:如果需要调整灰度底图的明暗对比度,可以在convert("L")后增加灰度拉伸逻辑,适配上层洪涝数据的显示效果。

内容的提问来源于stack exchange,提问作者JumperSnatcher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:06:31