06 - gldas水文模型数据处理 - 下载、matlab读取

gldas水文模型数据处理 - 下载、matlab读取

  • 0.引言
  • 1.GLDAS水文数据介绍
  • 2.GLDAS数据下载
  • 3.GLDAS数据读取的matlab程序

    0.引言

       根据水量平衡方程,陆地水储量变化( Δ t w s \Delta tws Δtws)主要受土壤水( Δ s m s \Delta sms Δsms)、地表水( Δ s w s \Delta sws Δsws)和地下水( Δ g w s \Delta gws Δgws)储量变化的共同影响,其中地表水储量主要由河流、湖泊、雪水当量( s w e swe swe)和植被冠层水( c w s cws cws)等组成。GRACE反演的区域陆地质量变化主要由水循环引起的,所以GRACE观测信号中陆地水储量变化信号应该是占主要地位的。在研究区域地下水储量变化时就要考虑从陆地水储量变化信号中去除地表水和土壤水的影响,这就要用到水文模型数据了。

    Δ t w s = Δ s m s + Δ s w s + Δ g w s \Delta tws = \Delta sms + \Delta sws + \Delta gws Δtws=Δsms+Δsws+Δgws

       目前可见的几种水文模型主要包括GLDAS、CPC、WGHM。其中GLDAS水文模型数据应用最为广泛,它具备 易获取、具有较长的时间连续性的特点。下面对GLDAS水文模型数据进行简单介绍。

    1.GLDAS水文数据介绍

    描述
    GLDAS水文模型全称Global Land Data Assimilation Systems
    数据生产单位由美国的国家宇航局戈达德空间飞行中心(NASA)和美国国家环境预报中心(NCEP)联合建立的
    原理通过实时采集卫星遥感观测数据与地表观测数据,调用CLM、NOAH 和 Mosaic 三个陆面模式及 VIC 水文模型,生成全球的地表状态变量和通量数据,如土壤温度、湿度、蒸发量、积雪、气压风速等
    数据分辨率空间分辨率: 1deg、0.25deg

    时间分辨率:3 hours、1 month

    覆盖范围空间范围:[-180.0,180.0,-60.0,90.0]

    时间范围: [1948-01-01 ,今]

    数据下载网站 https://ldas.gsfc.nasa.gov/gldas
    主要字段净长波辐射、净短波辐射通量、潜热通量、感热通量、降雪速率、降雨速率、融雪量、积雪深度水当量、平均地表温度、表面土壤水分、根区土壤水分、裸土直接蒸发量、总降水量、比湿、冠层水分蒸散发、风速、雪深等33个参数

    2.GLDAS数据下载

       1 点击👇进入数据搜索界面;

       2 在搜索框输入GLDAS NOAH,然后在图示框选区域进行筛选,选择满足自己分辨率的数据,这里🎈选择的是时间分辨率为1月、空间分辨率为1deg的数据;

       3 直接点击需要的数据,确认信息,然后点击图示区域进入数据获取界面;

       4 选择数据参数可按图示勾选,根据需要选择研究区域、数据获取时段、数据格式,然后点击Get_Data;

       5 进入到下面界面有两种方式获取到全部数据,第一种是点击每一个*.nc4文件进行下载,数据不太多的时候可以一个一个点😀,第二种是通过Wget批量下载工具进行下载,此方法要获取数据的列表文件,如下图。当然两种下载方式都需要有Earthdata的账号才行。🎈这里使用Wget工具 进行下载。

      6 调用Wget程序下载全部数据。

    下载数据的wget语法

    1 cd path %进入目标路径

    2 wget --load-cookies E:\gldas.urs_cookies --save-cookies E:\gldas.urs_cookies --auth-no-challenge=on --keep-session-cookies --user=用户名 --password=密码 --content-disposition -nc -i subset_GLDAS_NOAH10_M_2.1_20240203_084819_.txt %执行批量运行命令进行下载

       7 待执行结束,Gldas数据就下载到了。

    3.GLDAS数据读取的matlab程序

       利用下面程序可以提取四层土壤水、雪水当量、树灌水的总和。

    clc; clear; %清空
    filepath='GLDAS_NOAH';
    dirOutput=dir(fullfile(filepath,'*.nc4'));
    Len = length(dirOutput);
    WH=zeros(360,150);
    for i=1:Len
        ncFilePath=strcat(filepath,'\',dirOutput(i).name);
        lon = ncread(ncFilePath,'lon');
        lat = ncread(ncFilePath,'lat');
        
        SoilMoi0_10cm_inst = ncread(ncFilePath,'SoilMoi0_10cm_inst');
        SoilMoi10_40cm_inst = ncread(ncFilePath,'SoilMoi10_40cm_inst');
        SoilMoi40_100cm_inst = ncread(ncFilePath,'SoilMoi40_100cm_inst');
        SoilMoi100_200cm_inst = ncread(ncFilePath,'SoilMoi100_200cm_inst');
        CanopInt_inst = ncread(ncFilePath,'CanopInt_inst');
        SWE_inst=ncread(ncFilePath,'SWE_inst');
        %
        SoilMoi0_10cm_inst(isnan(SoilMoi0_10cm_inst))=0;   
        SoilMoi10_40cm_inst(isnan(SoilMoi10_40cm_inst))=0; 
        SoilMoi40_100cm_inst(isnan(SoilMoi40_100cm_inst))=0;  
        SoilMoi100_200cm_inst(isnan(SoilMoi100_200cm_inst))=0;  
        CanopInt_inst(isnan(CanopInt_inst))=0;        
        SWE_inst(isnan(SWE_inst))=0;         
    	SoilMoi(:,:)=SoilMoi0_10cm_inst(:,:)+SoilMoi10_40cm_inst(:,:)+SoilMoi40_100cm_inst(:,:)+SoilMoi100_200cm_inst(:,:);
        WH(:,:)=(SoilMoi(:,:)+SWE_inst(:,:)+CanopInt_inst(:,:)); 
    end