2021 年 9 月下旬,Landsat 9 卫星发射,10 月 31 日获取到第一景影像(First Light),这成为 Landsat 卫星成像 50 年的重要里程碑。
作为新卫星,Landsat 9 联合 Landsat 8,可实现8天全球陆地和近岸重访,提供30米空间分辨率全球影像覆盖,继续帮助人们管理自然资源,了解气候变化带来的影响,更好地应对山体滑坡、野火等自然灾害。
如何调用 Landsat 9 数据?
PIE-Engine Studio 遥感计算云服务平台已收录 2022 年覆盖中国地区的Landsat 9 Collection 2 TOA (Top of Atmosphere) 和 SR (Surface Reflectance) 数据,欢迎大家踊跃使用。
数据集详情参考链接:
https://engine.piesat.cn/engine-studio/dataset
Landsat 9 TOA 数据调用代码(以青岛为例):
// 加载并显示青岛市区域范围
var qingdao = pie.FeatureCollection(‘NGCC/CHINA_CITY_BOUNDARY’)
.filter(pie.Filter.eq(‘name’, ‘青岛市’))
.first()
.geometry()
Map.centerObject(qingdao, 9);
Map.addLayer(qingdao, {color: ‘FF0000’, fillColor: ‘00000000’, width: 1}, “Qingdao”);
// 加载Landsat 9 TOA影像
var image = pie.ImageCollection(“LC09/02/T1”)
.filterDate(“2022-01-01”,“2022-02-16”)
.filter(pie.Filter.lte(‘cloud_cover_land’,10))
.filterBounds(qingdao)
.select([“B2”,“B3”,“B4”,“B5”,“B6”,“QA_PIXEL”])
.median()
.clip(qingdao);
Map.addLayer(image,{min:0,max:3000,bands:[“B4”,“B3”,“B2”]});
Map.centerObject(image,7);
运行结果:
代码链接:
https://engine.piesat.cn/engine/home?sourceId=432bd27976de41e693dcb74c8c628258
Landsat 9 SR 数据调用代码(以青岛为例):
// 加载并显示青岛市区域范围
var qingdao = pie.FeatureCollection(‘NGCC/CHINA_CITY_BOUNDARY’)
.filter(pie.Filter.eq(‘name’, ‘青岛市’))
.first()
.geometry()
Map.centerObject(qingdao, 9);
Map.addLayer(qingdao, {color: ‘FF0000’, fillColor: ‘00000000’, width: 1}, “Qingdao”);
//加载Landsat 9 SR影像
var landsat9 = pie.ImageCollection(“LC09/02/SR”)
.filterDate(“2022-01-01”,“2022-02-16”)
.filter(pie.Filter.lte(‘cloud_cover_land’,10))
.filterBounds(qingdao)
.select([“B2”,“B3”,“B4”,“B5”,“B6”,“QA_PIXEL”])
.median()
.clip(qingdao);
// 调整比例因子
var data = landsat9.multiply(0.0000275).add(-0.2);
Map.addLayer(data,{min:0.0,max:0.3,bands:[“B4”,“B3”,“B2”]},“Landsat 9 青岛数据可视化”);
Map.centerObject(data,7)
运行结果:
代码链接:
https://engine.piesat.cn/engine/home?sourceId=6211d098ebe34517aebe044f5769b877
综合应用案例
植被指数是分析农作物生长情况的重要参数,被广泛应用于农业遥感领域;水体指数通过多个波段组合计算,可有效地提取水提信息。
本文基于 Landsat 9 影像,通过编写简单的UI界面,计算常用指数(NDVI、EVI、NDWI、MNDWI)。
案例核心代码:
//UI计算
function calculateVI(roi, startDate, endDate, tag) {
//影像集合
var l9Col = pie.ImageCollection(“LC09/02/SR”);
//通过日期过滤影像集合,并且计算指数
l9Col = l9Col.filterDate(startDate, endDate)
.select([“B2”, “B3”, “B4”, “B5”, “B6”])
.filterBounds(roi)
var image = null;
var visParam = null;
if(legendUI){
Map.removeUI(legendUI);
legendUI = null;
}
switch (tag) {
case "NDVI":
//NDVI绘制样式
visParam = {
min: 0,
max: 0.5,
palette: 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, ' +
'74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,' +
'023B01, 012E01, 011D01, 011301'
};
image = l9Col.map(landsat9.NDVI).mean();
// 添加图例
var data = {
title: "NDVI",
colors:['CA7A41', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718',
'74A901', '66A000', '529400','3E8601', '207401', '056201', '004C00',
'023B01', '012E01', '011D01', '011301'],
labels: ["-1","1"],
};
var style = {
right: "120px",
bottom: "10px",
height: "70px",
width: "300px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
legendUI = legend;
break;
case "NDWI":
visParam = {
min: -1,
max: 0.2,
palette: 'FFFFFF,0000FF'
};
image = l9Col.map(landsat9.NDWI).mean();
// 添加图例
var data = {
title: "NDWI",
colors:['0000FF'],
labels: ["水体"],
isvertical: true
};
var style = {
right: "200px",
bottom: "10px",
height: "50px",
width: "70px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
legendUI = legend;
break;
case "MNDWI":
visParam = {
min: -1,
max: 0.2,
palette: 'FFFFFF,0000FF'
};
image = l9Col.map(landsat9.MNDWI).mean();
// 添加图例
var data = {
title: "NDWI",
colors:['0000FF'],
labels: ["水体"],
isvertical: true
};
var style = {
right: "200px",
bottom: "10px",
height: "50px",
width: "70px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
legendUI = legend;
break;
case "EVI":
visParam = {
// min: -0.2,
// max: 0.8,
min: 0,
max: 0.2,
palette: 'CA7A41, CE7E45, DF923D, F1B555, FCD163, 99B718, ' +
'74A901, 66A000, 529400,3E8601, 207401, 056201, 004C00,' +
'023B01, 012E01, 011D01, 011301'
};
image = l9Col.map(landsat9.EVI).median();
// 添加图例
var data = {
title: "EVI",
colors:['CA7A41', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718',
'74A901', '66A000', '529400','3E8601', '207401', '056201', '004C00',
'023B01', '012E01', '011D01', '011301'],
labels: ["-1","1"],
};
var style = {
right: "120px",
bottom: "10px",
height: "70px",
width: "300px"
};
var legend = ui.Legend(data, style);
Map.addUI(legend);
legendUI = legend;
break;
}
if (layerKey != null) {
Map.removeLayer(layerKey);
}
layerKey = Map.addLayer(image.clip(roi), visParam, tag);
}
//定义landsat9不同指数计算方式
var landsat9 = {
//NDWI: (B3 - B05)/(B3 + B05)
NDWI: function (image) {
var b3 = image.select(“B3”).multiply(0.0000275).add(-0.2);
var b5 = image.select(“B5”).multiply(0.0000275).add(-0.2);
var ndwi = (b3.subtract(b5)).divide(b3.add(b5));
return ndwi.rename(“NDWI”);
},
//MNDWI: (B3 - B6)/(B3 + B6)
MNDWI: function (image) {
var b3 = image.select(“B3”).multiply(0.0000275).add(-0.2);
var b6 = image.select(“B6”).multiply(0.0000275).add(-0.2);
var ndvi = (b3.subtract(b6)).divide(b3.add(b6));
return ndvi.rename(“MNDWI”);
},
//NDVI: (B5 - B4)/(B5 + B4)
NDVI: function (image) {
var b5 = image.select(“B5”).multiply(0.0000275).add(-0.2);
var b4 = image.select(“B4”).multiply(0.0000275).add(-0.2);
var ndvi = (b5.subtract(b4)).divide(b5.add(b4));
return ndvi.rename(“NDVI”);
},
//EVI: 2.5*(B5 - B4) / (B5 + 6B4 - 7.5B2 + 1)
EVI: function (image) {
var nir = image.select(“B5”).multiply(0.0000275).add(-0.2);
var red = image.select(“B4”).multiply(0.0000275).add(-0.2);
var blue = image.select(“B2”).multiply(0.0000275).add(-0.2);
var evi = ((nir.subtract(red)).multiply(2.5)).divide(nir.add(red.multiply(6)).subtract(blue.multiply(7.5)).add(1));
return evi.rename(“EVI”);
},
}
https://engine.piesat.cn/engine/home?sourceId=bf6d534429a543b8bda2564dee18bc28
PIE-Engine 平台介绍
PIE-Engine(Pixel Information Expert Engine)是由航天宏图公司独立自主研发的开放式遥感云服务平台,致力于实现遥感数据按需获取、运算以及专题信息聚焦服务,满足对地观测数据获取能力飞速增长带来的信息高效化处理和服务需求,加速我国遥感技术的发展进程。
目前平台数据储量已超过6PB,存储国内外近150种遥感数据集,超过900万景影像数据,涵盖光学、微波、高光谱、高程、人口、气象、夜光等各种数据集和专题产品,国内数据包括高分、风云、海洋系列等,国外数据包括Landsat、MODIS、Sentinel系列等。