背景图像插值与Caryopy

问题描述

最近我在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()

输出图:

rajkot

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...