我有一个包含9种不同颜色值(0-9)的地理位置,并希望在地图上显示它。我试图将它与matplotlib包中的底图一起使用。
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的颜色并添加国家边界?
答案 0 :(得分:4)
m.imshow(im, extent=extent, alpha=0.6)
答案 1 :(得分:3)
使用范围无法解决您的问题!它会产生一个更大的问题,因为它看起来还可以,但它是错误的。
该范围仅适用于圆柱投影和保持距离。它只是将图像线性调整到某个盒子!墨卡托投影不是线性的。
尝试使用投影'cyl'。所以,答案是:无法进行非线性变换。可能的解决方法是将图像坐标转换为新投影中的距离,然后将2d插值(例如matplotlib.tri)转换为一些新的矩形(距离)。