Correct colors for categorical rain

This commit is contained in:
Guntis Smaukstelis
2025-02-04 21:59:39 +02:00
parent 2b1e348dde
commit 5cb5b5fc47
2 changed files with 19 additions and 25 deletions
+1 -1
View File
@@ -82,7 +82,7 @@ export const GribFile: Component<{
{ getGribList() { getGribList()
.sort((a, b) => a.title > b.title ? 1 : -1) .sort((a, b) => a.title > b.title ? 1 : -1)
.map((grib, i) => .map((grib, i) =>
<li onClick={() => onParamClick(i)}>{ grib.title }</li> <li onClick={() => onParamClick(i)}>{ grib.title.replace('meteorology, ', '') }</li>
)} )}
</ul> </ul>
</li> </li>
+18 -24
View File
@@ -1,43 +1,37 @@
type RGBAu8 = [number, number, number, number] type RGBAu8 = [number, number, number, number]
const FOG: RGBAu8 = [254, 248, 0, 255] // 'fef800' const DRIZZLE: RGBAu8 = [5, 200, 0, 255]
const FOG_FREEZING: RGBAu8 = [194, 188, 0, 255] // 'c2bc00' const RAIN: RGBAu8 = [50, 150, 0, 255]
const RAIN_LIGHT: RGBAu8 = [0, 255, 0, 255] // '00ff00' const SLEET: RGBAu8 = [255, 175, 0, 255]
const RAIN_MODERATE: RGBAu8 = [0, 197, 0, 255] // '00c500' const SNOW: RGBAu8 = [0, 160, 255, 255]
const RAIN_HEAVY: RGBAu8 = [0, 132, 0, 255] // '008400' const FREEZING_DRIZZLE: RGBAu8 = [255, 100, 120, 255]
const ICE_LIGHT: RGBAu8 = [255, 32, 55, 255] // 'ff2037' const FREEZING_RAIN: RGBAu8 = [255, 0, 0, 255]
const ICE_HEAVY: RGBAu8 = [220, 0, 0, 255] // 'dc0000' const GRAUPEL: RGBAu8 = [230, 40, 250, 255]
const HAIL: RGBAu8 = [180, 0, 250, 255]
export function categoricalRainColors(value: number): RGBAu8 { export function categoricalRainColors(value: number): RGBAu8 {
switch (value) { switch (value) {
case 0: case 0:
return FOG return DRIZZLE
case 1*32: case 1*32:
return FOG_FREEZING return RAIN
case 2*32: case 2*32:
return RAIN_LIGHT return SLEET
case 3*32: case 3*32:
return RAIN_MODERATE return SNOW
case 4*32: case 4*32:
return RAIN_HEAVY return FREEZING_DRIZZLE
case 5*32: case 5*32:
return ICE_LIGHT return FREEZING_RAIN
case 6*32: case 6*32:
return ICE_HEAVY return GRAUPEL
case 7*32:
return HAIL
default: default:
return [255, 255, 255, 0] return [255, 255, 255, 0]
} }
} }
/* FROM CHATGPT
0 = No rain
1 * 32 = 32 (Drizzle)
2 * 32 = 64 (Light rain)
3 * 32 = 96 (Moderate rain)
4 * 32 = 128 (Heavy rain)
5 * 32 = 160 (Very heavy rain, if applicable)
6 * 32 = 192 (Extreme rain, if applicable)
*/
export function hexToU8(hex: string): [number, number, number] { export function hexToU8(hex: string): [number, number, number] {
return [parseInt('0x'+hex.slice(0, 2)), parseInt('0x'+hex.slice(2, 4)), parseInt('0x'+hex.slice(4, 6))] return [parseInt('0x'+hex.slice(0, 2)), parseInt('0x'+hex.slice(2, 4)), parseInt('0x'+hex.slice(4, 6))]
} }