5

我有一个应用程序,我想在其中使用 Basemap 从 shapefile 中绘制县。绘制县域多边形是渲染中的瓶颈,因为我将绘制美国的同一区域(很多次),我宁愿不必绘制所有多边形。所以我想到了将县绘制到具有透明背景的图形上,使用 将轴复制到像素缓冲区,并在需要绘制县时copy_from_bbox()使用恢复缓冲区。restore_region()

基本代码如下:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

map = Basemap(...) # Create Basemap object

map.readshapefile("countyp020", 'counties', linewidth=0.5) # Draws the county lines
plt.gcf().patch.set_alpha(0.0)
plt.gca().patch.set_alpha(0.0)

# Copy to the pixel buffer (county_buffer is of type BufferRegion)
county_buffer = plt.gcf().canvas.copy_from_bbox(plt.gca().bbox)

plt.clf() # This line is problematic (see below)

# Plot my data here ...

# Restore the pixel buffer
plt.gcf().canvas.restore_region(county_buffer)
plt.gcf().canvas.blit(plt.gca().bbox) # Not sure if this line is necessary

plt.gcf().canvas.draw()

它就像一个魅力......除了我清除数字的那条线。清除渲染之间的图形显然也会清除 BufferRegion 对象,并且由于我更新了标题和颜色栏,我还想清除渲染之间的图形。

所以我的问题是有人知道清除数字并保持像素缓冲区完整的方法吗?我无法在 、 或 上找到太多文档BufferRegioncopy_from_bbox()因此restore_region()调试它有点困难。如果没有简单的方法解决它,那么有没有人知道另一种方法来做我想做的事情?

提前致谢!

4

0 回答 0