Python 2.7 面具上没有海洋,也没有数据的马赛克人

Python 2.7 面具上没有海洋,也没有数据的马赛克人,python-2.7,matplotlib-basemap,Python 2.7,Matplotlib Basemap,我想根据我的netcdf文件绘制南极洲的表面高程,但掩盖了海洋。因此,我用了“马斯科齐人”。然而,当使用它时,所有东西都是白色的。如果我看一下制作的面具,到处都写着“真”,因此它无法识别海洋的表面。此外,创建的与陆地/海洋遮罩关联的阵列为空。我不明白发生了什么事。我尝试过其他的底图投影,但问题仍然是一样的。我还使用投影坐标 我用drawlsmask做了测试: >我已经在180°处填满空白: var=f(var,longitude=(0,360,'cc')) 然而,我仍然无法掩盖海洋:( 有人

我想根据我的netcdf文件绘制南极洲的表面高程,但掩盖了海洋。因此,我用了“马斯科齐人”。然而,当使用它时,所有东西都是白色的。如果我看一下制作的面具,到处都写着“真”,因此它无法识别海洋的表面。此外,创建的与陆地/海洋遮罩关联的阵列为空。我不明白发生了什么事。我尝试过其他的底图投影,但问题仍然是一样的。我还使用投影坐标

我用drawlsmask做了测试:

<不使用Mask海洋,Lon=180°的空白空间(我还有另一个问题!)被指定的颜色填充。
  • 使用马斯科齐人,它正确地填满了陆地和海洋
  • 最后,我遇到的最后一个问题是,在lon=180°时,仍然存在一个平淡的空间(一条线)

    我希望有人能帮助我,并提前感谢那些愿意帮助我的人

    这是我的密码:

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import numpy as np
    import cdms2 as cdms
    import cdtime
    
    from mpl_toolkits.basemap import Basemap,shiftgrid,maskoceans
    
    import matplotlib.pyplot as plt
    
    ##################################################
    
    path='/home/dryas/Sentia/data_ECHAM/T106.surf_height.nc'
    var='geosp'
    
    tstart=cdtime.comptime(1960,1,1,0,1,0)
    tstop=cdtime.comptime(2013,1,1,23,59)
    
    #Extraction
    f=cdms.open(path)
    var=f(var)
    f.close
    
    lat=var.getLatitude() 
    lon=var.getLongitude()
    
    timax=var.getTime()
    timax.getBounds()
    timax.asComponentTime()
    var=var(time=(tstart,tstop))
    var=var[0,:,:]
    var=var.filled()
    
    #Map
    fig=plt.figure()
    
    m=Basemap(projection='spstere',boundinglat=-60,lon_0=-180,resolution='l')
    
    lons,lats=np.meshgrid(lon,lat)
    x,y=m(lons,lats)
    
    mdata=maskoceans(x,y,var,resolution='h',grid=1.25,inlands=True)
    cs=m.contourf(x,y,mdata)
    
    cbar=m.colorbar(cs,location='right')
    cbar.set_label('surface elevation (m)')
    
    m.drawcoastlines()
    m.drawmapboundary()
    
    m.drawparallels(np.arange(-90.,90.,10.),labels=[1,0,0,0],fontsize=10)
    m.drawmeridians(np.arange(-180,180,30.),labels=[0,0,0,1],fontsize=10)
    
    plt.title('Surface Elevation')
    plt.show()
    

    < P> >我已经在180°处填满空白:

    var=f(var,longitude=(0,360,'cc'))
    
    然而,我仍然无法掩盖海洋:(

    有人帮忙吗


    < Stuna

    < P>,我已经在180°的空白处填满:

    var=f(var,longitude=(0,360,'cc'))
    
    然而,我仍然无法掩盖海洋:(

    有人帮忙吗


    Sentia

    我已经解决了maskoceans的问题:


    我把x,y坐标放在了马斯科齐人而不是拉特-朗斯人的坐标中。现在它工作了=)

    我已经解决了马斯科齐人的问题:

    我把x,y坐标用马斯克塞恩坐标代替了拉特-朗斯坐标。现在它可以工作了=)