当前位置: 首页 > article >正文

从遥感数据到趋势地图:Sen+MK方法在ArcGIS/QGIS中的完整应用流程

从遥感数据到趋势地图SenMK方法在ArcGIS/QGIS中的完整应用流程当我们需要分析长时间序列的遥感数据变化趋势时Sen斜率估计和Mann-Kendall检验这对黄金组合无疑是地理空间分析领域的利器。不同于传统的线性回归方法这对非参数统计方法对异常值不敏感也不需要数据满足正态分布假设特别适合处理具有季节性和波动性的遥感数据。本文将带你从零开始构建一个完整的跨平台工作流将原始TIFF数据转化为直观的趋势显著性分级图。1. 数据准备与预处理在开始分析前我们需要确保数据的一致性和可比性。假设我们手头有2000-2020年共21年的NPP净初级生产力TIFF数据每个文件都包含相同地理范围的栅格数据。关键预处理步骤投影统一检查在QGIS中使用栅格→投影→栅格投影工具确保所有年份数据使用相同的坐标参考系统(CRS)分辨率对齐通过栅格→分析→重采样工具将所有数据统一到相同分辨率无效值处理使用栅格计算器或Python脚本将无效值(如-9999)替换为NaN# Python示例批量读取并预处理TIFF文件 import rasterio import numpy as np from glob import glob file_list sorted(glob(NPP_*.tif)) data_stack [] for file in file_list: with rasterio.open(file) as src: data src.read(1) data[data 0] np.nan # 处理无效值 data_stack.append(data)提示预处理阶段建议在QGIS/ArcGIS中完成因为GIS软件提供了直观的空间参考检查和可视化工具能有效避免投影错误导致的后续分析问题。2. Sen斜率估计的Python实现Theil-Sen Median方法通过计算所有时间点对之间的斜率中位数来估计趋势这种方法对异常值有很强的鲁棒性。以下是使用Python实现的优化版本import numpy as np from itertools import combinations import xarray as xr def sen_slope(data_stack): 计算Sen斜率的矢量化实现 :param data_stack: 三维numpy数组 (时间, 行, 列) :return: 斜率栅格 (行, 列) n_time data_stack.shape[0] rows, cols data_stack.shape[1], data_stack.shape[2] slopes np.zeros((rows, cols)) * np.nan # 生成所有时间点对组合 pairs np.array(list(combinations(range(n_time), 2))) n_pairs len(pairs) for i in range(rows): for j in range(cols): pixel_series data_stack[:, i, j] if np.isnan(pixel_series).any(): continue # 计算所有点对的斜率 x_diff pairs[:, 1] - pairs[:, 0] y_diff pixel_series[pairs[:, 1]] - pixel_series[pairs[:, 0]] pixel_slopes y_diff / x_diff slopes[i, j] np.median(pixel_slopes) return slopes性能优化技巧对于大区域分析建议将数据分块处理可以使用numba加速循环计算考虑使用dask进行并行计算3. Mann-Kendall检验的批量处理Mann-Kendall检验用于判断趋势是否具有统计显著性。我们可以使用pymannkendall库简化计算import pymannkendall as mk def mk_test_parallel(data_stack): 并行计算MK检验结果 :param data_stack: 三维numpy数组 (时间, 行, 列) :return: (趋势栅格, p值栅格) from concurrent.futures import ProcessPoolExecutor import multiprocessing n_time, rows, cols data_stack.shape trend_map np.zeros((rows, cols)) * np.nan p_map np.zeros((rows, cols)) * np.nan def process_pixel(i, j): series data_stack[:, i, j] if np.isnan(series).any(): return np.nan, np.nan try: result mk.original_test(series) trend 1 if result.trend increasing else -1 if result.trend decreasing else 0 return trend, result.p except: return np.nan, np.nan with ProcessPoolExecutor(max_workersmultiprocessing.cpu_count()) as executor: futures [] for i in range(rows): for j in range(cols): futures.append((i, j, executor.submit(process_pixel, i, j))) for i, j, future in futures: trend, p future.result() trend_map[i, j] trend p_map[i, j] p return trend_map, p_map显著性分级标准Z值范围显著性水平趋势等级Z≥ 2.581.96 ≤Z 2.581.645 ≤Z 1.96Z 1.6454. GIS中的可视化与制图将Python计算结果导回GIS软件进行可视化是分析的最后一步也是成果展示的关键环节。QGIS中的制图流程导入结果栅格使用图层→添加图层→添加栅格图层导入Sen斜率和MK检验结果分类渲染对Sen斜率结果使用单波段伪彩色渲染设置合适的色带对MK显著性结果使用分类渲染按显著性等级设置不同颜色地图布局添加比例尺、指北针和图例使用打印布局工具创建专业地图输出ArcGIS Pro中的进阶技巧使用栅格函数链创建动态处理流程应用色彩映射功能创建连续渐变色带使用空间分析工具进一步提取显著变化区域# 将结果保存为GeoTIFF def save_to_geotiff(data, template_file, output_file): with rasterio.open(template_file) as src: profile src.profile profile.update(dtyperasterio.float32) with rasterio.open(output_file, w, **profile) as dst: dst.write(data.astype(rasterio.float32), 1) # 示例用法 save_to_geotiff(slope_result, NPP_2000.tif, sen_slope_result.tif) save_to_geotiff(trend_map, NPP_2000.tif, mk_trend_result.tif)5. 实际应用中的问题解决在实际项目中我们经常会遇到各种技术挑战。以下是几个常见问题及其解决方案内存不足问题使用分块处理策略将大区域划分为多个小区域分别处理考虑使用dask库进行延迟计算对于超大数据集可以使用云处理平台如Google Earth Engine处理速度优化采用矢量化计算替代循环使用numba加速数值计算考虑使用GPU加速如cupy库结果验证方法选择典型像元绘制时间序列曲线直观检查趋势与线性回归结果进行对比在不同时间尺度如5年、10年、20年上重复分析检查结果一致性跨平台协作技巧使用GeoJSON或CSV格式交换点数据对于栅格数据坚持使用标准的GeoTIFF格式考虑使用Docker容器封装分析环境确保结果可复现在最近的一个植被覆盖变化研究中我们应用这套方法处理了30年的Landsat数据。最初尝试在Matlab中实现但遇到大数据处理瓶颈。后来转向PythonQGIS的组合不仅处理效率提升了3倍还能利用QGIS的强大可视化功能即时检查中间结果。特别是在处理高原地区数据时Sen斜率方法有效抵抗了云污染导致的异常值影响得到了比传统方法更可靠的结果。

