【问题标题】:how to display a image over a map with imshow?如何使用 imshow 在地图上显示图像?
【发布时间】:2015-02-01 05:58:40
【问题描述】:

我有一个具有 9 种不同颜色值 (0-9) 的 geotif,并希望在地图上显示它。我正在尝试将它与 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 的颜色并添加国家边界?

【问题讨论】:

  • 我认为你应该使用m.imshow(im, extent=extent, alpha=0.6)
  • 不错。我想这就是我一直在寻找的。谢谢!

标签: python matplotlib matplotlib-basemap


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:
    m.imshow(im, extent=extent, alpha=0.6)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 2019-08-12
      • 2014-04-21
      • 2017-11-30
      相关资源
      最近更新 更多