1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理

本文主要是介绍1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1km分辨率逐月降雨量和最高温度数据集(1901-2022)的下载可以参考我的另外一篇博客:

这里的温度和降雨数据集都是NC格式的,需要将其处理为tif格式,我采用的处理软件是MATLAB。

本篇博客以处理温度数据为例,下面是完整的处理代码,注意看代码中的注释。

clc
clear all
%% 批读取NC文件的准备工作
datadir = 'E:\GSH\1Km温度数据\1985-2017_3\'; %指定批量数据所在的文件夹
filelist = dir([datadir,'*.nc']);    %列出所有满足指定类型的文件
% a = filelist(1).name               %查看要读取的文件的编号
% b = filelist(2).name
k=length(filelist);
for i = 1:11 %依次读取并处理,按照文件夹内文件的顺序读取%% 批量读取NC文件ncFilePath = ['E:\GSH\1Km温度数据\1985-2017_3\',filelist(i).name]; %设定NC路径num_1 = filelist(i).name(1:8); %读取数据编号,以便于保存时以此编号储存tifnum_2=strcat('tmx_',num2str(str2num(num_1(5:8))+1 ));num_3=strcat('tmx_',num2str(str2num(num_1(5:8))+2 ));%% 读取变量值%根据ncdisp函数读取到的nc文件变量相应替换lon=ncread(ncFilePath,'lon');     %读取经度信息(范围、精度)lat=ncread(ncFilePath,'lat');      %读取维度信息time=ncread(ncFilePath,'time');         %读取时间序列pre=ncread(ncFilePath,'tmx');   %获取温度数据%一个文件包含三年数据,将这三年的数据单独导出time_1=time(1:12);time_2=time(13:24);time_3=time(25:36);pre_1=pre(:,:,1:12);pre_2=pre(:,:,13:24);pre_3=pre(:,:,25:36);sum_pre_1=sum(pre_1,3)/12;                %求第一年平均温度sum_pre_2=sum(pre_2,3)/12;                %求第二年平均温度sum_pre_3=sum(pre_3,3)/12;                %求第三年平均温度%% 存为tif格式%第一年data_1=rot90(sum_pre_1,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的R = georasterref('RasterSize', size(data_1),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_1,'.tif'],data_1,R);disp([num_1,'done'])%第二年data_2=rot90(sum_pre_2,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的R = georasterref('RasterSize', size(data_2),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_2,'.tif'],data_2,R);disp([num_2,'done'])%第三年data_3=rot90(sum_pre_3,1);   %逆时针旋转90°,不旋转的话最后的图像朝向是错的R = georasterref('RasterSize', size(data_3),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);geotiffwrite(['E:\GSH\1Km温度数据\1985-2017_3\',num_3,'.tif'],data_3,R);disp([num_3,'done'])end
disp('Done!')

这篇关于1km分辨率逐月降雨量和最高温度数据集(1901-2022)--数据处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/175508

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

MySQL重复数据处理的七种高效方法

《MySQL重复数据处理的七种高效方法》你是不是也曾遇到过这样的烦恼:明明系统测试时一切正常,上线后却频频出现重复数据,大批量导数据时,总有那么几条不听话的记录导致整个事务莫名回滚,今天,我就跟大家分... 目录1. 重复数据插入问题分析1.1 问题本质1.2 常见场景图2. 基础解决方案:使用异常捕获3.

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入