Область маски за пределами импортированного шейп-файла (basemap/matplotlib)

Я наношу данные на базовую карту восточного побережья США и Канады через Matplotlib. В дополнение к базовому слою (график с заполненным контуром) я наложил шейп-файл этой области фокуса поверх данных, используя инструмент readshapefile в Matplotlib.

Мне интересно, как я могу замаскировать все данные с координатной сеткой за пределами шейп-файла. Я, очевидно, могу выполнить команду maskocean через Matplotlib, но я все равно останусь с заполненными контурами к западу от Святого Лаврентия. Кто-нибудь сейчас как это сделать? Мне не очень повезло с поиском в Интернете.

def make_map(lon,lat,param):
    fig, ax = plt.subplots()
    ax.axis('off')
    x1 = -83.
    x2 = -57.
    y1 = 37.
    y2 = 50.
    projection='merc'
    resolution='h'
    m = Basemap(projection=projection, llcrnrlat=y1, urcrnrlat=y2, llcrnrlon=x1,
                urcrnrlon=x2, resolution=resolution)
    x,y = m((lon-360.),lat)
    m.ax = ax
    my_cmap = cm.get_cmap('coolwarm')
    pp = m.contourf(x, y, param, 30, cmap=my_cmap, extend='both')  
    m.drawmapscale(-67, 39.5, -70, 43.5, 500, fontsize=8, barstyle='fancy') 
    return fig, m, x, y

def drawstates(ax, shapefile='../StateProv_UTMrp'):
        shp = m.readshapefile(shapefile, 'states',zorder = 1, drawbounds=True)
        for nshape, seg in enumerate(m.states):
            poly = Polygon(seg, facecolor='w',alpha=0.0, edgecolor='k')
            ax.add_patch(poly)

fig, m, x, y = make_map(lon, lat, param)
drawstates(m.ax)

person user2607622    schedule 17.05.2015    source источник


Ответы (1)


Я думаю, что эта статья, которую я только что нашел, может помочь вам. Но я не уверен, что это полный ответ.

http://basemaptutorial.readthedocs.org/en/latest/clip.html

person claude    schedule 26.05.2015