# S5P_L2_SO2

## Variables

The table below lists the variables that are present in the HARP product that results from an ingestion of `S5P_L2_SO2` data.

field name | type | dimensions | unit | description
--- | --- | --- | --- | ---
scan_subindex | int16 | {time} |  | pixel index (0-based) within the scanline
datetime_start | double | {time} | [seconds since 2010-01-01] | start time of the measurement
datetime_length | double |  | [s] | duration of the measurement
orbit_index | int32 |  |  | absolute orbit number
validity | int32 | {time} |  | processing quality flag
latitude | float | {time} | [degree_north] | latitude of the ground pixel center (WGS84)
longitude | float | {time} | [degree_east] | longitude of the ground pixel center (WGS84)
latitude_bounds | float | {time, 4} | [degree_north] | latitudes of the ground pixel corners (WGS84)
longitude_bounds | float | {time, 4} | [degree_east] | longitudes of the ground pixel corners (WGS84)
sensor_latitude | float | {time} | [degree_north] | latitude of the geodetic sub-satellite point (WGS84)
sensor_longitude | float | {time} | [degree_east] | longitude of the goedetic sub-satellite point (WGS84)
sensor_altitude | float | {time} | [m] | altitude of the satellite with respect to the geodetic sub-satellite point (WGS84)
solar_zenith_angle | float | {time} | [degree] | zenith angle of the Sun at the ground pixel location (WGS84); angle measured away from the vertical
solar_azimuth_angle | float | {time} | [degree] | azimuth angle of the Sun at the ground pixel location (WGS84); angle measured East-of-North
sensor_zenith_angle | float | {time} | [degree] | zenith angle of the satellite at the ground pixel location (WGS84); angle measured away from the vertical
sensor_azimuth_angle | float | {time} | [degree] | azimuth angle of the satellite at the ground pixel location (WGS84); angle measured East-of-North
pressure | double | {time, vertical} | [Pa] | pressure
SO2_column_number_density | float | {time} | [mol/m^2] | SO2 vertical column density
SO2_column_number_density_uncertainty_random | float | {time} | [mol/m^2] | random component of the uncertainty of the SO2 vertical column density
SO2_column_number_density_uncertainty_systematic | float | {time} | [mol/m^2] | systematic component of the uncertainty of the SO2 vertical column density
SO2_column_number_density_validity | int8 | {time} |  | continuous quality descriptor, varying between 0 (no data) and 100 (full quality data)
SO2_column_number_density_amf | float | {time} | [] | total air mass factor
SO2_column_number_density_amf_uncertainty_random | float | {time} | [] | random component of the uncertainty of the total air mass factor
SO2_column_number_density_amf_uncertainty_systematic | float | {time} | [] | systematic component of the uncertainty of the total air mass factor
SO2_column_number_density_avk | float | {time, vertical} | [] | averaging kernel for the SO2 vertical column density
SO2_volume_mixing_ratio_dry_air_apriori | float | {time, vertical} | [ppv] | SO2 apriori profile in volume mixing ratios
SO2_slant_column_number_density | float | {time} | [mol/m^2] | SO2 slant column density
SO2_type | int8 | {time} |  | type of SO2 detected; enumeration values: no_detection (0), so2_detected (1), volcanic_detection (2), detection_near_anthropogenic_source (3), detection_at_high_sza (4)
SO2_layer_height | float | {time} | [m] | SO2 layer height
SO2_layer_height_uncertainty | float | {time} | [m] | SO2 layer height uncertainty
SO2_layer_height_validity | int8 | {time} |  | continuous quality descriptor, varying between 0 (no data) and 100 (full quality data)
SO2_layer_pressure | float | {time} | [Pa] | SO2 layer pressure
O3_column_number_density | float | {time} | [mol/m^2] | O3 vertical column density
O3_column_number_density_uncertainty | float | {time} | [mol/m^2] | random component of the uncertainty of the O3 vertical column density
absorbing_aerosol_index | float | {time} | [] | aerosol index
cloud_albedo | float | {time} | [] | cloud albedo
cloud_albedo_uncertainty | float | {time} | [] | uncertainty of the cloud albedo
cloud_fraction | float | {time} | [] | cloud fraction
cloud_fraction_uncertainty | float | {time} | [] | uncertainty of the cloud fraction
cloud_height | float | {time} | [km] | cloud height
cloud_height_uncertainty | float | {time} | [km] | uncertainty of the cloud height
cloud_pressure | float | {time} | [Pa] | cloud pressure
cloud_pressure_uncertainty | float | {time} | [Pa] | uncertainty of the cloud pressure
surface_albedo | float | {time} | [] | surface albedo
surface_altitude | float | {time} | [m] | surface altitude
surface_altitude_uncertainty | float | {time} | [m] | surface altitude precision
surface_pressure | float | {time} | [Pa] | surface pressure
surface_meridional_wind_velocity | float | {time} | [m/s] | northward wind
surface_zonal_wind_velocity | float | {time} | [m/s] | eastward wind
tropopause_pressure | double | {time} | [Pa] | tropopause pressure
index | int32 | {time} |  | zero-based index of the sample within the source product

