python - Plot Polar Gridded Sea Ice Concentrations using Cartopy -


i trying make plots of polar gridded sea ice concentrations nsidc. data delivered in polar stereographic projection , grid, example file (binary,arctic,25 km resolution) can downloaded at: http://nsidc.org/data/nsidc-0081

when read data using numpy, , plot using matplotlib's imshow function, works.

import numpy np import matplotlib.pyplot plt  infile='c:\\nt_20150326_f17_nrt_n.bin' fr=open(infile,'rb') hdr=fr.read(300) ice=np.fromfile(fr,dtype=np.uint8) ice=ice.reshape(448,304) #convert fractional parameter range of 0.0 1.0 ice = ice/250. #mask land , missing values ice=np.ma.masked_greater(ice,1.0) fr.close() #show ice concentration plt.imshow(ice) 

when try plot using cartopy, runs without errors returns empty coastline.

import matplotlib.pyplot plt import cartopy.crs ccrs  fig=plt.figure(figsize=(3, 3)) ax = plt.axes(projection=ccrs.northpolarstereo()) ax.coastlines(resolution='110m',linewidth=0.5) ax.set_extent([-180,180,50,90],crs=ccrs.platecarree()) ax.gridlines() #set ice extent polar stereographic projection , grid document extent=[-9.97,168.35,30.98,34.35] ax.imshow(ice,cmap=plt.cm.blues, vmin=1,vmax=100,           extent=extent,transform=ccrs.platecarree()) 

anything wrong? how show ice concentration data?

my cartopy's version 0.12.0rc1.

below arctic polar stereographic grid document:

northern hemisphere grid coordinates

x (km)  y (km)  latitude (deg)  longitude (deg) -3850   5850    30.98   168.35  corner 3750    5850    31.37   102.34  corner 3750    -5350   34.35   350.03  corner -3850   -5350   33.92   279.26  corner 

here ipython notebook: http://nbviewer.ipython.org/github/xue1527/mywork/blob/master/plot%20arctic%20sea%20ice%20concentration.ipynb

when downloaded data found grid specifications:

  • upper left corner x coordinate: -3850000.0
  • upper left corner y coordinate: 5850000.0
  • lower right corner x coordinate: 3750000.0
  • lower right corner y coordinate: -5350000.0

with can create grid , use pcolormesh instead of imshow.

import numpy np dx = dy = 25000 x = np.arange(-3850000, +3750000, +dx) y = np.arange(+5850000, -5350000, -dy) 

here full notebook: http://nbviewer.ipython.org/gist/ocefpaf/47ef0c38a5a429704170


Comments

Popular posts from this blog

Payment information shows nothing in one page checkout page magento -

tcpdump - How to check if server received packet (acknowledged) -