AI Earth运用Landsat数据反演地表温度(LST)【附代码!】

AI Earth平台简介

        AI Earth地球科学云平台是阿里巴巴达摩院基于深度学习、计算机视觉、地理空间分析等方向上的技术积累,结合阿里云算力支撑,提供无门槛、界面化的遥感、气象等多源对地观测数据云计算分析服务。AI Earth是继航天宏图的PIE-Studio、商汤科技的SensEarth出现的国产遥感云计算平台。

        用户可以通过阿里云账号直接登录,也可以注册审核进入平台。点击直接进入AI Earth

数据检索和功能简介

        AI Earth数据集非常丰富,常用的Landsat、Sentinel、MODIS等遥感数据,还有诸多地形、社会经济、生物气候数据。进入平台后,点击数据检索即可进行数据检索。

        通过选择数据类型,检索区域(可以通过行政区选择、圈画区域、自己导入研究区,注意导入文件格式必须是压缩包.zip),选择时间区间和云量即可检索所需数据。

        AI Earth平台处理分析有两种模式选择开发者模式和工具箱模式。工具箱模式将诸多常用遥感手段集中到单一工具中,通过输入数据和处理手段即可完成,运算可批处理,工作效率非常高。开发者模式通过云计算平台进行工作。

基于AI Earth地表温度反演

        直接上代码,内核Python3。

初始化环境
import aie
​
aie.Authenticate()
aie.Initialize()
计算资源初始化中,请等待...
计算资源初始化完成.
Landsat-8 数据检索
指定区域、时间、云量检索 Landsat-8 ,并对数据进行去云处理。

region = aie.FeatureCollection('China_Province') \
            .filter(aie.Filter.eq('province', '新疆维吾尔自治区')) #选取研究区
            
dataset = aie.ImageCollection('LANDSAT_LC08_C02_T1_L2') \  #选取数据源
             .filterBounds(region) \
             .filterDate('2020-07-01', '2020-08-31') \  #设定时间范围
             .filter(aie.Filter.lte('eo:cloud_cover', 10.0))  #云量限定
​
print(dataset.size().getInfo())
​
image = dataset.median()   
map = aie.Map(
    center=image.getCenter(),
    height=800,
    zoom=7
)
rgb_params = {
    'bands': ['SR_B4', 'SR_B3', 'SR_B2'],
    'min': 8000,
    'max': 13000
}
map.addLayer(
    image,
    rgb_params,
    'raw_img',
    bounds = image.getBounds()
)
map
134
计算 NDVI
ndvi = image.normalizedDifference(['SR_B5', 'SR_B4']).rename(['NDVI'])
ndvi_params = {
    'min': -1.0,
    'max': 1.0,
    'palette': [
        '#FFFFFF', '#CE7E45', '#DF923D', '#F1B555', '#FCD163', '#99B718', '#74A901',
        '#66A000', '#529400', '#3E8601', '#207401', '#056201', '#004C00', '#023B01',
        '#012E01', '#011D01', '#011301'
    ]
}
​
map.addLayer(
    ndvi,
    ndvi_params,
    'NDVI',
    bounds = image.getBounds()
)
map
计算 Fractional Vegetation
min = aie.Image(-0.38)
max = aie.Image(0.68)
fv = (ndvi.subtract(min).divide(max.subtract(min))).pow(aie.Image(2)).rename(['FV'])
fv_params = {
    'min': 0,
    'max': 1
}
map.addLayer(
    fv,
    fv_params,
    'fv',
    bounds = image.getBounds()
)
map
计算 Thermal
th = image.select('ST_B10').multiply(aie.Image(0.00341802)).add(aie.Image(149)).rename(['TH'])
th_params = {
    'min': 260,
    'max': 320,
    'palette': [
        '#0000FF', '#FFFFFF', '#008000'
    ]
}
map.addLayer(
    th,
    th_params,
    'thermal',
    bounds = image.getBounds()
)
map
计算比辐射率 Emissivity
a = aie.Image(0.004)
b = aie.Image(0.986)
em = fv.multiply(a).add(b).rename(['EM'])
em_params = {
    'min': 0.9865619146722164,
    'max': 0.989699971371314
}
map.addLayer(
    em,
    em_params,
    'emissivity',
    bounds = image.getBounds()
)
map

计算地表温度 ( LST )并显示与导出
tb = th.select(['TH'])
eb = em.select(['EM'])
lst = tb.divide(tb.multiply(aie.Image(0.00115)).divide(aie.Image(1.4388)).multiply(eb.log()).add(aie.Image(1))).rename(['LST'])
lst_params = {
    'min': 291,
    'max': 330,
    'palette': ['#040274', '#040281', '#0502a3', '#0502b8', '#0502ce', '#0502e6',
                '#0602ff', '#235cb1', '#307ef3', '#269db1', '#30c8e2', '#32d3ef',
                '#3be285', '#3ff38f', '#86e26f', '#3ae237', '#b5e22e', '#d6e21f',
                '#fff705', '#ffd611', '#ffb613', '#ff8b13', '#ff6e08', '#ff500d',
                '#ff0000', '#de0101', '#c21301', '#a71001', '#911003']
}
​
map.addLayer(
    lst,
    lst_params,
    'lst',
    bounds = image.getBounds()
)
map
​
task = aie.Export.image.toAsset(lst, 'lst', 30)  #导出图层,设定空间分辨率
task.start()
​

注:图片均来自平台截图。以上内容如有侵权冒犯请联系删除。欢迎交流,共同学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值