## Ingestion options

The table below lists the available ingestion options for `S5P_L2_SO2` products.

option name | legal values | description
--- | --- | ---
so2_column | 1km, 7km, 15km, lh | whether to ingest the anothropogenic SO2 column at the PBL (default), the SO2 column from the 1km box profile (so2_column=1km), from the 7km box profile (so2_column=7km), from the 15km box profile (so2_column=15km), or the SO2 column consistent with the SO2 layer height (so2_column=lh); providing this option will only work for NRTI data or for OFFL data with processor version >= 01.01.01 (otherwise an empty product is returned); layer height data is only available for processor version >= 02.05.00
cloud_fraction | radiance | whether to ingest the cloud fraction (default) or the radiance cloud fraction (cloud_fraction=radiance)

## Mapping description

The table below details where and how each variable was retrieved from the input product.

field name | mapping description
--- | ---
scan_subindex | description | the scanline and pixel dimensions are collapsed into a temporal dimension; the index of the pixel within the scanline is computed as the index on the temporal dimension modulo the number of scanlines
datetime_start | path | /PRODUCT/time, /PRODUCT/delta_time[]
description | time converted from milliseconds since a reference time (given as seconds since 2010-01-01) to seconds since 2010-01-01 (using 86400 seconds per day)
datetime_length | path | /@time_coverage_resolution
description | the measurement length is parsed assuming the ISO 8601 ‘PT%(interval_seconds)fS’ format
orbit_index | path | /@orbit
validity | path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/processing_quality_flags[]
description | the uint32 data is cast to int32
latitude | path | /PRODUCT/latitude[]
longitude | path | /PRODUCT/longitude[]
latitude_bounds | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/latitude_bounds[]
longitude_bounds | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/longitude_bounds[]
sensor_latitude | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/satellite_latitude[]
description | the satellite latitude associated with a scanline is repeated for each pixel in the scanline
sensor_longitude | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/satellite_longitude[]
description | the satellite longitude associated with a scanline is repeated for each pixel in the scanline
sensor_altitude | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/satellite_altitude[]
description | the satellite altitude associated with a scanline is repeated for each pixel in the scanline
solar_zenith_angle | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/solar_zenith_angle[]
solar_azimuth_angle | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/solar_azimuth_angle[]
sensor_zenith_angle | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/viewing_zenith_angle[]
sensor_azimuth_angle | path | /PRODUCT/SUPPORT_DATA/GEOLOCATIONS/viewing_azimuth_angle[]
pressure | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/tm5_constant_a[], /PRODUCT/SUPPORT_DATA/INPUT_DATA/tm5_constant_b[], /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_pressure[]
description | pressure in Pa at layer k is derived from surface pressure in Pa as: tm5_constant_a[k] + tm5_constant_b[k] * surface_pressure[]
SO2_column_number_density | condition | so2_column unset
path | /PRODUCT/sulfurdioxide_total_vertical_column[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_1km[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_7km[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_15km[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_vertical_column_layer_height[]
SO2_column_number_density_uncertainty_random | condition | so2_column unset
path | /PRODUCT/sulfurdioxide_total_vertical_column_precision[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_1km_precision[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_7km_precision[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_15km_precision[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_vertical_column_layer_height_precision[]
SO2_column_number_density_uncertainty_systematic | available | optional
condition | so2_column unset and (NRTI or processor version >= 01.00.00)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_trueness[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_1km_trueness[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_7km_trueness[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_vertical_column_15km_trueness[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_vertical_column_layer_height_trueness[]
SO2_column_number_density_validity | available | optional
condition | so2_column!=lh
path | /PRODUCT/qa_value
SO2_column_number_density_amf | condition | so2_column unset
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_polluted[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_1km[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_7km[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_15km[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_air_mass_factor_layer_height[]
SO2_column_number_density_amf_uncertainty_random | available | optional
condition | so2_column unset and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_polluted_precision[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_1km_precision[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_7km_precision[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_15km_precision[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_air_mass_factor_layer_height_precision[]
SO2_column_number_density_amf_uncertainty_systematic | available | optional
condition | so2_column unset and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_polluted_trueness[]
condition | so2_column=1km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_1km_trueness[]
condition | so2_column=7km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_7km_trueness[]
condition | so2_column=15km and (NRTI or processor version >= 01.01.01)
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_total_air_mass_factor_15km_trueness[]
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_total_air_mass_factor_layer_height_trueness[]
SO2_column_number_density_avk | path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/averaging_kernel[]
condition | so2_column=1km
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/averaging_kernel[], /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_averaging_kernel_scaling_box_1km[]
description | the averaging kernel is multiplied by the scaling factor
condition | so2_column=7km
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/averaging_kernel[], /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_averaging_kernel_scaling_box_7km[]
description | the averaging kernel is multiplied by the scaling factor
condition | so2_column=15km
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/averaging_kernel[], /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_averaging_kernel_scaling_box_15km[]
description | the averaging kernel is multiplied by the scaling factor
condition | so2_column=lh and processor version >= 02.05.00
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/averaging_kernel[], /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_averaging_kernel_scaling_box_layer_height[]
description | the averaging kernel is multiplied by the scaling factor
SO2_volume_mixing_ratio_dry_air_apriori | available | optional
condition | so2_column unset
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_profile_apriori[]
SO2_slant_column_number_density | path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_slant_column_corrected[]
SO2_type | path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/sulfurdioxide_detection_flag[]
SO2_layer_height | available | optional
condition | processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_layer_height[]
SO2_layer_height_uncertainty | available | optional
condition | processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_layer_height_precision[]
SO2_layer_height_validity | available | optional
condition | processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/qa_value_layer_height
SO2_layer_pressure | available | optional
condition | processor version >= 02.05.00
path | /PRODUCT/SO2_LAYER_HEIGHT/sulfurdioxide_layer_pressure[]
O3_column_number_density | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/ozone_total_vertical_column[]
O3_column_number_density_uncertainty | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/ozone_total_vertical_column_precision[]
absorbing_aerosol_index | available | optional
condition | OFFL
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/aerosol_index_340_380
cloud_albedo | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_albedo_crb
cloud_albedo_uncertainty | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_albedo_crb_precision
cloud_fraction | condition | cloud_fraction unset
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_fraction_crb[]
condition | cloud_fraction=radiance
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/cloud_fraction_intensity_weighted[]
cloud_fraction_uncertainty | condition | cloud_fraction unset
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_fraction_crb_precision[]
condition | cloud_fraction=radiance
path | /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/cloud_fraction_intensity_weighted_precision[]
cloud_height | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_height_crb
cloud_height_uncertainty | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_height_crb_precision
cloud_pressure | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_pressure_crb
cloud_pressure_uncertainty | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/cloud_pressure_crb_precision
surface_albedo | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_albedo_328nm, /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_albedo_376nm, /PRODUCT/SUPPORT_DATA/DETAILED_RESULTS/selected_fitting_window_flag
description | if selected_fitting_window_flag is 1 or 2 then use surface_albedo_328, if selected_fitting_window_flag is 3 then use surface_albedo_376, else set to NaN
surface_altitude | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_altitude[]
surface_altitude_uncertainty | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_altitude_precision[]
surface_pressure | path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_pressure[]
surface_meridional_wind_velocity | available | optional
condition | processor version >= 02.00.00
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/northward_wind[]
surface_zonal_wind_velocity | available | optional
condition | processor version >= 02.00.00
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/eastward_wind[]
tropopause_pressure | available | optional
condition | processor version >= 02.00.00
path | /PRODUCT/SUPPORT_DATA/INPUT_DATA/tm5_constant_a[], /PRODUCT/SUPPORT_DATA/INPUT_DATA/tm5_constant_b[], /PRODUCT/SUPPORT_DATA/INPUT_DATA/tm5_tropopause_layer_index[], /PRODUCT/SUPPORT_DATA/INPUT_DATA/surface_pressure[]
description | pressure in Pa at tropause is derived from the upper bound of the layer with tropopause layer index k: exp((log(tm5_constant_a[k] + tm5_constant_b[k] * surface_pressure[]) + log(tm5_constant_a[k + 1] + tm5_constant_b[k + 1] * surface_pressure[]))/2.0)