matlab读取逐日的1km分辨率中国大陆地区的土壤水数据,并汇总至逐月分辨率

1.前言

ESSD一篇文章介绍了逐日的土壤水数据:

ESSD - A 1 km daily soil moisture dataset over China using in situ measurement and machine learning

图片来源:Li et al., 2022, ESSD

中国大陆地区的土壤水的数据下载地址:

国家青藏高原科学数据中心

该数据集提供了中国范围1km高质量的土壤湿度数据集-SMCI1.0(Soil Moisture of China by in situ data, version 1.0),SMCI1.0是包含2000-2022年、日尺度、以10厘米为间隔10层深度(10-100cm)的高时空分辨率土壤湿度,数据单位为0.001m³/m³,缺失值为-999,投影为WGS1984。该数据集是以中国气象局提供的1,648个站点观测10层土壤湿度作为基准,使用ERA5_Land气象强迫数据、叶面积指数(LAI)、土地覆盖类型(Landtypes)、地形(DEM)和土壤特性(Soil properties)作为协变量,通过机器学习方式获得。本研究进行了两组实验以验证SMCI1.0的精度,时间尺度上:ubRMSE为0.041-0.052,R为0.883-0.919;空间尺度上:ubRMSE为0.045-0.051,R为0.866-0.893。 由于SMCI1.0是基于实地观测的土壤湿度,它可以作为现有基于模型和卫星数据集的有效补充。该数据产品可用于各种水文、气象、生态分析和建模,尤其在需要高质量、高分辨率土壤湿度的应用上至关重要。有关数据集的引用及详细描述,请阅读说明文档。为便于使用,本研究提供了两种不同分辨率的版本:30 秒(~1km)和0.1度(~9km)。

针对于数据说明中关于单位的问题,chatgpt是这样解释的:

可以使用Filezilla下载,本专栏以9 km逐日分辨率的土壤水数据为例,介绍如何使用matlab批量读取并合并成月分辨率。

2.数据读取

在Matlab中,批量读取数据:

