如何使用imshow在地图上显示图像?

2024-10-01 09:38:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有9个不同颜色值(0-9)的geotif,想在地图上显示它。我试图将它与matplotlib包中的basemap一起使用。在

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

im = plt.imread('a.tif')
extent = [-18, 52, -38, 38] # [left, right, bottom, top]
m = Basemap(projection='merc', llcrnrlon=extent[0], urcrnrlon=extent[1], llcrnrlat=extent[2], urcrnrlat=extent[3], resolution='c')
m.drawcountries() 
plt.imshow(im, extent=extent, alpha=0.6)
plt.show()

我只得到黑白图像。当我取消对drawcountries()的注释时,我会看到来自tif的数据。在

如何在地图上绘制tif的颜色并添加国家边界?在


Tags: fromimportmatplotlib颜色地图pltextentmpl
2条回答

使用范围并不能解决您的问题!它造成了一个更大的问题,因为它看起来是好的,但它是错的。在

该范围仅适用于圆柱形投影和保持距离。它只是调整图像到某个框,线性!墨卡托投影不是线性的。在

尝试使用投影“cyl”。所以,答案是:没有办法进行非线性变换。可能的解决方法是将图像坐标转换为新投影中的距离,然后进行二维插值(地图库.tri例如)到一些新的矩形(距离)。在

m.imshow(im, extent=extent, alpha=0.6)

相关问题 更多 >