相关文章:

从遥感数据到趋势地图:Sen+MK方法在ArcGIS/QGIS中的完整应用流程

从遥感数据到趋势地图:SenMK方法在ArcGIS/QGIS中的完整应用流程 当我们需要分析长时间序列的遥感数据变化趋势时,Sen斜率估计和Mann-Kendall检验这对黄金组合无疑是地理空间分析领域的利器。不同于传统的线性回归方法,这对非参数统计方法对异…...

颠覆“学历越高越有前途”,结合能力,经验,市场需求,颠覆学历崇拜,综合评估个人竞争力。

颠覆"学历越高越有前途" - 个人竞争力多维评估系统一、实际应用场景描述场景:26岁小李,普通本科毕业,投递简历屡屡碰壁。看着招聘网站上"985/211优先"、"硕士及以上"的要求,他开始怀疑人生&#xf…...

Python 全栈新闻爬虫与文本情感分析系统 Django框架 Scrapy爬虫 NLP 朴素贝叶斯 TextRank算法 数据分析 计算机毕业设计(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

Uboot Flash支持全解析:从MX25L51245G到S25FL512S的配置指南

Uboot Flash支持全解析:从MX25L51245G到S25FL512S的配置指南 在嵌入式系统开发中,Flash存储器的正确配置是系统稳定运行的基础。对于使用MT7628等嵌入式处理器的开发者来说,理解Uboot中Flash支持的实现原理至关重要。本文将深入解析不同型号F…...

迷你世界UGC3.0脚本触发器事件管理(特效)

迷你世界UGC3.0脚本WikiMenuOn this pageSidebar Navigation快速入门欢迎MOD、组件介绍什么是Lua编程组件介绍组件说明组件互相操作组件函数组件属性事件触发器事件管理组件事件管理函数库服务模块世界模块管理接口 World对象…...

Leaflet地图实战:5分钟搞定动态水波纹标记(附随机生成代码)

Leaflet地图实战:5分钟实现动态水波纹标记与随机生成系统 在数据可视化领域,地图标记的动态效果往往能显著提升信息传达效率。水波纹标记(Pulse Marker)以其独特的视觉吸引力,成为展示实时数据变化的热门选择。本文将带…...

医疗AI落地必备:如何用LIME向医生解释深度学习诊断结果?

医疗AI落地必备:如何用LIME向医生解释深度学习诊断结果? 在医疗AI的落地过程中,最大的挑战往往不是算法精度,而是如何让临床医生真正信任并采纳AI的建议。当一位放射科医生面对AI系统标注的"疑似恶性肿瘤"结论时&#x…...

计算机毕业设计springboot在线教育平台系统 基于SpringBoot的在线学习资源管理平台设计与实现 基于SpringBoot的数字化网络教学服务系统设计与实现

计算机毕业设计springboot在线教育平台系统6mdfq9 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着互联网技术的日益成熟和普及,网络已成为人际交流的重要载体&am…...

海康工业相机MVS参数实战:从基础曝光到高级AOI的精准调控

1. 工业相机参数调优的核心逻辑 第一次接触海康工业相机MVS参数时,我被满屏的专业术语弄得头晕眼花。直到在电子元件检测项目里连续三天调试失败后,才真正理解参数之间的关联性。工业视觉检测就像烹饪,基础曝光是火候控制,高级功能…...

基于条件风险价值CVaR的P2P微网动态定价与调度策略MATLAB代码

MATLAB代码:基于条件风险价值CVaR的微网动态定价与调度策略 关键词:P2P交易 微网优化调度 条件风险价值 合作博弈 动态定价 参考文档:加好友获取 仿真平台:MATLAB yalmipcplexmosek 主要内容:代码主要做的是一个基于主…...

微电网模型Matlab Simulink,风光储微电网,永磁风机并网仿真,光伏并网仿真,蓄电池...

微电网模型Matlab Simulink,风光储微电网,永磁风机并网仿真,光伏并网仿真,蓄电池仿真,柴油发电机,光储微电网 风储微电网 Matlab仿真平台搭建的风光储微电网模型,风光柴储微电网,pwm…...

基于LabVIEW 2018开发的多通道测振仪源代码,可对IEPE振动加速度传感器的信号进行采集分析

基于LabVIEW 2018开发的多通道测振仪源代码,可对IEPE振动加速度传感器的信号进行采集分析。 为保证良好的体验性,建议选择显示器的分辨率为1920*1080,Windows的显示缩放比例为100%。 1.本程序仅支持NI数据采集机箱和NI声音与振动测量模块&…...

基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮...

基于mpc模型预测轨迹跟踪控制,总共包含两套仿真,一套是不加入四轮侧偏角软约束,一套是加入四轮侧偏角的软约束控制,通过carsim与simulink联合仿真发现加入侧偏角软约束在进行轨迹跟踪时,能够通过控制四轮侧偏角的变化&…...

程序员专属!用Docker+cpolar打造24小时在线的Qwerty Learner打字训练营(附固定域名配置)

程序员的高效打字训练:基于Docker与cpolar的Qwerty Learner私有化部署方案 作为一名长期与键盘为伴的程序员,英文输入效率直接影响着编码速度和思维流畅度。你是否经历过这些场景:在Stack Overflow查阅解决方案时,输入速度跟不上思…...

别再踩坑了!UniApp集成支付宝支付,从创建应用到回调验证的完整避坑指南

UniApp支付宝支付全链路避坑实战:从密钥生成到回调验证的终极指南 如果你正在为UniApp集成支付宝支付而头疼,特别是那些看似简单却让人抓狂的"回调验证失败"、"公钥混淆"问题,那么这篇文章就是为你准备的。作为一位经历…...

若依微服务整合Seata1.5.2避坑指南:从Nacos配置到MySQL驱动版本的那些坑

若依微服务整合Seata 1.5.2实战:Nacos配置与MySQL驱动版本深度解析 分布式事务一直是微服务架构中的难点,而Seata作为一款开源的分布式事务解决方案,近年来在开发者社区中获得了广泛关注。本文将聚焦若依微服务框架与Seata 1.5.2版本的整合过…...

LOF算法避坑指南:为什么你的异常检测总误判?从密度计算到阈值选择的5个关键点

LOF算法避坑指南:为什么你的异常检测总误判?从密度计算到阈值选择的5个关键点 在电商风控系统中,一位算法工程师发现LOF模型将30%的正常用户误判为"刷单机器人"。调整k值后,模型却开始放过真实的欺诈账户——这种场景揭…...

从暴力匹配到KMP:一个例子带你彻底理解字符串匹配的效率飞跃

从暴力匹配到KMP:一个例子带你彻底理解字符串匹配的效率飞跃 在文本编辑器中按下CtrlF时,很少有人会思考这个简单操作背后隐藏的算法智慧。字符串匹配——这个看似基础的任务,实则是计算机科学中最经典的优化案例之一。想象一下在百万字的《战…...

阿里国际数字商业集团第四季营收392亿 经调整EBITA为-20亿 同比收窄59%

雷递网 乐天 3月19日阿里(纽交所代码:BABA及港交所代号:9988(港币柜台)及89988(人民币柜台))今日公布截至2025年12月31日止季度业绩。财报显示,阿里2025年第四季度营收为…...

BSS127S-7是什么类型电子元器件? DIODES美台 场效应管晶体管 进口芯片IC

BSS127S-7‌ 是由 DIODES(美台)生产的一款 ‌N沟道增强型场效应管MOSFET‌晶体管,专为高电压、低电流开关应用设计,特别适用于你当前在FPGA系统或嵌入式电源模块中对高可靠性、小体积分立器件的选型需求。该器件具备 ‌600V 漏源击…...

2026年盘点五大低代码平台,不懂编程也能做系统!

一、低代码是什么?低代码(Low-Code)就是:很少写代码、甚至不写代码,就能做出软件、系统、APP、管理平台。你可以把它理解成:传统开发:像盖房子,要一砖一瓦砌墙、布线、装修。低代码&…...

1949AI 轻量化本地自动化实践:零代码实现办公重复任务批量处理

1949AI 轻量化本地自动化实践:零代码实现办公重复任务批量处理 前言 在日常办公与自媒体内容生产中,大量重复的文件整理、数据导出、素材分类任务,会大幅占用个人用户与小型技术团队的工作时间。传统自动化方案依赖编程能力、环境配置复杂&…...

xray+bp+火狐来查询漏洞

这里重点介绍xray Xray是一款在安全圈内非常受欢迎的免费、社区版漏洞扫描器-1-4。它由长亭科技从自家的洞鉴核心引擎中提取并开源,旨在为安全从业者提供一个高效、灵活且强大的自动化漏洞检测工具-1-9。结合你之前的操作,可以更好地理解它的定位。 &a…...

DLSS Swapper:解锁显卡隐藏性能,让游戏体验瞬间升级的版本管理神器

DLSS Swapper:解锁显卡隐藏性能,让游戏体验瞬间升级的版本管理神器 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾经在4K高画质游戏中遭遇帧率骤降的困扰?是否羡慕别人相同…...

2026 Git 实战宝典:从“只会 add”到“提交流大师”的进阶之路

🛠️ 一、新手村?不,是“肌肉记忆”区 别再把时间浪费在基础配置上了,把这些命令刻进 DNA 里。 1. 初始化与身份确认 # 全局配置(入职第一件事,避免提交记录显示未知用户) git config --global …...

基于改进A*算法的多AGV路径规划,MATLAB仿真程序,时间窗口规划,传统是8个方向,可以斜...

基于改进A*算法的多AGV路径规划,MATLAB仿真程序,时间窗口规划,传统是8个方向,可以斜着规划路径,改进为上下左右4个方向,仿真避开冲突问题 ,输出路径图,时空图。先别急着纠结八方向还…...

基于真实车辆建立高精度数字化车辆仿真模型-车辆工程虚拟仿真实验台

在汽车工程专业的教学与科研领域,传统实验教学模式面临诸多瓶颈。实车碰撞实验不仅运行经费高昂,还伴随着极高的安全风险;自动变速器换挡油路模拟等操作具有不可逆性,一旦操作失误便无法还原初始状态;同时,…...

Qt与gRPC实战:从零构建跨平台RPC通信框架

1. 为什么选择QtgRPC组合? 第一次接触gRPC是在一个跨平台工业控制项目中,当时需要让Windows端的Qt界面程序与Linux端的算法服务实时通信。传统方案用HTTPJSON效率太低,WebSocket又需要自己设计协议,直到发现gRPC这个神器——它像打…...

小爱音箱 + XiaoMusic,NAS 本地音乐自由真的香

XiaoMusic 是一款专为小爱音箱打造的本地音乐管理工具,核心功能是绑定小米账号后,让小爱音箱直接读取 NAS 中存储的音乐文件,支持语音点播、随机播放、循环歌单等操作,适配所有能运行 Docker 的设备,无论是 NAS 还是普…...

Flutter实战:如何高效获取本地和网络图片的宽高(附完整代码示例)

Flutter实战:高效获取图片宽高的全场景解决方案 在移动应用开发中,图片处理是绕不开的核心功能。无论是社交动态的九宫格展示,还是IM聊天中的图片发送,准确获取图片宽高信息都直接影响着用户体验。Flutter作为跨平台开发框架&…...