合成低亮温区模拟反射率:
先进行亮温差分
dif = bt31 - bt32
我们希望把差分亮温通过一定的映射转化为模拟反射率。3.a介绍的色阶本质上就是一类映射,而这里我们所需的映射也可以通过色阶达成。pcolormesh+色阶的办法只能给出色阶映射后的图像,而我们想要的是映射后的二维数组以方便后续计算,这就需要matplotlib.colors.Normalize和matplotlib.cm.ScalarMappable这两个功能。
from matplotlib.colors import LinearSegmentedColormap, Normalize
from matplotlib.cm import ScalarMappable
定义映射方式。色阶范围为-15~15度的亮温差分值,色阶名为colddata。
norm1 = Normalize(vmin=-15, vmax=15, clip=True)
map1 = ScalarMappable(norm1, LinearSegmentedColormap('1', colddata))
colddata是用于强调高反射率云盖与低反射率卷云的色阶,在映射过程中拉高了两者的对比度,有助于分辨CDO边缘。色阶的具体数值是经验性的,各位也可以按照个人喜好微调。做从亮温差分到模拟反射率的映射中,并不需要多种颜色,因此这里rgb三色中只有red起作用。
colddata={'green': [(0, 0, 0),
(1, 1, 1)],
'red': [(0, 1, 1),
(0.37, 1, 1),
(0.438, 0.98, 0.98),
(0.468, 0.94, 0.94),
(0.498, 0.85, 0.85),
(0.508, 0.81, 0.81),
(0.538, 0.75, 0.75),
(0.638, 0.61, 0.61),
(0.758, 0.51, 0.51),
(1, 0.5, 0.5)],
'blue': [(0, 0, 0),
(1, 1, 1)]}
映射后会得到rgba形式的低温区模拟反射率,是2030×1354×4的三维数组,其中第三个维度分别是r, g, b, a,用索引取出r就得到了低温区的模拟反射率。
ref_cold = map1.to_rgba(dif)[:, :, 0]

先进行亮温差分
dif = bt31 - bt32
我们希望把差分亮温通过一定的映射转化为模拟反射率。3.a介绍的色阶本质上就是一类映射,而这里我们所需的映射也可以通过色阶达成。pcolormesh+色阶的办法只能给出色阶映射后的图像,而我们想要的是映射后的二维数组以方便后续计算,这就需要matplotlib.colors.Normalize和matplotlib.cm.ScalarMappable这两个功能。
from matplotlib.colors import LinearSegmentedColormap, Normalize
from matplotlib.cm import ScalarMappable
定义映射方式。色阶范围为-15~15度的亮温差分值,色阶名为colddata。
norm1 = Normalize(vmin=-15, vmax=15, clip=True)
map1 = ScalarMappable(norm1, LinearSegmentedColormap('1', colddata))
colddata是用于强调高反射率云盖与低反射率卷云的色阶,在映射过程中拉高了两者的对比度,有助于分辨CDO边缘。色阶的具体数值是经验性的,各位也可以按照个人喜好微调。做从亮温差分到模拟反射率的映射中,并不需要多种颜色,因此这里rgb三色中只有red起作用。
colddata={'green': [(0, 0, 0),
(1, 1, 1)],
'red': [(0, 1, 1),
(0.37, 1, 1),
(0.438, 0.98, 0.98),
(0.468, 0.94, 0.94),
(0.498, 0.85, 0.85),
(0.508, 0.81, 0.81),
(0.538, 0.75, 0.75),
(0.638, 0.61, 0.61),
(0.758, 0.51, 0.51),
(1, 0.5, 0.5)],
'blue': [(0, 0, 0),
(1, 1, 1)]}
映射后会得到rgba形式的低温区模拟反射率,是2030×1354×4的三维数组,其中第三个维度分别是r, g, b, a,用索引取出r就得到了低温区的模拟反射率。
ref_cold = map1.to_rgba(dif)[:, :, 0]
