我有一些网格数据(180纬度框和360经度框),这些数据可以在这里下载,其中包含海冰数据(0 =无冰,1=完整冰)。https://1drv.ms/u/s!ApWaJaYUUERKjqAP-3K48AuUAFgPXQ
我试着计算北极冰的范围,也就是说,如果网格盒超过15%的冰(0.15),那么网格盒被计算为覆盖的冰,网格盒的面积被添加到一个数组中。最后对总面积进行求和。我得到的值是16.08,这比我需要的要高得多(数据是2014年12月的,实际值在这里(v2.1.csv)应该是12.4ish)。
我知道,给定的分辨率会有差异(例如地形图边缘),但没有那么大。
我使用的代码如下:
from netCDF4 import Dataset
import numpy as np
Data = Dataset('Ice.nc','r')
ICE = np.squeeze(np.squeeze(Data.variables['sic'][:]))
Lat = Data.variables['latitude'][:]
Lon = Data.variables['longitude'][:]
Ice_Exten = np.zeros((360,180))
for i in range(0,360):
for j in range(90,180): #just northern hemisphere
if ICE[j,i] > 0.15 and ICE[j,i] <= 1.0:
Ice_Exten[i,j] = 12321. * np.cos(np.radians(Lat[j]))
print np.sum(Ice_Exten)/1e6任何帮助都非常感谢!
发布于 2017-02-21 11:26:04
该守则没有任何问题;相反,差异是由于使用了陆地/海洋掩膜和插值。
发布于 2017-01-24 11:41:11
为什么不把整个冰面面积加起来,而不是把它增加到1呢?
from netCDF4 import Dataset
import numpy as np
Data = Dataset('Ice.nc','r')
ICE = np.squeeze(np.squeeze(Data.variables['sic'][:]))
Lat = Data.variables['latitude'][:]
Lon = Data.variables['longitude'][:]
Ice_Exten = np.zeros((360,180))
for i in range(0,360):
for j in range(90,180): #just northern hemisphere
if ICE[j,i] > 0.15 and ICE[j,i] <= 1.0:
Ice_Exten[i,j] = 12321. * np.cos(np.radians(j-90.)) * ICE[j,i]
print np.sum(Ice_Exten)/1e6产出:
12.7085786161https://stackoverflow.com/questions/41826750
复制相似问题