2015-04-01 3 views
1

Я пытаюсь сделать некоторые участки с полярными сетчатыми концентрациями морского льда из NSIDC. Данные передаются в проекции Polar стереографичя и Grid, в качестве примера файл (двоичного, Арктика, 25 км разрешения) можно загрузить по адресу: http://nsidc.org/data/NSIDC-0081Земельный участок Заповедный морской лед Концентрации с использованием Cartopy

Когда я прочитал данные с помощью 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.

Ниже Арктический полярный Stereographic Сетка из документа:

Северное полушарие сетки Координаты

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

ответ

1

Когда я загружал данные, которые я нашел спецификации сетки:

  • Верхний левый угол Координата 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

+0

PS: Проверка файла README, который снова я вижу, что 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 = 6 356889.449 + units = m + no_defs – ocefpaf

Смежные вопросы