问题描述
最近我在python 3.8上更新了matplotlib 3.3.1。我使用cartopy版本0.18.0。在此版本中,背景图像插值似乎不再起作用。是否有人有解决方法/解决方案? 这是一个最小的可重现示例:
import matplotlib.pyplot as plt
import cartopy as ccrs
import cartopy.io.img_tiles as cimgt
fig,ax = plt.subplots(subplot_kw=dict(projection=ccrs.crs.PlateCarree()))
ax.set_extent([67,75,20,26])
ax.add_image(cimgt.GoogleTiles(),8,interpolation='spline36')
哪个抛出错误:
TypeError:出现了意外的关键字参数“插值”
解决方法
如果需要更高分辨率的图像,则需要增加scale
值。在您的代码中,您可以将8改为10作为新实验。
ax.add_image(cimgt.GoogleTiles(),10)
编辑1
由于使用与原始(crs.PlateCarree()
)不同的投影(crs.Mercator()
)会导致图像在渲染时发生重新投影,并导致图像质量不令人满意。而且这种类型的图像(具有锐利的边缘/线条,符号和文本)很难通过重新投影或插值获得良好的效果。让我们使用原始投影来绘制地图并调查结果。
import matplotlib.pyplot as plt
import cartopy as ccrs
import cartopy.io.img_tiles as cimgt
tiles = cimgt.GoogleTiles()
image_crs = tiles.crs
fig,ax = plt.subplots(figsize=(16,12),subplot_kw=dict(projection=image_crs))
ax.set_extent([67,75,20,26],crs=ccrs.crs.PlateCarree())
ax.add_image(cimgt.GoogleTiles(),8)
plt.show()
输出图: