Matlab基于经纬度点并行提取指定日期的tiff栅格位置的值
文章目录
- 前言
- 一、基本说明
- 二、代码
前言
该 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};elsedate_str = dates(i, :);end% 将日期字符串转换为 datetime 对象date_obj = datetime(date_str, 'InputFormat', 'yyyy/MM/dd');year_folder = datestr(date_obj, 'yyyy'); % 从日期中提取年份作为文件夹名称% 获取当前点的经纬度lon = longitude(i);lat = latitude(i);% 使用 'yyyymmdd' 格式构建 GeoTIFF 文件路径tif_file = fullfile(tif_folder, year_folder, sprintf('%s.tif', datestr(date_obj, 'yyyymmdd')));% 检查 GeoTIFF 文件是否存在if isfile(tif_file)% 获取 GeoTIFF 文件的元数据并读取数据info = geotiffinfo(tif_file);[data, R] = readgeoraster(tif_file);% 计算指定纬度和经度的行列索引row = ceil((max(R.LatitudeLimits) - lat) / R.CellExtentInLatitude);col = ceil((lon - min(R.LongitudeLimits)) / R.CellExtentInLongitude);% 检查计算的行列是否越界if row <= 0 || col <= 0 || row > size(data, 1) || col > size(data, 2)value30 = NaN; % 如果越界则设置为 NaNelsevalue30 = data(row, col); % 如果在范围内则提取数据值end% 将提取的值添加到结果数组中gpmresult = [gpmresult; value30];else% 如果文件不存在则输出提示信息fprintf('File not found: %s\n', tif_file);end
end
disp('GPM well done');% 第
% 以下部分与第一个代码块类似,但用于另一个数据集
% 使用日期格式 'yyyydoy' (一年中的第几天)% % 设置 MSWEP GeoTIFF 文件夹路径
% tif_folder = 'H:\';
% mswepresult = [];
%
% % 使用并行处理遍历每个点
% parfor i = 1:length(dates)
% % 检查日期格式并转换
% if iscell(dates)
% date_str = dates{i};
% else
% date_str = dates(i, :);
% end
%
% date_obj = datetime(date_str, 'InputFormat', 'yyyy/MM/dd');
% year_folder = datestr(date_obj, 'yyyy');
% day_of_year = day(date_obj, 'dayofyear'); % 获取一年中的第几天
%
% lon = longitude(i);
% lat = latitude(i);
% tif_file = fullfile(tif_folder, year_folder, sprintf('_%d%03d.tif', year(date_obj), day_of_year));
%
% if isfile(tif_file)
% info = geotiffinfo(tif_file);
% [data, R] = readgeoraster(tif_file);
%
% row = ceil((max(R.LatitudeLimits) - lat) / R.CellExtentInLatitude);
% col = ceil((lon - min(R.LongitudeLimits)) / R.CellExtentInLongitude);
%
% if row <= 0 || col <= 0 || row > size(data, 1) || col > size(data, 2)
% value30 = NaN; % 如果越界则设置为 NaN
% else
% value30 = data(row, col); % 如果在范围内则提取数据值
% end
%
% mswepresult = [mswepresult; value30];
% else
% fprintf('File not found: %s\n', tif_file);
% end
% end
% disp('MSWEP well done');
相关文章:
Matlab基于经纬度点并行提取指定日期的tiff栅格位置的值
文章目录 前言一、基本说明二、代码 前言 该 MATLAB 代码用于从 GeoTIFF 文件中提取基于特定地理位置(经纬度)和日期的某个点的相关数据。代码首先读取一个包含事件数据(日期、经纬度)的 Excel 文件,然后根据日期和位…...
npm入门教程19:npm包管理
一、代码更新 遵循语义化版本控制: 在更新包时,应遵循语义化版本控制(Semantic Versioning,简称SemVer)规范。这意味着版本号的变更应反映代码变更的程度,通常遵循主版本号.次版本号.修订号的格式。主版本号…...

【NOIP提高组】虫食算
【NOIP提高组】虫食算 C语言C 💐The Begin💐点点关注,收藏不迷路💐 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#98…...

软件测试面试题个人总结
前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些面试题…...

HTML 语法规范——代码注释、缩进与格式、标签与属性、字符编码等
文章目录 一、代码注释1.1 使用注释的主要目的1.2 使用建议二、标签的使用2.1 开始标签和结束标签2.2 自闭合标签2.3 标签的嵌套2.4 标签的有效性三、属性四、缩进与格式4.1 一致的缩进4.2 元素单独占用一行4.3 嵌套元素的缩进4.4 避免冗长的行五、字符编码六、小结在开发 HTML…...

【Wi-Fi】WiFi中QAM及16-QAM、64-QAM、512-QAM、1024-QAM、2048-QAM、4096-QAM整理
参考链接 什么是QAM?QAM是如何工作的? - 华为 不同阶QAM调制星座图中,符号能量的归一化计算原理 - 知乎 16 QAM modulation vs 64 QAM modulation vs 256 QAM modulation 512 QAM vs 1024 QAM vs 2048 QAM vs 4096 QAM modulation type…...

红黑树的平衡之舞:数据结构中的优雅艺术
文章目录 前言🚀一、红黑树的介绍1.1 红黑树的概念1.2 红黑树的特点1.3 红黑树的性质 🚀二、红黑树结点的定义🚀三、红黑树的框架🚀四、旋转操作🚀五、红黑树的插入操作5.1 uncle结点存在且为红5.2 uncle结点不存在或者…...

angular实现list列表和翻页效果
说明:angular实现list列表和翻页效果 上一页 当前页面 下一页 效果图: step1: E:\projectgood\ajnine\untitled4\src\app\car\car.component.css .example-form-fields {display: flex;align-items: flex-start; }mat-list-item{background: antiquew…...

闯关leetcode——3285. Find Indices of Stable Mountains
大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/find-indices-of-stable-mountains/description/ 内容 There are n mountains in a row, and each mountain has a height. You are given an integer array height where height[i] represents t…...

算法【Java】—— 动态规划之斐波那契数列模型
动态规划 动态规划的思路一共有五个步骤: 状态表示:由经验和题目要求得出,这个确实有点抽象,下面的题目会带大家慢慢感受状态标识状态转移方程初始化:避免越界访问 dp 表,所以在进行填表之前我们要预先填…...

idea连接docker并构建镜像
安装docker 安装docker idea连接docker 安装docker插件 设置docker连接 设置docker.exe 这个docker.exe是为了运行docker,可以通过安装docker desktop获取 docker desktop下载地址 右键图标找到文件位置 在同级的resource中 编写Dockerfile # 使用官方 Nginx…...

百度如何打造AI原生研发新范式?
👉点击即可下载《百度AI原生研发新范式实践》资料 2024年10月23-25日,2024 NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。本届大会邀请了工业界和学术界的专家,优秀的工程师和产品经理,以及其它行…...

RedisTemplate类中的常用方法粗解(简单明了,预计5分钟看完)
在阅读项目代码过程中发现引用RedisTemplate 的方法操作redis时,都会有一些特定的ops ,对此好奇就查资料的情况下有了本博客。 操作之前付一张我们项目中的用到的地方的图 另外本文中的语言用到的是Java,附上试验用到的redisTemplete依赖 <…...

鸿蒙ArkTS中的布局容器组件(Column、Row、Flex、 Stack、Grid)
在鸿蒙ArkTS中,布局容器组件有很多,常见的有: ⑴ Column:(垂直布局容器):用于将子组件垂直排列。 ⑵ Row:(水平布局容器):用于将子组件水…...
显存占用 显存测试
目录 显存测试 显存占用示例 一个模型多卡占用 显存测试 import torch# 计算张量的大小(例如:每个 float 占用 4 字节) # 40GB 40 * 1024 * 1024 * 1024 字节 # 每个 float 4 字节,因此需要的 float 数量为 (40 * 1024 * 1024…...

快速入门CSS
欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ 目录 CSS css的三种引入方式 css书写规范 选择器分类 标签选择器 class选择器 id选择器 复合选择器 通配符选择器 color颜色设置 border边框设置 width/heigth 内/外边距 C…...
AcWing 1073 树的中心 树形dp (详解)
这道题目非常有新意,在过去,我们通常先访问子节点去更新父节点的状态,但是这道题我们还需要从父节点去更新子节点。 我们可以想象为向上和向下两个方向,我们任取一点,先向下走,再回来更新上面的点…...
modelscope下载Qwen2.5 72B 模型方法
conda create -n modelscope python=3.10 conda activate modelscopepip install modelscope执行这个python代码: from modelscope.hub.snapshot_download import snapshot_download# 下载模型到当前路径 model_dir = snapshot_download(...

重学SpringBoot3-整合 Elasticsearch 8.x (二)使用Repository
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 整合 Elasticsearch 8.x (二)使用Repository 1. 环境准备1.1 项目依赖1.2 Elasticsearch 配置 2. 使用Repository的基本步骤2.1 创建实体类2.2 创…...

为什么说模拟电路的难点就在开通过程和关断过程?难在什么地方?
模拟电路中开通过程和关断过程之所以困难,主要有以下几个方面的原因: 1. 瞬态响应特性复杂 - 在开通和关断瞬间,电路中的电流和电压会发生快速变化,产生复杂的瞬态响应。这些瞬态响应可能包含过冲、下冲、振铃等现象,…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...