前言
该 MATLAB 代码用于从 GeoTIFF 文件中提取基于特定地理位置(经纬度)和日期的某个点的相关数据。代码首先读取一个包含事件数据(日期、经纬度)的 Excel 文件,然后根据日期和位置尝试从存储滑坡风险数据的 GeoTIFF 文件中提取相应的数值。为了加快数据提取过程,代码使用了并行处理。
一、基本说明
数据加载:从 Excel 文件中读取包含日期、经纬度的事件数据。
路径设置:指定 GeoTIFF 文件存储的文件夹路径。
GeoTIFF 数据提取:针对每个事件的日期和位置:
构建文件名并检查文件是否存在。
若文件存在,计算指定经纬度对应的行列索引并提取相应数值。
若坐标超出边界,则赋值为 NaN。
并行处理:使用 parfor 来加速处理每个日期-位置对。
结果存储:将提取的数值存储在数组 gpmresult 或 mswepresult 中。
该代码使得从大规模数据集中高效提取滑坡风险数据成为可能,并且具备处理缺失或越界数据的鲁棒性。
二、代码
% 清空环境、命令窗口,并关闭所有打开的图形窗口
clear all;
clc;
close all;
% 加载滑坡事件数据,包括日期、纬度和经度
data = readtable('E:\data.xlsx');
longitude = data{
:, 3}; % 提取经度数据
latitude = data{
:, 2}; % 提取纬度数据
dates = data{
:, 1}; % 提取日期,格式为 'yyyy/MM/dd'
% 设置 GeoTIFF 文件夹路径
tif_folder = 'E:\';
% 初始化结果数组
gpmresult = [];
% 使用并行处理遍历每个数据点
parfor i = 1:length(dates)
% 检查日期是单元格格式还是字符数组
if iscell(dates)
date_str = dates{
i};
else
date_str = dates(i, :);
end
% 将日期字符串转换为 datetime 对象
date_obj = datetime(date_s