2

我有空气温度的网格数据,空间分辨率为 1.25 x 1.25 度(经度纬度)。数据覆盖北半球,第一纬度为90度。

我需要计算每个网格单元的面积,我的方法是从纬度带上计算。

另一种方法是直接从 netCDF 文件中读取每个网格单元的区域。这在 MATLAB 中可能吗?

这是我尝试过的代码;我不确定这是否正确。

i=1:72;
j=2:73;
R=6371; % Earth's radius in km^2
deltalon=1.25; 
area=(pi/180)*R^2*((sind(latitude(i)) - sind(latitude(j)))*deltalon); % Area of each grid cell in km^2
4

1 回答 1

6

如果您不介意非 matlab 解决方案,最简单的方法可能是从命令行简单地使用 cdo:

cdo gridarea yourdata.nc gridarea.nc 

netcdf 文件 gridarea.nc 然后将包含 m**2 中每个单元格的 gridarea。然后,您可以将其读入您的 matlab 程序。

在 ubuntu cdo 可以安装

sudo apt-get install cdo 

文档在这里:https ://code.mpimet.mpg.de/projects/cdo/

于 2019-03-02T20:28:51.890 回答