PNG通过imshow叠加在底图上

时间:2015-06-07 02:18:05

标签: python matplotlib imshow matplotlib-basemap

我正在尝试将地理空间掩码的.png文件覆盖在通过matplotlib创建的底图上。掩码应该覆盖底图中我正在研究的焦点区域的导入shapefile之外的所有内容。它确实覆盖了我的焦点区域之外的东西,但是...当我尝试在底图上覆盖蒙版并打开状态,海岸和国家边界来测试我的准确性时,蒙版和它的边界不匹配基地,我不太清楚为什么。我使用了extent和zorder参数,但问题似乎并不在于这些关键字参数。

我最初通过导出图形的.png(alpha = 1.0)和完全相同的参数(纬度/经度边界等)创建了蒙版,然后使用GIMP使shapefile中包含的部分透明。

enter image description here

def makeBasemap(lon, lat, param):
    fig, ax = plt.subplots()
    ax.set_position([0.0, 0.0, 1.0, 1.0])
    ax.axis('off')
    llcrnrlon = 278.
    llcrnrlat = 37.
    urcrnrlon = 307.
    urcrnrlat = 50.
    m = Basemap(resolution = 'i', projection = 'lcc', 
            lat_0 = 10., lon_0 = 291.5, llcrnrlon = llcrnrlon, 
            llcrnrlat = llcrnrlat,
            urcrnrlon = urcrnrlon, urcrnrlat = urcrnrlat)
    m.ax = ax
    x,y = m((lon-360.),lat)
    pcmap = cm.get_cmap('coolwarm')
    pp = m.contourf(x, y, param, 100, cmap=pcmap, extend='both')
    m.drawcoastlines()
    m.drawcountries()
    m.drawstates()
    im = m.imshow(plt.imread('nafsemask.png'), zorder = 10, 
              origin = 'upper', extent=[x.min(), x.max(), y.min(), y.max()])
    return fig, m, x, y

fig, m, x, y = makeBasemap(lon, lat, param)

0 个答案:

没有答案