基于Landsat 8 影像的缨帽变换
var roi = ee.FeatureCollection('users/yongweicao11/Dongguan2022');
// Landsat 8 的缨帽变换系数矩阵var Landsat8TC = ee.Array([[0.3029, 0.2786 , 0.4733, 0.5599, 0.5082, 0.1872],[-0.2941, -0.2435, -0.5424, 0.7276, 0.0713, -0.1608],[0.1511, 0.1973, 0.3283, 0.3406, -0.7117, -0.4559],[-0.8239, 0.0849, 0.4396, -0.0580, 0.2013, -0.2773],[-0.3294, 0.0557, 0.1056, 0.1855, -0.4349, 0.8085],[0.1079, -0.9023, 0.4119, 0.0575, -0.0259, 0.0252]]);var imageL8 = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2").filterBounds(roi) .filterDate('2023-01-01', '2023-09-01') .filter(ee.Filter.lt('CLOUD_COVER', 10));
imageL8 = imageL8.mean().clip(roi);
print(imageL8)
//Display the true-color image.
var trueColor = { bands: ['SR_B4', 'SR_B3', 'SR_B2'], min: 7000, max: 15000
};
Map.addLayer(imageL8, trueColor, 'L8 true color'); var bands = ['SR_B2', 'SR_B3', 'SR_B4', 'SR_B5', 'SR_B6', 'SR_B7'];
// // 将影像中的波段转换为一维数组
var arrayImage1D = imageL8.select(bands).toArray();
// // 将一维数组转换为二维数组(行数为波段数量,列数为像素数量)
var arrayImage2D = arrayImage1D.toArray(1);
// // 应用 Tasseled Cap 转换,计算亮度、绿色度和湿度等特征
var tasselCapImage = ee.Image(Landsat8TC).matrixMultiply(arrayImage2D) // // 矩阵乘法,进行 TCT.arrayProject([0]) // 在第一个维度上进行投影,得到每个像素的 TCT 结果.arrayFlatten([ // 将结果展平,给每个输出的通道命名['brightness', 'greenness', 'wetness', 'fourth', 'fifth', 'sixth']
]);
// 定义 Tasseled Cap 组件的可视化参数
var vizParams = { bands: ['brightness', 'greenness', 'wetness'], min: -0.1, max: [0.5, 0.1, 0.1]
};
Map.addLayer(tasselCapImage, vizParams, 'TC components');
产看结果(亮度映射为红色,绿度映射为黄色,湿度映射为粉色,左上角的直线区域是因为有云)
Landsat 8 真彩色影像
不知道如何自定义变量的映射颜色(如:把亮度映射为黄色、绿度映射为绿色、湿度映射为蓝色),希望由知道的大佬可以指教一二