Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Cartopy绘制极地网格海冰浓度图_Python_Ice_Cartopy - Fatal编程技术网

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

Python 使用Cartopy绘制极地网格海冰浓度图,python,ice,cartopy,Python,Ice,Cartopy,我正试图从NSIDC绘制一些极地网格海冰浓度图。数据在极赤平投影和栅格中提供,示例文件(二进制、北极、25 km分辨率)可在以下位置下载: 当我使用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)

我正试图从NSIDC绘制一些极地网格海冰浓度图。数据在极赤平投影和栅格中提供,示例文件(二进制、北极、25 km分辨率)可在以下位置下载:

当我使用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绘制它时,它运行时没有任何错误,但只返回一条空的海岸线

import matplotlib.pyplot as plt
import cartopy.crs as 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 from Polar Stereographic Projection and 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())
有什么问题吗?如何显示我的冰浓度数据

我的Cartopy版本是0.12.0rc1

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

北半球栅格坐标

X(km)Y(km)纬度(deg)经度(deg)
-3850585030.98168.35角
3750585031.37102.34角
3750-5350 34.35 350.03拐角处
-3850-5350 33.92 279.26角
这是IPython笔记本:

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

  • 左上角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)
以下是完整的笔记本:

PS:再次查看自述文件,我发现NorthPolar不是正确的投影!这是proj4字符串:Proj.4投影:+Proj=stere+lat_0=90+lat_ts=70+lon_0=-45+k=1+x_0=0+y_0=0+a=6378273+b=636889.449+units=m+no_defs