%% uni-stuttgart.de
% Chistrong Wen
% 2024-10-30
address = '/Volumes/Expansion/All_data/SWOT/';
GFA = dir(fullfile(address,'*nc'));
k=length(GFA);
ncdisp([address,GFA(11).name])
lon = ncread([address,GFA(1).name],'lon');
lat = ncread([address,GFA(1).name],'lat');
[lon,lat] = meshgrid(lon,lat);in      = [365,365,366,365,365,365,366,365,365,365,366];
mm_ping = [31,28,31,30,31,30,31,31,30,31,30,31];
mm_run  = [31,29,31,30,31,30,31,31,30,31,30,31];for i = 1:kB = ncread(GFA(i).name,'SMCI');for j = 1:in(i)AA(:,:,j) = double(B(:,:,j)');endSMCI_soil_dd(i).rg = AA;%% data = AA;monthly_avg = zeros(360,630,12);start_idx = 1;for month = 1:12if(in(i)==366)days = mm_run(month);elsedays = mm_ping(month);end  monthly_data = data(:,:,start_idx:start_idx + days - 1);monthly_avg(:,:,month) = mean(monthly_data,3);start_idx = start_idx + days;endSMCI_soil_mm(i).rg = monthly_avg;disp(i)
end
total_smci = cat(3,SMCI_soil_mm(:).rg);for i = 2010:2020for j = 1:12tt(i,j) = time_transfer([i,j,15],1);end
end
tt1 = tt(2010:end,:)';
tt2 = tt1(:)';
O.lon = lon;
O.lat = lat;
O.rg  = total_smci;
O.tt  = tt2;area_ind_csr=inpolygon(O.lon,O.lat,nc_bound(:,1),nc_bound(:,2));
area_scale=cal_grid_region(O);
for ii=1:size(O.rg,3)soil_smci_rg(ii)=nansum(nansum((O.rg(:,:,ii).*area_ind_csr.*area_scale))/nansum(nansum(area_ind_csr.*area_scale)));soil_smci_tt(ii)=O.tt(ii);disp(ii)
end
plot(soil_smci_tt,soil_smci_rg-mean(soil_smci_rg))

代码要点:

(1)批量读取

address = '/Volumes/Expansion/All_data/SWOT/';

GFA = dir(fullfile(address,'*nc'));

k=length(GFA);

(2)天数据合并成月数据

in      = [365,365,366,365,365,365,366,365,365,365,366];

mm_ping = [31,28,31,30,31,30,31,31,30,31,30,31];

mm_run  = [31,29,31,30,31,30,31,31,30,31,30,31];

for i = 1:k

    B = ncread(GFA(i).name,'SMCI');

    for j = 1:in(i)

        AA(:,:,j) = double(B(:,:,j)');

    end

    SMCI_soil_dd(i).rg = AA;

    %%

    data = AA;

    monthly_avg = zeros(360,630,12);

    start_idx = 1;

    for month = 1:12

        if(in(i)==366)

            days = mm_run(month);

        else

            days = mm_ping(month);

        end

        monthly_data = data(:,:,start_idx:start_idx + days - 1);

        monthly_avg(:,:,month) = mean(monthly_data,3);

        start_idx = start_idx + days;

    end

    SMCI_soil_mm(i).rg = monthly_avg;

    disp(i)

end

(3)结构体数据整合

total_smci = cat(3,SMCI_soil_mm(:).rg);

3.结果

(1)空间分辨率

(2)时间序列

参考资料:

LI, Qingliang, et al. A 1 km daily soil moisture dataset over China using in situ measurement and machine learning. Earth System Science Data, 2022, 14. Jg., Nr. 12, S. 5267-5286.

❤️欢迎点赞收藏❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/857.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

用Pyhon写一款简单的益智类小游戏——2048

文字版——代码及讲解 代码—— import random# 初始化游戏棋盘 def init_board():return [[0] * 4 for _ in range(4)]# 在棋盘上随机生成一个2或4 def add_new_tile(board):empty_cells [(i, j) for i in range(4) for j in range(4) if board[i][j] 0]if empty_cells:i,…

C++类和对象上

1. 类的定义 1.1 类定义格式 • class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。…

目标追踪DeepSort

一、卡尔曼滤波 你可以在任何对某个动态系统有 “不确定信息” 的地方使用卡尔曼滤波器,并且可以对系统下一步的行为做出 “有根据的猜测”。即使混乱的现实干扰了你所猜测的干净运动,卡尔曼滤波器通常也能很好地确定实际发生了什么。它还可以利用你可能…

Python爬虫:揭开淘宝商品描述的神秘面纱

在这个信息爆炸的时代,我们每天都在和时间赛跑。作为一名Python开发者,你是否曾梦想拥有超能力,能够瞬间揭开淘宝商品描述的神秘面纱?今天,就让我们一起化身为代码界的“福尔摩斯”,使用Python爬虫技术&…

消息队列面试——打破沙锅问到底

消息队列的面试连环炮 前言 你用过消息队列么?说说你们项目里是怎么用消息队列的? 我们有一个订单系统,订单系统会每次下一个新订单的时候,就会发送一条消息到ActiveMQ里面去,后台有一个库存系统,负责获取…

HTMLCSS:3D旋转动画机器人摄像头

效果演示 创建了一个3D机器人摄像头效果。 HTML <div class"modelViewPort"><div class"eva"><div class"head"><div class"eyeChamber"><div class"eye"></div><div class&quo…

docker占用磁盘过多问题

我在windows系统上用docker&#xff0c;安装在C盘环境下&#xff0c;我发现C盘占用了大量的空间&#xff0c;查找后发现是docker的映像文件占用的&#xff0c;于是开始清理&#xff0c;中间还踩个坑&#xff0c;记录一下&#xff0c;下次需要的时候方便找。 踩坑 我本想移动映…

Flink本地模式安装详解

1. 概述 Apache Flink 支持多种安装和运行模式&#xff0c;主要可以分为以下几种&#xff1a; Local&#xff08;本地&#xff09;模式&#xff1a; 这种模式主要用于学习和测试&#xff0c;所有的 Flink 组件都会在同一个 JVM 进程中运行。这种方式非常适合初学者了解 Flink…

Uniapp 实现app自动检测更新/自动更新功能

实现步骤 配置 manifest.json 在 manifest.json 中设置应用的基本信息&#xff0c;包括 versionName 和 versionCode。 一般默认0.0.1&#xff0c;1. 服务器端接口开发 提供一个 API 接口&#xff0c;返回应用的最新版本信息&#xff0c;版本号、下载链接。客户端检测更新 使…

java访问华为网管软件iMaster NCE的北向接口

最近做的一个项目&#xff0c;需要读取华为一个叫iMaster NCE的网管软件的北向接口。这个iMaster NCE&#xff08;以下简称NCE&#xff09;用于管理项目的整个网络&#xff0c;尤其是光网络。业主要求我们访问该软件提供的对外接口&#xff0c;读取一些网络信息&#xff0c;比如…

docker基础篇(尚硅谷)

学习链接 docker1️⃣基础篇&#xff08;零基小白&#xff09; - 语雀文档 (即本篇) Docker与微服务实战&#xff08;基础篇&#xff09; Docker与微服务实战&#xff08;高级篇&#xff09;- 【上】 Docker与微服务实战&#xff08;高级篇&#xff09;- 【下】 文章目录 学习…

华为通过FTP进行文件操作示例

小知学网络-CSDN博客 目录 通过FTP进行文件操作简介 配置注意事项 组网需求 配置思路 操作步骤 配置文件 组网图形 图1 通过FTP进行文件操作组网图 通过FTP进行文件操作简介配置注意事项组网需求配置思路操作步骤配置文件相关信息 通过FTP进行文件操作简介 配置设备作…

嵌入式开发教程之Linux下IO流

一、文件的概念和类型 文件基础&#xff1a; 概念&#xff1a;一组相关数据的有序集合&#xff0c;文件名、路径。通过文件名指定访问什么文件。 文件类型&#xff1a; 常规文件 r&#xff0c;分为&#xff1a;普通文件&#xff0c;文本文件&#xff08;可见字符&#xff09…

Rust 力扣 - 48. 旋转图像

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以将原矩阵进行水平翻转&#xff0c;然后在沿主对角线进行翻转&#xff0c;就能完成原矩阵沿顺时针方向旋转90o的变换 题解代码 impl Solution {pub fn rotate(matrix: &mut Vec<Vec<i32>&…

MySQL 8.0在windows环境安装及配置

文章目录 一、下载二、安装三、配置环境变量 一、下载 1、先彻底卸载之前的MySQL&#xff0c;并清理其 残留文件 。 2、登录网址https://www.mysql.com/ 3、点击网址左下角“中文”按钮&#xff0c;切换到中文界面 4、点击网页上方的“下载”按钮&#xff0c;然后点击网页…

Sleep_Monitor 2.7.9.2 | 您的个人睡眠助手,帮助您睡得更好

晚上入睡困难吗&#xff1f;Sleep Monitor 是您的睡眠专家&#xff01;这款应用程序可以追踪并记录您的睡眠周期&#xff0c;让您早晨醒来时精神焕发&#xff0c;准备好迎接新的一天。Sleep Monitor 是一个功能丰富的程序&#xff0c;让睡眠变得更加愉快。通过追踪您的打鼾、梦…

基于SSM+微信小程序的汽车维修管理系统(汽车5)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM微信小程序的汽车维修管理系统实现了三个角色&#xff1a;管理员、员工、用户。 1、管理员实现了首页、管理员管理员、员工管理、用户管理、车辆信息管理、配件管理等 2、员工实…

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC

『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 文章目录 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC1. 介绍 二. 参考文献 一. 『Linux学习笔记』如何在 Ubuntu 22.04 上安装和配置 VNC 如何在 Ubuntu 22.04 上安装和配置 VNChttps://hub.docker.c…

jvm学习笔记-轻量级锁内存模型

一&#xff0c;轻量级锁 LockRecord的那个第一个成员变量是拷贝对应锁定了的java对象资源的MarkWord&#xff0c;Lock Record有一个Ptr指针刚开始指向自己&#xff0c;后面这个指针存储在锁定资源的java对象的markword中&#xff0c;后续可以通过java对象的MarkWord快速定位到…

在Windows 10上安装Tesseract并用pytesseract运行OCR任务

诸神缄默不语-个人CSDN博文目录 文章目录 1. Tesseract安装2. pytesseract的安装与使用3. 手动安装其他语种并在pytesseract中调用4. 本文撰写过程中参考的其他网络资料 1. Tesseract安装 Tesseract官方GitHub项目链接&#xff1a;https://github.com/tesseract-ocr/tesseract…