Implementation
static Hourly? fromVariable(VariableWithValues v) => switch (v.variable) {
Variable.apparent_temperature => Hourly.apparent_temperature,
Variable.pressure_msl => Hourly.pressure_msl,
Variable.surface_pressure => Hourly.surface_pressure,
Variable.cloud_cover => Hourly.cloud_cover,
Variable.cloud_cover_low => Hourly.cloud_cover_low,
Variable.cloud_cover_mid => Hourly.cloud_cover_mid,
Variable.cloud_cover_high => Hourly.cloud_cover_high,
Variable.shortwave_radiation => Hourly.shortwave_radiation,
Variable.direct_radiation => Hourly.direct_radiation,
Variable.direct_normal_irradiance => Hourly.direct_normal_irradiance,
Variable.diffuse_radiation => Hourly.diffuse_radiation,
Variable.vapour_pressure_deficit => Hourly.vapour_pressure_deficit,
Variable.cape => Hourly.cape,
Variable.evapotranspiration => Hourly.evapotranspiration,
Variable.et0_fao_evapotranspiration =>
Hourly.et0_fao_evapotranspiration,
Variable.precipitation => Hourly.precipitation,
Variable.snowfall => Hourly.snowfall,
Variable.precipitation_probability => Hourly.precipitation_probability,
Variable.rain => Hourly.rain,
Variable.showers => Hourly.showers,
Variable.weather_code => Hourly.weather_code,
Variable.snow_depth => Hourly.snow_depth,
Variable.freezing_level_height => Hourly.freezing_level_height,
Variable.visibility => Hourly.visibility,
Variable.is_day => Hourly.is_day,
Variable.global_tilted_irradiance => Hourly.global_tilted_irradiance,
Variable.sunshine_duration => Hourly.sunshine_duration,
Variable.surface_temperature => Hourly.surface_temperature,
Variable.wave_height => Hourly.wave_height,
Variable.wind_wave_height => Hourly.wind_wave_height,
Variable.swell_wave_height => Hourly.swell_wave_height,
Variable.wave_direction => Hourly.wave_direction,
Variable.wind_wave_direction => Hourly.wind_wave_direction,
Variable.swell_wave_direction => Hourly.swell_wave_direction,
Variable.wave_period => Hourly.wave_period,
Variable.wind_wave_period => Hourly.wind_wave_period,
Variable.swell_wave_period => Hourly.swell_wave_period,
Variable.wind_wave_peak_period => Hourly.wind_wave_peak_period,
Variable.swell_wave_peak_period => Hourly.swell_wave_peak_period,
Variable.ocean_current_velocity => Hourly.ocean_current_velocity,
Variable.ocean_current_direction => Hourly.ocean_current_direction,
Variable.pm10 => Hourly.pm10,
Variable.pm2p5 => Hourly.pm2_5,
Variable.carbon_monoxide => Hourly.carbon_monoxide,
Variable.nitrogen_dioxide => Hourly.nitrogen_dioxide,
Variable.sulphur_dioxide => Hourly.sulphur_dioxide,
Variable.ozone => Hourly.ozone,
Variable.ammonia => Hourly.ammonia,
Variable.aerosol_optical_depth => Hourly.aerosol_optical_depth,
Variable.dust => Hourly.dust,
Variable.uv_index => Hourly.uv_index,
Variable.uv_index_clear_sky => Hourly.uv_index_clear_sky,
Variable.alder_pollen => Hourly.alder_pollen,
Variable.birch_pollen => Hourly.birch_pollen,
Variable.grass_pollen => Hourly.grass_pollen,
Variable.mugwort_pollen => Hourly.mugwort_pollen,
Variable.olive_pollen => Hourly.olive_pollen,
Variable.ragweed_pollen => Hourly.ragweed_pollen,
Variable.european_aqi => Hourly.european_aqi,
Variable.european_aqi_pm2p5 => Hourly.european_aqi_pm2_5,
Variable.european_aqi_pm10 => Hourly.european_aqi_pm10,
Variable.european_aqi_nitrogen_dioxide =>
Hourly.european_aqi_nitrogen_dioxide,
Variable.european_aqi_ozone => Hourly.european_aqi_ozone,
Variable.european_aqi_sulphur_dioxide =>
Hourly.european_aqi_sulphur_dioxide,
Variable.us_aqi => Hourly.us_aqi,
Variable.us_aqi_pm2p5 => Hourly.us_aqi_pm2_5,
Variable.us_aqi_pm10 => Hourly.us_aqi_pm10,
Variable.us_aqi_nitrogen_dioxide => Hourly.us_aqi_nitrogen_dioxide,
Variable.us_aqi_ozone => Hourly.us_aqi_ozone,
Variable.us_aqi_sulphur_dioxide => Hourly.us_aqi_sulphur_dioxide,
Variable.us_aqi_carbon_monoxide => Hourly.us_aqi_carbon_monoxide,
Variable.temperature => switch (v.altitude) {
2 => Hourly.temperature_2m,
_ => null,
},
Variable.relative_humidity => Hourly.relative_humidity_2m,
Variable.dew_point => Hourly.dew_point_2m,
Variable.wind_gusts => Hourly.wind_gusts_10m,
Variable.wind_speed => switch (v.altitude) {
10 => Hourly.wind_speed_10m,
80 => Hourly.wind_speed_80m,
100 => Hourly.wind_speed_100m,
120 => Hourly.wind_speed_120m,
180 => Hourly.wind_speed_180m,
_ => null,
},
Variable.wind_direction => switch (v.altitude) {
10 => Hourly.wind_direction_10m,
80 => Hourly.wind_direction_80m,
100 => Hourly.wind_direction_100m,
120 => Hourly.wind_direction_120m,
180 => Hourly.wind_direction_180m,
_ => null,
},
Variable.soil_temperature => switch (((v.depth), (v.depthTo))) {
(0, 0) => Hourly.soil_temperature_0cm,
(6, 6) => Hourly.soil_temperature_6cm,
(18, 18) => Hourly.soil_temperature_18cm,
(54, 54) => Hourly.soil_temperature_54cm,
(0, 7) => Hourly.soil_temperature_0_to_7cm,
(7, 28) => Hourly.soil_temperature_7_to_28cm,
(28, 100) => Hourly.soil_temperature_28_to_100cm,
(100, 255) => Hourly.soil_temperature_100_to_255cm,
(0, 10) => Hourly.soil_temperature_0_to_10cm,
(10, 40) => Hourly.soil_temperature_10_to_40cm,
(40, 100) => Hourly.soil_temperature_40_to_100cm,
(100, 200) => Hourly.soil_temperature_100_to_200cm,
_ => null,
},
Variable.soil_moisture => switch (((v.depth), (v.depthTo))) {
(0, 1) => Hourly.soil_moisture_0_to_1cm,
(1, 3) => Hourly.soil_moisture_1_to_3cm,
(3, 9) => Hourly.soil_moisture_3_to_9cm,
(9, 27) => Hourly.soil_moisture_9_to_27cm,
(27, 81) => Hourly.soil_moisture_27_to_81cm,
(0, 7) => Hourly.soil_moisture_0_to_7cm,
(7, 28) => Hourly.soil_moisture_7_to_28cm,
(28, 100) => Hourly.soil_moisture_28_to_100cm,
(100, 255) => Hourly.soil_moisture_100_to_255cm,
(0, 10) => Hourly.soil_moisture_0_to_10cm,
(10, 40) => Hourly.soil_moisture_10_to_40cm,
(40, 100) => Hourly.soil_moisture_40_to_100cm,
(100, 200) => Hourly.soil_moisture_100_to_200cm,
_ => null,
},
_ => null,
};