In [1]:
import netCDF4

In [53]:
ds = netCDF4.Dataset("./hadslp2_ocn.nc")
print(ds.variables.keys())
v = ds.variables['SLP_OCEAN'][-1,:,:]
mask = v.mask
lat = ds.variables["LATITUDE"][:]
lon = ds.variables["LONGITUDE"][:]
print(ds.variables["SLP_OCEAN"].dimensions)
ds.close()
lon


[u'LONGITUDE', u'LATITUDE', u'TIME', u'SLP_OCEAN']
(u'TIME', u'LATITUDE', u'LONGITUDE')
Out[53]:
array([-180., -175., -170., -165., -160., -155., -150., -145., -140.,
       -135., -130., -125., -120., -115., -110., -105., -100.,  -95.,
        -90.,  -85.,  -80.,  -75.,  -70.,  -65.,  -60.,  -55.,  -50.,
        -45.,  -40.,  -35.,  -30.,  -25.,  -20.,  -15.,  -10.,   -5.,
          0.,    5.,   10.,   15.,   20.,   25.,   30.,   35.,   40.,
         45.,   50.,   55.,   60.,   65.,   70.,   75.,   80.,   85.,
         90.,   95.,  100.,  105.,  110.,  115.,  120.,  125.,  130.,
        135.,  140.,  145.,  150.,  155.,  160.,  165.,  170.,  175.])

In [54]:
lon0idx, =  np.nonzero(lon == 0)
lon0 = np.empty_like(lon)
p1, p2 = np.split(lon, lon0idx)
lon0[:] = np.mod(np.concatenate([p2,p1]), 360)
lon0
mask0 = np.empty_like(mask)
p1, p2 = np.split(mask, lon0idx, 1)
mask0[:] = np.concatenate([p2,p1], axis=1)

fig, axes = plt.subplots(1,4, figsize=(20,4))
axes[0].imshow(mask, origin='top')
axes[1].imshow(p2, origin='top')
axes[2].imshow(p1, origin='top')
axes[3].imshow(mask0, origin='top')


Out[54]:
<matplotlib.image.AxesImage at 0x988e290>

In [59]:
landmask = netCDF4.Dataset("landmask.nc", "w")
landmask.createDimension("lat", lat.shape[0])
landmask.createDimension("lon", lon.shape[0])

landmask.createVariable("lat", lat.dtype, ('lat',))[:] = lat
landmask.createVariable("lon", lon.dtype, ('lon',))[:] = lon0
landmask.createVariable("mask", "int", ("lat", "lon"))[:] = mask0
landmask.close()

In [60]:
ds = netCDF4.Dataset("landmask.nc")
print(ds.variables['mask'].dimensions)
plt.imshow(ds.variables["mask"][:], origin='top')

ds.close()


(u'lat', u'lon')

In [ ]: