首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算网格数据的面积(以度为等距)

计算网格数据的面积(以度为等距)
EN

Stack Overflow用户
提问于 2017-01-24 11:12:17
回答 2查看 1.1K关注 0票数 0

我有一些网格数据(180纬度框和360经度框),这些数据可以在这里下载,其中包含海冰数据(0 =无冰,1=完整冰)。https://1drv.ms/u/s!ApWaJaYUUERKjqAP-3K48AuUAFgPXQ

我试着计算北极冰的范围,也就是说,如果网格盒超过15%的冰(0.15),那么网格盒被计算为覆盖的冰,网格盒的面积被添加到一个数组中。最后对总面积进行求和。我得到的值是16.08,这比我需要的要高得多(数据是2014年12月的,实际值在这里(v2.1.csv)应该是12.4ish)。

我知道,给定的分辨率会有差异(例如地形图边缘),但没有那么大。

我使用的代码如下:

代码语言:javascript
复制
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

任何帮助都非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-21 11:26:04

该守则没有任何问题;相反,差异是由于使用了陆地/海洋掩膜和插值。

票数 0
EN

Stack Overflow用户

发布于 2017-01-24 11:41:11

为什么不把整个冰面面积加起来,而不是把它增加到1呢?

代码语言:javascript
复制
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

产出:

代码语言:javascript
复制
12.7085786161
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41826750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档