GNSS数据还能这么用一个水文研究生的实战笔记用开源Matlab代码监测区域水储量变化去年冬天当我第一次在导师的办公室里看到那张GRACE卫星反演的云南水储量变化图时心里就冒出了个问号这些模糊的色块真能准确反映我们省复杂地形下的水资源分布吗作为一个在滇池边长大、又学了四年水文的学生我太清楚云南的山川河流有多调皮了——300公里的分辨率怕是连洱海和抚仙湖都分不清楚。正是这个疑问开启了我为期半年的GNSS反演技术探索之旅。1. 为什么GRACE不够用从卫星重力到地面监测的思维转换记得第一次处理GRACE数据时我被那个著名的条纹噪声折磨得够呛。即使使用了最新的mascon解决方案云南西北部横断山脉地区的数据依然像打了马赛克。这让我意识到空间分辨率硬伤300公里的格网对于云南省这样山地平原交错的区域相当于把香格里拉和西双版纳的水量变化混在一起计算时间分辨率局限月度数据会错过季风来临时的突发性降水事件而这类事件对地质灾害预警至关重要信号衰减问题在小型流域5万平方公里尺度上GRACE信号可能完全被噪声淹没表1GRACE与GNSS反演技术参数对比指标GRACE卫星GNSS地面观测空间分辨率~300km10-50km时间分辨率1个月1天适用尺度20万km²流域1-10万km²区域主要误差源条纹噪声站点分布密度转折点出现在文献调研时读到姜老师团队2021年发表在《Remote Sensing of Environment》的那篇论文。他们用云南境内53个GNSS连续运行站的数据竟然重建出了日分辨率的水储量变化与实测水文数据的相关系数达到0.89这个发现让我眼前一亮——我们省正好有全国密度最高的陆态网络GNSS站这不就是现成的数据金矿吗2. 工具箱初体验GNSS2TWS的安装与配置踩坑记从Github克隆gnss2tws_green仓库的那个下午我天真地以为接下来就是一键运行的轻松时刻。结果第一个报错就给了我下马威——Matlab提示找不到green_func文件夹。原来这个工具箱需要额外下载Green函数数据集而README.md里只用小字提到了下载链接。关键配置步骤复盘环境准备% 必须安装的Matlab工具箱 addpath(genpath(m_map)); addpath(genpath(t_tide)); addpath(genpath(lsf));数据预处理陷阱原始GNSS时间序列必须经过大气和非潮汐海洋负荷改正推荐使用GFZ的AOD1B产品季节信号提取时务必保留残差项否则会低估极端气候事件的影响缓冲区设置的玄机% 云南案例中的优化参数 buffer_inland 2.5; % 内陆缓冲区度数 buffer_coast 0.25; % 海岸缓冲区特殊处理这个设置源自Fu et al.(2015)的研究能有效抑制反演边界处的振铃效应。我最初偷懒用了默认1度缓冲结果在红河河谷地区出现了明显的数据畸变。提示遇到Matrix is close to singular错误时通常是站点空间分布不均匀导致。可以尝试修改load_scenario.m中的inversion.epsilon参数建议从0.1开始调试3. 从坐标时间序列到水储量变化的魔法解析真正让我感受到GNSS反演魔力的是第一次看到PCA分解结果的那一刻。那个看似杂乱无章的垂直位移时间序列经过主成分分析后竟然清晰地分离出了年周期信号与云南雨季5-10月完美吻合突发性波动对应2014年鲁甸地震后的水库排险事件长期趋势项揭示出滇中地区持续的地下水超采问题代码实战片段% 关键反演步骤 [PCAs, PCs, eigVs] pca_decomposition(gnss_vertical, NumComponents, 3); [tws_map, tws_series] invert_gnss2tws(PCAs, PCs, green_func, constraint, lcurve);最令人惊喜的是与水文站数据的对比验证。以抚仙湖流域为例GNSS反演结果不仅捕捉到了2020年干旱期的水位骤降甚至反映出雨季来临前半个月的土壤水预饱和现象——这是GRACE月度数据永远无法实现的细节分辨率。4. 成果可视化让数据讲故事的技巧经过两个月的反复调试我终于得到了一套满意的反演结果。但如何让这些数字会说话又成了新课题。这里分享几个让审稿人眼前一亮的可视化技巧时空立方体图用m_map工具箱绘制m_proj(Lambert,lon,[97.5 106.5],lat,[21.5 29.5]); m_pcolor(lon_grid,lat_grid,tws_cube(:,:,mon)); m_grid(linestyle,none,tickdir,out);异常事件标注在时间序列图中叠加气象灾害记录不确定性表达用半透明色带显示棋盘测试的误差范围表2不同区域验证结果对比单位cm等效水高区域GNSS反演GRACE水文模型相关系数滇池流域-12.3±2.1-9.8±4.5-11.70.91怒江上游8.7±3.25.1±5.87.90.86红河三角洲-6.5±1.8N/A-5.80.79记得把最终图表拿给导师看时他指着那个显示昆明周边地下水持续亏损的动图说这才是能真正辅助决策的科学产品。那一刻我忽然理解了姜老师开源这个工具箱的初衷——让尖端科研不再只是顶级实验室的专利。
GNSS数据还能这么用?一个水文研究生的实战笔记:用姜老师的开源Matlab代码监测区域水储量变化
发布时间:2026/6/11 9:06:21
GNSS数据还能这么用一个水文研究生的实战笔记用开源Matlab代码监测区域水储量变化去年冬天当我第一次在导师的办公室里看到那张GRACE卫星反演的云南水储量变化图时心里就冒出了个问号这些模糊的色块真能准确反映我们省复杂地形下的水资源分布吗作为一个在滇池边长大、又学了四年水文的学生我太清楚云南的山川河流有多调皮了——300公里的分辨率怕是连洱海和抚仙湖都分不清楚。正是这个疑问开启了我为期半年的GNSS反演技术探索之旅。1. 为什么GRACE不够用从卫星重力到地面监测的思维转换记得第一次处理GRACE数据时我被那个著名的条纹噪声折磨得够呛。即使使用了最新的mascon解决方案云南西北部横断山脉地区的数据依然像打了马赛克。这让我意识到空间分辨率硬伤300公里的格网对于云南省这样山地平原交错的区域相当于把香格里拉和西双版纳的水量变化混在一起计算时间分辨率局限月度数据会错过季风来临时的突发性降水事件而这类事件对地质灾害预警至关重要信号衰减问题在小型流域5万平方公里尺度上GRACE信号可能完全被噪声淹没表1GRACE与GNSS反演技术参数对比指标GRACE卫星GNSS地面观测空间分辨率~300km10-50km时间分辨率1个月1天适用尺度20万km²流域1-10万km²区域主要误差源条纹噪声站点分布密度转折点出现在文献调研时读到姜老师团队2021年发表在《Remote Sensing of Environment》的那篇论文。他们用云南境内53个GNSS连续运行站的数据竟然重建出了日分辨率的水储量变化与实测水文数据的相关系数达到0.89这个发现让我眼前一亮——我们省正好有全国密度最高的陆态网络GNSS站这不就是现成的数据金矿吗2. 工具箱初体验GNSS2TWS的安装与配置踩坑记从Github克隆gnss2tws_green仓库的那个下午我天真地以为接下来就是一键运行的轻松时刻。结果第一个报错就给了我下马威——Matlab提示找不到green_func文件夹。原来这个工具箱需要额外下载Green函数数据集而README.md里只用小字提到了下载链接。关键配置步骤复盘环境准备% 必须安装的Matlab工具箱 addpath(genpath(m_map)); addpath(genpath(t_tide)); addpath(genpath(lsf));数据预处理陷阱原始GNSS时间序列必须经过大气和非潮汐海洋负荷改正推荐使用GFZ的AOD1B产品季节信号提取时务必保留残差项否则会低估极端气候事件的影响缓冲区设置的玄机% 云南案例中的优化参数 buffer_inland 2.5; % 内陆缓冲区度数 buffer_coast 0.25; % 海岸缓冲区特殊处理这个设置源自Fu et al.(2015)的研究能有效抑制反演边界处的振铃效应。我最初偷懒用了默认1度缓冲结果在红河河谷地区出现了明显的数据畸变。提示遇到Matrix is close to singular错误时通常是站点空间分布不均匀导致。可以尝试修改load_scenario.m中的inversion.epsilon参数建议从0.1开始调试3. 从坐标时间序列到水储量变化的魔法解析真正让我感受到GNSS反演魔力的是第一次看到PCA分解结果的那一刻。那个看似杂乱无章的垂直位移时间序列经过主成分分析后竟然清晰地分离出了年周期信号与云南雨季5-10月完美吻合突发性波动对应2014年鲁甸地震后的水库排险事件长期趋势项揭示出滇中地区持续的地下水超采问题代码实战片段% 关键反演步骤 [PCAs, PCs, eigVs] pca_decomposition(gnss_vertical, NumComponents, 3); [tws_map, tws_series] invert_gnss2tws(PCAs, PCs, green_func, constraint, lcurve);最令人惊喜的是与水文站数据的对比验证。以抚仙湖流域为例GNSS反演结果不仅捕捉到了2020年干旱期的水位骤降甚至反映出雨季来临前半个月的土壤水预饱和现象——这是GRACE月度数据永远无法实现的细节分辨率。4. 成果可视化让数据讲故事的技巧经过两个月的反复调试我终于得到了一套满意的反演结果。但如何让这些数字会说话又成了新课题。这里分享几个让审稿人眼前一亮的可视化技巧时空立方体图用m_map工具箱绘制m_proj(Lambert,lon,[97.5 106.5],lat,[21.5 29.5]); m_pcolor(lon_grid,lat_grid,tws_cube(:,:,mon)); m_grid(linestyle,none,tickdir,out);异常事件标注在时间序列图中叠加气象灾害记录不确定性表达用半透明色带显示棋盘测试的误差范围表2不同区域验证结果对比单位cm等效水高区域GNSS反演GRACE水文模型相关系数滇池流域-12.3±2.1-9.8±4.5-11.70.91怒江上游8.7±3.25.1±5.87.90.86红河三角洲-6.5±1.8N/A-5.80.79记得把最终图表拿给导师看时他指着那个显示昆明周边地下水持续亏损的动图说这才是能真正辅助决策的科学产品。那一刻我忽然理解了姜老师开源这个工具箱的初衷——让尖端科研不再只是顶级实验室的专利。