GEE(Python)逐像元线性拟合

终于把GEE的python环境配置好了,很早就想尝试吴秋生老师的可视化库了【快乐】
这里贴一个GEE线性拟合的Python版(以60年的TerraClimate降水数据为例)。

#edited by Xinglu Cheng 2021.12.3
import ee
import os
from ipygee import Map 
from IPython.display import Image
import geemap

ee.Initialize()
gee_Map = geemap.Map(center=[35.0, 119.30], zoom=5)
gee_Map.add_basemap('Gaode.Normal')

#这里是调用ipygee的Map功能,也是很好的可视化工具,但是个人更喜欢吴秋生老师的geemap
# myMap = Map() 
# myMap.show()
# point = ee.Geometry.Point([119.30, 35.0])
# myMap.centerObject(point,zoom=5)

#加入研究区
study_area = ee.FeatureCollection("users/2210902126/Study_Area")
#myMap.setOptions("HYBRID")


#添加时间波段的函数
def createTimeBand(img): 
    date = img.metadata("date").subtract(1960)
    return date.rename("year").clip(study_area).addBands(img)

#遍历获取月降水数据,并循环计算每年的总降水量,存入list中
datalist=ee.List([])
year=1960
for i in range(60):
    datalist=datalist.add(ee.ImageCollection("IDAHO_EPSCOR/TERRACLIMATE").filter(ee.Filter.date(ee.Date(str(year)+"-01-01"), ee.Date(str(year+1)+"-01-01"))).select('pr').sum().clip(study_area).set("date",ee.Number(year)))
    year += 1

varyCollection=ee.ImageCollection.fromImages(datalist)#将list转为ImageCollection
varyCollection = varycollection.map(createTimeBand)#调用函数
linear = varyCollection.reduce(ee.Reducer.linearFit())#对每个像元线性回归
print(linear.getInfo())

#渲染显示
visualization = {
    'max':3,
    'min':-3,
    'palette': ['b30000','d7301f','ef6548','fc8d59','fdbb84','fdd49e','fee8c8','f7fcf0','e0f3db','ccebc5','a8ddb5','7bccc4','4eb3d3','2b8cbe','0868ac']
}
gee_Map.addLayer(linear.select('scale'),visualization,name='stable pre trend')#这里可以选择“offset”波段,渲染出来的则是各个像元的截距值
gee_Map

效果如下图所示(这里每个像元值是其60年数据线性拟合的斜率,蓝色是正值,红色是负值):
linearfit

以上。owo

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值