时间序列求标准差:
每一时刻变量值与变量均值之差再平方,求得一个数值,再将每一时刻这个数值相加后求平均,再开方。
1、change_divided我改成了月合成。然后想要试着剔除异常值,代码写好了发现分辨率500m的数据有问题:1000m分辨率数据导出是没问题的(像元的值呈正态分布),但是500m分辨率的数据有80%的像元的值都分布在同一个狭小的区间内,如(-0.1, 0.1)。正常来说1000m的数据呈现正态分布说明数据本应没问题。
求助了AI,它说可能是500m的分辨率超出了数据的原始分辨率,导致重采样时出现失真和噪声。于是我发现制作的作物底图的分辨率是大于500m(但原始数据的分辨率正好是500×500m):
然而导出的相对变化率的分辨率小于500m:
于是对作物底图重采样至第二张图的500m,用的是最邻近法。
“重采样的图像必须有投影坐标系,因为只有投影后的平面坐标才有米这种长度单位,地理坐标系是用度分秒这样的角度单位来度量的。”
ArcGIS操作系列(一)之地理配准_为什么要进行地理配准_GIS之路的博客-CSDN博客
最终解决方法!!!把小于-1、大于1的值全部设置成NAN【指导:ENVI里的波段运算-1>b1<1,可以搞定,把异常值压缩到-1或1(比如说识别到1000自动赋值为1,-100自动赋值为-1),其他软件应该也有类似的语法运算功能。处理遥感直方图两侧的异常值是经常要做的事情,很常见】
arcgis怎么把一个栅格数据value不为0的像元全部赋值变为1
栅格计算器:Con(数据, 1, 0)
2、(0502更新)MCD43A4数据集似乎有质量问题(下图是band6),质量控制后也很奇怪。决定不用这个数据集。
MCD43A4的质量控制代码【.map(maskclouds)放在map(getNBARVIs)之前】👇
function maskclouds(image) {
var q1 = image.select('BRDF_Albedo_Band_Mandatory_Quality_Band1');
var q2 = image.select('BRDF_Albedo_Band_Mandatory_Quality_Band2');
var q6 = image.select('BRDF_Albedo_Band_Mandatory_Quality_Band6');
var Mask1 = 1 << 0;
var mask1 = q1.bitwiseAnd(Mask1).eq(0);
var mask2 = q2.bitwiseAnd(Mask1).eq(0);
var mask6 = q6.bitwiseAnd(Mask1).eq(0);
var mask = mask1.and(mask2).and(mask6);
return image.updateMask(mask);
}
参考论文:
- EI那篇,用了SG滤波。NDVI用的MOD13A3(月),LSWI用的MOD09A1(8天?)。先转换为地理坐标、重采样、8天变为月尺度取平均。
- GCB那篇,NDVI是AVHRR的数据,EVI用的MOD13C1(0.05° 16天),用QA对EVI质量过滤。
对anomaly归一化,以比较SIF和VI的空间动态。
热胁迫的时空动态:1)时间上:与温度时间序列在16天上响应幅度的对比。2)空间上:2、3、4、5月份——温度的空间格局,VI归一化异常的空间格局。
统计遭受不同程度胁迫的区域占比。然后单独看SIFyield的anomaly在2-5月的空间分布(非归一化,值在-3到3)
- ERL蒙古高原那篇,EVI数据来自MOD13A3,月合成,分辨率1km;对anomaly标准化了。
- water那篇,NDVI用的MOD13Q1,LSWI用的MOD09A1,月合成
总结:MOD13A3:16d。NDVI和EVI(GCB用的MOD13C1)。
MOD09A1:8d。 LSWI和NIRv。
分别质量控制后月合成(参考博文:file:///C:/Users/%E4%BA%A6%E5%BF%83/Documents/tencent%20files/2740306286/filerecv/mobilefile/%E9%80%89%E6%8B%A9%E6%B5%8F%E8%A7%88%E5%99%A8%E6%89%93%E5%BC%80127006292.html
GEE(Google earth engine)QA质量波段控制去云——以MCD15A3H与MOD09GA为例
Google Earth Engine(GEE)实例代码学习三十七——MODIS地表反射率(MOD09GA)去云处理 - 点击领取
//'SummaryQA'quality control
function maskclouds(image) {
var qa = image.select('SummaryQA');
var Mask1 = 1 << 0;
var mask = qa.bitwiseAnd(Mask1).eq(0);
var Mask2 = 1 << 1;
var Mask = qa.bitwiseAnd(Mask2).eq(0);
mask = mask.and(Mask);
return image.updateMask(mask);
}
function rmCloud(image) {
//修改了这一行代码就可以了
var cloudState = (1<<10);
var cloudBitMask = (1 << 2);
var SnowBitMask = (1 << 15);
var qa = image.select("StateQA");
var mask = qa.bitwiseAnd(cloudState).eq(0).and(qa.bitwiseAnd(cloudBitMask).eq(0)).and(qa.bitwiseAnd(SnowBitMask).eq(0));
return image.updateMask(mask);
}
更新:0508
【MCD数据集的7sheng的 lswi 8月是正的。。。MOD 09和13的NDVI计算结果相似,09的变化更显著些,但是LSWI表现都不突出,服了】
【我还尝试了不用相对变化率,用标准化anomaly。理想结果是大部分分布在绝对值2左右,结果均值只有0.3左右。】
思考:安徽、江苏北部的冬小麦是夏季VI上升的主要原因。但冬小麦在6月份已经基本收割,不该叠加小麦啊……
一季稻开花抽穗,造成水稻结实率降低、空秕粒增加、灌浆期缩短、千粒重下降;玉米出现秃尖和缺粒。晚稻长势弱、灌浆进度缓慢,水稻等秋粮作物处于灌溉需水关键期
中稻是目前受旱情影响最大的主粮。长江流域一般种一季稻和双季稻,其中双季稻分早稻晚稻接替播种,播种期介于两者之间的一季稻称为中稻。8月中旬开始,南方中稻陆续进入抽穗扬花期,对温度、水分敏感,高温干旱将导致花粉活性下降,严重影响产量。
8月中旬,一季稻处于拔节至孕穗期,部分早熟品种处于抽穗扬花至灌浆结实期,双季晚稻处于返青分蘖期,高温热害影响明显。持续高温会加快幼穗分化进程,影响大穗形成;倒2叶期之后遇到持续38℃以上高温,容易引起部分品种颖花退化,尤其是处于抽穗扬花期的水稻,持续35℃以上高温有可能显著降低结实率。
持续高温危害一季稻开花抽穗,造成水稻结实率降低、空秕粒增加、灌浆期缩短、千粒重下降;高温干旱叠加导致土壤持续缺墒,玉米出现秃尖和缺粒,大豆结荚率降低,棉花落铃增加,茶叶、柑橘、油茶等特色作物品质及产量受到影响。安徽、湖北、江西、湖南、福建等地因旱情持续或发展,导致无水源保障地区的晚稻长势弱、灌浆进度缓慢,影响棉花裂铃吐絮、柑橘果实膨大及果实着色。此外,持续干旱也影响了油菜、蔬菜等作物的秋播工作。
8 月中下旬是长江中下游地区秋粮及秋收作物产量形成的关键期,在灌溉条件比较差的地区,晚稻孕穗、抽穗以及灌浆均受到不利影响,出现萎蔫、卡穗、结实率下降等状况;玉米、大豆等作物结实率、粒重也明显下降;棉花的产量和纤维品质也受影响严重,蕾铃脱落增加,成铃减少、早衰;对蔬菜播种和移栽油菜的播种育苗等秋种工作也产生一定影响;持续高温少雨还影响到柑橘、柚子、脐橙等水果的产量和品质,果实明显偏小。[论文]
“对高温热害造成结实率下降的中稻,要抓住有限的灌浆时间,科学增施穗粒肥,喷施叶面肥,增强光合作用和灌浆速率,努力增加粒重,弥补结实率下降损失;双季晚稻正处于拔节孕穗期,重点要防范可能发生的伏秋连旱,提前做好抗旱工作预案,提早调度储备水源,适时增施孕穗肥,落实大水孕穗、有水抽穗、寸水促穗、湿润壮粒等水分管理措施,促进生长发育;南方高温区的玉米,要针对水分和养分消耗大的问题,落实“一喷多促”等稳产增产措施。同时,蔬菜、水果、茶叶等作物也要针对高温热害和干旱影响,落实好抗灾减损措施。”
7号发现问题:
var ndvi_max_mean = MultiMean.filterMetadata('month', 'equals', 8) .first().select('lswi_max_mean')
var A = change.filterMetadata('month', 'equals', 8).first().select('lswi_max_mean')
var m = A.get('month');
var B = A.divide(ndvi_max_mean).set('system:time_start', ee.Date.fromYMD(year, m, 1)).set('month', m)
这个代码是计算8月份的相对变化率,GEE中print出的图显示ndvi_max_mean数值是0.315,A是-0.013,但是打印出的B是0.613。而对应在arcgis中,A、B都为正值且B的数值也和GEE不同。我认为B应该是-0.013/0.315,即使数值不同它也应该是个负值。
指导1:分子或分母上存在0值或其他背景值吗
指导2:把每一次筛选都分开输出一次看看结果;把前面的变量像change也print一遍。
回复1:我分别输出了,A在arcgis里打开平均值是0.00158,在GEE里ee.Reducer.mean()的图像显示是-0.013,为啥这俩是不一样的呢?
指导3:那可能是计算涉及的像元数不太一样,你创建两个栅格导入进去再看看和gis运算的一不一样。意思是:自己用gis创建两个4×4的栅格,你可以创建渔网(arcgis软件arcmap中如何创建渔网-百度经验)再点转栅格,然后对比下用gee和gis计算平均值的结果差异。如果不一样的话可能是对边缘像元的处理不太一样导致的。如果确实是差异,可能要用一个标准的栅格去把周围的一圈mask掉,可以gis弄好导进GEE,计算前mask一次。
思考:可能是看错了,并不存在差异