使用Cartopy绘制极地网格海冰浓度

2024-05-16 15:36:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从NSIDC绘制一些极地网格海冰浓度图。数据以极赤平投影和栅格的形式传送,示例文件(二进制、北极、25 km分辨率)可在以下网址下载: http://nsidc.org/data/NSIDC-0081

当我使用numpy读取数据,然后使用matplotlib的imshow函数绘制它时,它是有效的。在

import numpy as np
import matplotlib.pyplot as 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 to the fractional parameter range of 0.0 to 1.0
ice = ice/250.
#mask all land and missing values
ice=np.ma.masked_greater(ice,1.0)
fr.close()
#Show ice concentration
plt.imshow(ice)

当我试图用Cartopy绘制它时,它运行时没有任何错误,但只返回一条空的海岸线。在

^{pr2}$

有什么不对劲吗?如何显示我的冰浓度数据?在

我的漫画版本是0.12.0rc1。在

以下是文件中的北极极赤平极坐标网格:

北半球网格坐标

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

这是IPython笔记本: http://nbviewer.ipython.org/github/xue1527/MyWork/blob/master/Plot%20Arctic%20Sea%20Ice%20Concentration.ipynb


Tags: 文件数据orgnumpyhttp网格matplotlibnp
1条回答
网友
1楼 · 发布于 2024-05-16 15:36:32

当我下载数据时,我发现了网格规范:

  • 左上角X坐标:-3850000.0
  • 左上角Y坐标:5850000.0
  • 右下角X坐标:3750000.0
  • 右下角Y坐标:-5350000.0

这样,您就可以创建一个网格,并使用pcolormesh而不是imshow。在

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

这是完整的笔记本: http://nbviewer.ipython.org/gist/ocefpaf/47ef0c38a5a429704170

相关问题 更多 >