MODIS 质量控制图层 QC

MODIS产品质量控制文件使用方法_mctk如何进行批处理-优快云博客icon-default.png?t=N7T8https://blog.youkuaiyun.com/tk20190411/article/details/106183163?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170195808116800211580116%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170195808116800211580116&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-106183163-null-null.nonecase&utm_term=%E8%B4%A8%E9%87%8F%E6%8E%A7%E5%88%B6&spm=1018.2226.3001.4450

基于python和google earth engine的MODIS数据质量控制————以MOD11A1为例-优快云博客icon-default.png?t=N7T8https://blog.youkuaiyun.com/VictoriaLy/article/details/130259754主要参考了以上2篇blog。

第一篇的代码正确,可以直接用。

第二篇的代码有1个地方需要修改,见下图。

修改原因:in_Array里的nan值,如果不处理,直接进行np.array(in_Array,dtype = np.uint16),nan会被转为0。在接下来筛选gooddata时,0(10进制)转为二进制是00,nan值被当作了gooddata,这是不对的。

另外,还要搞懂QC图层,每个像素值的含义:

python代码里,把十进制转为16位2进制之后,不足16位的是向左边补零直到满足16位。例如:11(十进制)转为二进制:1011,16位2进制就是:0000000000001011。

MCTK里转出数据时,选择double precision,导出的数据类型是float 64.但是,在提取QC掩码的时候,使用的值实际上是整型的。所以MCTK里也写了,先用double precision导出数据,接着就转为uint 16.  所以,float 64虽然有很多小数位,但都是0,即实际只用到了整数位。

``` // -------------------------------------------- // 步骤1:定义研究区(黄河中上游流域边界) // -------------------------------------------- // 从GEE Assets加载矢量边界(需提前上传) var basin = ee.FeatureCollection('users/your_username/yellow_river_basin'); var roi = basin.geometry(); // 获取几何范围 Map.centerObject(roi, 5); // 将地图视图居中到研究区 // -------------------------------------------- // 步骤2:加载MOD17A2HGF数据集(GPP产品) // -------------------------------------------- var mod17 = ee.ImageCollection('MODIS/006/MOD17A2HGF') .filterDate('2000-01-01', '2023-12-31') // 时间范围 .filterBounds(roi) // 空间筛选 .select('Gpp'); // 选择GPP波段(kg C/m²/8天) // -------------------------------------------- // 步骤3:数据预处理(单位转换 + 质量控制) // -------------------------------------------- // 单位转换:kg C/m²/8天 → g C/m²/8天(乘以1000) var mod17_scaled = mod17.map(function(image) { return image.multiply(1000).copyProperties(image, ['system:time_start']); }); // 质量控制:筛选高质量像元(QC波段掩码) var mod17_clean = mod17_scaled.map(function(image) { var qc = image.select('Gpp_QC'); var mask = qc.bitwiseAnd(0x03).eq(0); // 保留QC标志为00的像元 return image.updateMask(mask); }); // -------------------------------------------- // 步骤4:计算多年平均GPP(单位:g C/m²/年) // -------------------------------------------- // 合成年均值(每年约46个8天周期) var gpp_annual = mod17_clean.sum().divide(23); // 假设数据跨度为23年(2000-2023) var gpp_mean = gpp_annual.clip(roi); // -------------------------------------------- // 步骤5:可视化设置与地图叠加 // -------------------------------------------- // 可视化参数(颜色渐变) var gpp_vis = { min: 0, max: 2000, // 根据实际数据调整范围 palette: ['#FFFFCC', '#C2E699', '#78C679', '#31A354', '#006837'] }; // 添加年均GPP图层 Map.addLayer(gpp_mean, gpp_vis, 'Mean Annual GPP (2000-2023)'); // -------------------------------------------- // 步骤6:导出数据到Google Drive // -------------------------------------------- Export.image.toDrive({ image: gpp_mean, description: 'YellowRiver_GPP_2000-2023', folder: 'GEE_Exports', // 指定Google Drive文件夹 scale: 500, // 分辨率500m region: roi, maxPixels: 1e13, // 避免像素限制错误 fileFormat: 'GeoTIFF' }); // 打印验证信息 print('数据加载完成,年均GPP范围:', gpp_mean.reduceRegion({ reducer: ee.Reducer.minMax(), geometry: roi, scale: 500, maxPixels: 1e13 }));```为什么gee平台无法运行
最新发布
03-18
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值