{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# EARLINET Lidar backscatter profiles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{hint} \n",
"Execute the notebook on the training platform >> \n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {
"Collapsed": "false"
},
"source": [
"The European Aerosol Research Lidar Network (EARLINET) , was established in 2000 as a research project with the goal of creating a quantitative, comprehensive, and statistically significant database for the horizontal, vertical, and temporal distribution of aerosols on a continental scale. Since then EARLINET has continued to provide the most extensive collection of ground-based data for the aerosol vertical distribution over Europe.\n",
"\n",
"Atmospheric aerosols are considered one of the major uncertainties in climate forcing, and a detailed aerosol characterization is needed in order to understand their role in the atmospheric processes as well as human health and environment. The most significant source of uncertainty is the large variability in space and time. Due to their short lifetime and strong interactions, their global concentrations and properties are poorly known. For these reasons, information on the large-scale three-dimensional aerosol distribution in the atmosphere should be continuously monitored. It is undoubted that information on the vertical distribution is particularly important and that lidar remote sensing is the most appropriate tool for providing this information. \n",
"\n",
"EARLINET offers access to `long-term multi-wavelength backscatter and extinction coefficient profiles` via an easily accessible database, covering the European continent. See here an overview of the EARLINET Lidar Stations."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{admonition} Basic facts\n",
"**Spatial coverage**: `Observation stations in Europe` \n",
"**Temporal resolution**: `sub-hourly` \n",
"**Temporal coverage**: `since 2000` \n",
"**Data format**: `NetCDF` \n",
"**Versions**: `Level 1 (basic quality control)`, `Level 2 (advanced quality control)`, `Level 3 (climatological aggregated products)`\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```{admonition} How to access the data\n",
"EARLINET data are available in `netCDF` and can be accessed via the EARLINET Database . Data are offered on different quality controlled levels:\n",
"* `Level 1`: Basic quality control \n",
"* `Level 2`: Advanced quality control, and \n",
"* `Level 3`: Climatological aggregated products \n",
"\n",
"For the example below, we selected data on 23 February 2021 for the station IPR, which stands for Ispra, Italy, with the following characteristics:\n",
"* **Emission wavelengths**: `1064`\n",
"* **File Types**: `b - Backscatter`\n",
"* **Levels**: `Level 2.0`\n",
"\n",
"When you click on `SEARCH FILES`, you get an overview of all available files with the selected characteristics. The files are disseminated in `netCDF` format.\n",
"\n",
"**Note**: You have to register for the EARLINET Data Portal in order to be able to download EARLINET data.\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
"\n",
"\n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"
<xarray.Dataset>\n",
"Dimensions: (altitude: 128, nv: 2, time: 9, wavelength: 1)\n",
"Coordinates:\n",
" * altitude (altitude) float64 539.0 ...\n",
" * time (time) datetime64[ns] 202...\n",
" * wavelength (wavelength) float32 1.06...\n",
" longitude float32 8.617\n",
" latitude float32 45.82\n",
"Dimensions without coordinates: nv\n",
"Data variables:\n",
" time_bounds (altitude, time, nv) datetime64[ns] dask.array<chunksize=(128, 1, 2), meta=np.ndarray>\n",
" backscatter_calibration_value (time, altitude, wavelength) float32 dask.array<chunksize=(1, 128, 1), meta=np.ndarray>\n",
" error_retrieval_method (time, altitude, wavelength) float32 dask.array<chunksize=(1, 128, 1), meta=np.ndarray>\n",
" backscatter_evaluation_method (time, altitude, wavelength) float32 dask.array<chunksize=(1, 128, 1), meta=np.ndarray>\n",
" backscatter_calibration_range_search_algorithm (time, altitude, wavelength) float32 dask.array<chunksize=(1, 128, 1), meta=np.ndarray>\n",
" elastic_backscatter_algorithm (time, altitude, wavelength) float32 dask.array<chunksize=(1, 128, 1), meta=np.ndarray>\n",
" station_altitude (time, altitude) float64 ...\n",
" zenith_angle (time, altitude) float64 ...\n",
" shots (altitude, time) float64 dask.array<chunksize=(128, 1), meta=np.ndarray>\n",
" atmospheric_molecular_calculation_source (time, altitude) float64 ...\n",
" cirrus_contamination (time, altitude) float64 ...\n",
" cirrus_contamination_source (time, altitude) float64 ...\n",
" quality_control_level (time, altitude) float64 ...\n",
" basic_quality_control (time, altitude) float64 ...\n",
" advanced_quality_control (time, altitude) float64 ...\n",
" backscatter (wavelength, time, altitude) float64 dask.array<chunksize=(1, 1, 128), meta=np.ndarray>\n",
" error_backscatter (wavelength, time, altitude) float64 dask.array<chunksize=(1, 1, 128), meta=np.ndarray>\n",
" vertical_resolution (wavelength, time, altitude) float64 dask.array<chunksize=(1, 1, 128), meta=np.ndarray>\n",
" assumed_particle_lidar_ratio (wavelength, time, altitude) float64 dask.array<chunksize=(1, 1, 128), meta=np.ndarray>\n",
" assumed_particle_lidar_ratio_error (wavelength, time, altitude) float64 dask.array<chunksize=(1, 1, 128), meta=np.ndarray>\n",
" earlinet_product_type (time, altitude) float64 ...\n",
" user_defined_category (time, altitude) float64 ...\n",
" backscatter_calibration_range (time, altitude, wavelength, nv) float32 dask.array<chunksize=(1, 128, 1, 2), meta=np.ndarray>\n",
" backscatter_calibration_search_range (time, altitude, wavelength, nv) float32 dask.array<chunksize=(1, 128, 1, 2), meta=np.ndarray>\n",
" cloud_mask_type (time, altitude) float64 ...\n",
" scc_product_type (time, altitude) float64 ...\n",
" cloud_mask (time, altitude) float32 dask.array<chunksize=(1, 128), meta=np.ndarray>\n",
"Attributes:\n",
" Conventions: CF-1.7\n",
" title: Profiles of aerosol optical properties\n",
" source: Ground based LIDAR measurements\n",
" references: Project website at http://www.earli...\n",
" history: 2021-10-06T09:20Z : Assigned versio...\n",
" station_ID: ipr\n",
" location: Ispra, Italy\n",
" system: ADAM-noew-2019\n",
" institution: Joint Research Centre - Institute f...\n",
" comment: \n",
" measurement_ID: 20210223is10\n",
" measurement_start_datetime: 2021-02-23T11:02:16Z\n",
" measurement_stop_datetime: 2021-02-23T11:29:18Z\n",
" PI: Jean Putaud\n",
" PI_affiliation: Joint Research Centre - Air and Cli...\n",
" PI_affiliation_acronym: JRC\n",
" PI_address: \n",
" PI_phone: +39 0332 78 50 41\n",
" PI_email: jean.putaud@ec.europa.eu\n",
" Data_Originator: jean.putaud\n",
" Data_Originator_affiliation: Joint Research Centre\n",
" Data_Originator_affiliation_acronym: JRC\n",
" Data_Originator_address: 21027 Ispra (VA)\n",
" Data_Originator_phone: ++390332785041\n",
" Data_Originator_email: jean.putaud@ec.europa.eu\n",
" data_processing_institution: Consiglio Nazionale delle Ricerche ...\n",
" hoi_system_ID: 164\n",
" hoi_configuration_ID: 551\n",
" scc_version: 5.2.3\n",
" scc_version_description: SCC vers. 5.2.3 (HiRELPP vers. 1.1....\n",
" processor_name: ELDA\n",
" processor_version: 3.4.8\n",
" __file_format_version: 2.1\n",
" input_file: ipr_003_0000753_202102231102_202102...\n",
" overlap_correction_file: Dimensions: altitude : 128nv : 2time : 9wavelength : 1
Coordinates: (5)
Data variables: (27)
time_bounds
(altitude, time, nv)
datetime64[ns]
dask.array<chunksize=(128, 1, 2), meta=np.ndarray>
\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 18.00 kiB \n",
" 2.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (128, 9, 2) \n",
" (128, 1, 2) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" datetime64[ns] \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 9 \n",
" 128 \n",
" \n",
" \n",
" \n",
"
backscatter_calibration_value
(time, altitude, wavelength)
float32
dask.array<chunksize=(1, 128, 1), meta=np.ndarray>
long_name : assumed backscatter-ratio value in calibration range units : m-1*sr-1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1) \n",
" (1, 128, 1) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 1 \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
error_retrieval_method
(time, altitude, wavelength)
float32
dask.array<chunksize=(1, 128, 1), meta=np.ndarray>
long_name : method used for the retrieval of uncertainties flag_values : [0 1] flag_meanings : monte_carlo error_propagation \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1) \n",
" (1, 128, 1) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 1 \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
backscatter_evaluation_method
(time, altitude, wavelength)
float32
dask.array<chunksize=(1, 128, 1), meta=np.ndarray>
long_name : method used for the backscatter retrieval flag_values : [0 1] flag_meanings : Raman elastic_backscatter \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1) \n",
" (1, 128, 1) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 1 \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
backscatter_calibration_range_search_algorithm
(time, altitude, wavelength)
float32
dask.array<chunksize=(1, 128, 1), meta=np.ndarray>
long_name : algorithm used for the search of the calibration_range flag_values : [0 1] flag_meanings : minimum_of_signal_ratio minimum_of_elastic_signal \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1) \n",
" (1, 128, 1) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 1 \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
elastic_backscatter_algorithm
(time, altitude, wavelength)
float32
dask.array<chunksize=(1, 128, 1), meta=np.ndarray>
long_name : 0: Klett-Fernald, 1: iterative flag_values : [0 1] flag_meanings : Klett-Fernald iterative \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1) \n",
" (1, 128, 1) \n",
" \n",
" \n",
" Count \n",
" 91 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 1 \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
station_altitude
(time, altitude)
float64
209.0 209.0 209.0 ... nan nan nan
long_name : station altitude above see level units : m array([[209., 209., 209., ..., nan, nan, nan],\n",
" [209., 209., 209., ..., nan, nan, nan],\n",
" [209., 209., 209., ..., nan, nan, nan],\n",
" ...,\n",
" [209., 209., 209., ..., 209., 209., 209.],\n",
" [209., 209., 209., ..., nan, nan, nan],\n",
" [209., 209., 209., ..., nan, nan, nan]]) zenith_angle
(time, altitude)
float64
0.0 0.0 0.0 0.0 ... nan nan nan nan
long_name : laser pointing angle with respect to the zenith units : degrees array([[ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" ...,\n",
" [ 0., 0., 0., ..., 0., 0., 0.],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan]]) shots
(altitude, time)
float64
dask.array<chunksize=(128, 1), meta=np.ndarray>
long_name : accumulated laser shots units : 1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (128, 9) \n",
" (128, 1) \n",
" \n",
" \n",
" Count \n",
" 82 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 9 \n",
" 128 \n",
" \n",
" \n",
" \n",
"
atmospheric_molecular_calculation_source
(time, altitude)
float64
6.0 6.0 6.0 6.0 ... nan nan nan nan
long_name : data source of the atmospheric molecular calculations valid_range : [0 8] flag_values : [0 1 2 3 4 5 6 7 8] flag_meanings : US_standard_atmosphere radiosounding ecmwf icon_iglo_12_23 icon_iglo_24_35 icon_iglo_36_47 gdas era5-1-12 era5-7-18 array([[ 6., 6., 6., ..., nan, nan, nan],\n",
" [ 6., 6., 6., ..., nan, nan, nan],\n",
" [ 6., 6., 6., ..., nan, nan, nan],\n",
" ...,\n",
" [ 6., 6., 6., ..., 6., 6., 6.],\n",
" [ 6., 6., 6., ..., nan, nan, nan],\n",
" [ 6., 6., 6., ..., nan, nan, nan]]) cirrus_contamination
(time, altitude)
float64
1.0 1.0 1.0 1.0 ... nan nan nan nan
long_name : do the profiles contain cirrus layers? valid_range : [0 3] flag_values : [0 1 2] flag_meanings : not_available no_cirrus cirrus_detected array([[ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" ...,\n",
" [ 1., 1., 1., ..., 1., 1., 1.],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan]]) cirrus_contamination_source
(time, altitude)
float64
2.0 2.0 2.0 2.0 ... nan nan nan nan
long_name : how was cirrus_contamination obtained? valid_range : [0 3] flag_values : [0 1 2] flag_meanings : not_available user_provided automatic_calculated array([[ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" ...,\n",
" [ 2., 2., 2., ..., 2., 2., 2.],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan]]) quality_control_level
(time, altitude)
float64
2.0 2.0 2.0 2.0 ... nan nan nan nan
long_name : Quality Control Level flag_values : [0 1 2] flag_meanings : File_does_not_overcome_one_or_more_on_fly_quality_control File_does_overcome_all_on_fly_quality_control_but_fails_one_or_more_technical_quality_control File_does_overcome_all_technical_quality_control_and_physical_quality_control version : 2.0 references : https://www.earlinet.org/index.php?id=293 array([[ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" ...,\n",
" [ 2., 2., 2., ..., 2., 2., 2.],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan]]) basic_quality_control
(time, altitude)
float64
7.0 7.0 7.0 7.0 ... nan nan nan nan
long_name : Basic Quality Control valid_range : [0 7] flag_masks : [1 2 4] flag_meanings : Check_if_file_contains_data Check_Coordinates_Consistency Check_for_Undefined_Variables_and_Global_Attributes references : https://www.earlinet.org/index.php?id=293 array([[ 7., 7., 7., ..., nan, nan, nan],\n",
" [ 7., 7., 7., ..., nan, nan, nan],\n",
" [ 7., 7., 7., ..., nan, nan, nan],\n",
" ...,\n",
" [ 7., 7., 7., ..., 7., 7., 7.],\n",
" [ 7., 7., 7., ..., nan, nan, nan],\n",
" [ 7., 7., 7., ..., nan, nan, nan]]) advanced_quality_control
(time, altitude)
float64
2.027e+03 2.027e+03 ... nan nan
long_name : Advanced Quality Control valid_range : [ 0 2027] flag_masks : [ 1 2 8 32 64 128 256 512 1024] flag_meanings : Checks_for_Negative_Errors Negative_peaks Check_on_IB Check_on_Volumedepolarization Check_on_Particledepolarization Check_on_Watervapormixingratio Check_on_atmospheric_molecular_calculation_source Check_on_old_cirrus_product Check_on_SCC_product_type references : https://www.earlinet.org/index.php?id=293 array([[2027., 2027., 2027., ..., nan, nan, nan],\n",
" [2027., 2027., 2027., ..., nan, nan, nan],\n",
" [2027., 2027., 2027., ..., nan, nan, nan],\n",
" ...,\n",
" [2027., 2027., 2027., ..., 2027., 2027., 2027.],\n",
" [2027., 2027., 2027., ..., nan, nan, nan],\n",
" [2027., 2027., 2027., ..., nan, nan, nan]]) backscatter
(wavelength, time, altitude)
float64
dask.array<chunksize=(1, 1, 128), meta=np.ndarray>
ancillary_variables : error_backscatter vertical_resolution long_name : aerosol backscatter coefficient plausibility : parameter passed the EARLINET quality assurance. units : m-1*sr-1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (1, 9, 128) \n",
" (1, 1, 128) \n",
" \n",
" \n",
" Count \n",
" 74 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
error_backscatter
(wavelength, time, altitude)
float64
dask.array<chunksize=(1, 1, 128), meta=np.ndarray>
long_name : statistical uncertainty of aerosol backscatter plausibility : parameter passed the EARLINET quality assurance. units : m-1*sr-1 \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (1, 9, 128) \n",
" (1, 1, 128) \n",
" \n",
" \n",
" Count \n",
" 74 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
vertical_resolution
(wavelength, time, altitude)
float64
dask.array<chunksize=(1, 1, 128), meta=np.ndarray>
long_name : effective vertical resolution according to Pappalardo et al., appl. opt. 2004 units : m \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (1, 9, 128) \n",
" (1, 1, 128) \n",
" \n",
" \n",
" Count \n",
" 74 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
assumed_particle_lidar_ratio
(wavelength, time, altitude)
float64
dask.array<chunksize=(1, 1, 128), meta=np.ndarray>
long_name : assumed particle lidar ratio value to use in elastic only backscatter retrieval units : sr \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (1, 9, 128) \n",
" (1, 1, 128) \n",
" \n",
" \n",
" Count \n",
" 74 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
assumed_particle_lidar_ratio_error
(wavelength, time, altitude)
float64
dask.array<chunksize=(1, 1, 128), meta=np.ndarray>
long_name : assumed_particle_lidar_ratio_error units : sr \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (1, 9, 128) \n",
" (1, 1, 128) \n",
" \n",
" \n",
" Count \n",
" 74 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float64 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" 1 \n",
" \n",
" \n",
" \n",
"
earlinet_product_type
(time, altitude)
float64
8.0 8.0 8.0 8.0 ... nan nan nan nan
long_name : Earlinet product type valid_range : [ 1 14] flag_values : [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14] flag_meanings : e0355 b0355 e0351 b0351 e0532 b0532 e1064 b1064 b0253 b0313 b0335 b0510 b0694 b0817 array([[ 8., 8., 8., ..., nan, nan, nan],\n",
" [ 8., 8., 8., ..., nan, nan, nan],\n",
" [ 8., 8., 8., ..., nan, nan, nan],\n",
" ...,\n",
" [ 8., 8., 8., ..., 8., 8., 8.],\n",
" [ 8., 8., 8., ..., nan, nan, nan],\n",
" [ 8., 8., 8., ..., nan, nan, nan]]) user_defined_category
(time, altitude)
float64
0.0 0.0 0.0 0.0 ... nan nan nan nan
long_name : User defined category of the measurement valid_range : [ 0 1023] flag_masks : [ 1 2 4 8 16 32 64 128 256 512] flag_meanings : cirrus climatology diurnal_cycles volcanic forest_fires photosmog rural_urban saharan_dust stratosphere satellite_overpasses comment : Those flags might have not been set in a homogeneous way. Before using them, contact the originator to obtain more detailed information on how these flags have been set. array([[ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" ...,\n",
" [ 0., 0., 0., ..., 0., 0., 0.],\n",
" [ 0., 0., 0., ..., nan, nan, nan],\n",
" [ 0., 0., 0., ..., nan, nan, nan]]) backscatter_calibration_range
(time, altitude, wavelength, nv)
float32
dask.array<chunksize=(1, 128, 1, 2), meta=np.ndarray>
long_name : altitude range where calibration was calculated units : m \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1, 2) \n",
" (1, 128, 1, 2) \n",
" \n",
" \n",
" Count \n",
" 100 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 9 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 1 \n",
" 128 \n",
" \n",
" \n",
" \n",
"
backscatter_calibration_search_range
(time, altitude, wavelength, nv)
float32
dask.array<chunksize=(1, 128, 1, 2), meta=np.ndarray>
long_name : altitude range wherein calibration range is searched units : m \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 9.00 kiB \n",
" 1.00 kiB \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128, 1, 2) \n",
" (1, 128, 1, 2) \n",
" \n",
" \n",
" Count \n",
" 100 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 9 \n",
" 1 \n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 2 \n",
" 1 \n",
" 128 \n",
" \n",
" \n",
" \n",
"
cloud_mask_type
(time, altitude)
float64
2.0 2.0 2.0 2.0 ... nan nan nan nan
long_name : cloud mask type valid_range : [0 3] flag_values : [0 1 2] flag_meanings : no_cloudmask_available manual_cloudmask automatic_cloudmask array([[ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" ...,\n",
" [ 2., 2., 2., ..., 2., 2., 2.],\n",
" [ 2., 2., 2., ..., nan, nan, nan],\n",
" [ 2., 2., 2., ..., nan, nan, nan]]) scc_product_type
(time, altitude)
float64
1.0 1.0 1.0 1.0 ... nan nan nan nan
long_name : SCC product type valid_range : [1 2] flag_values : [1 2] flag_meanings : experimental operational array([[ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" ...,\n",
" [ 1., 1., 1., ..., 1., 1., 1.],\n",
" [ 1., 1., 1., ..., nan, nan, nan],\n",
" [ 1., 1., 1., ..., nan, nan, nan]]) cloud_mask
(time, altitude)
float32
dask.array<chunksize=(1, 128), meta=np.ndarray>
long_name : cloud mask valid_range : [0 7] flag_masks : [1 2 4] flag_meanings : unknown_cloud cirrus_cloud water_cloud \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Array \n",
" Chunk \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" Bytes \n",
" 4.50 kiB \n",
" 512 B \n",
" \n",
" \n",
" \n",
" Shape \n",
" (9, 128) \n",
" (1, 128) \n",
" \n",
" \n",
" Count \n",
" 73 Tasks \n",
" 9 Chunks \n",
" \n",
" \n",
" Type \n",
" float32 \n",
" numpy.ndarray \n",
" \n",
" \n",
"
\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" 128 \n",
" 9 \n",
" \n",
" \n",
" \n",
"
Attributes: (35)
Conventions : CF-1.7 title : Profiles of aerosol optical properties source : Ground based LIDAR measurements references : Project website at http://www.earlinet.org history : 2021-10-06T09:20Z : Assigned version 1\r\n",
" 2021-10-06T09:20:00Z : File uploaded on Earlinet database\r\n",
" 2021-10-04T13:09:57Z: elpp -d sccoperational -m 20210223is10 -c elpp.config; 2021-10-04T13:10:26Z: elda 20210223is10 -c elda.ini station_ID : ipr location : Ispra, Italy system : ADAM-noew-2019 institution : Joint Research Centre - Institute for Environment and Sustainability, Ispra - JRC comment : measurement_ID : 20210223is10 measurement_start_datetime : 2021-02-23T11:02:16Z measurement_stop_datetime : 2021-02-23T11:29:18Z PI : Jean Putaud PI_affiliation : Joint Research Centre - Air and Climate Unit, Ispra PI_affiliation_acronym : JRC PI_address : PI_phone : +39 0332 78 50 41 PI_email : jean.putaud@ec.europa.eu Data_Originator : jean.putaud Data_Originator_affiliation : Joint Research Centre Data_Originator_affiliation_acronym : JRC Data_Originator_address : 21027 Ispra (VA) Data_Originator_phone : ++390332785041 Data_Originator_email : jean.putaud@ec.europa.eu data_processing_institution : Consiglio Nazionale delle Ricerche - Istituto di Metodologie per l'Analisi Ambientale (CNR-IMAA) hoi_system_ID : 164 hoi_configuration_ID : 551 scc_version : 5.2.3 scc_version_description : SCC vers. 5.2.3 (HiRELPP vers. 1.1.2, CloudMask vers. 1.6.0, ELPP vers. 7.1.3, ELDA vers. 3.4.8, ELIC vers. 1.0.7, ELQUICK vers. 1.0.7, ELDEC vers. 2.1.3) processor_name : ELDA processor_version : 3.4.8 __file_format_version : 2.1 input_file : ipr_003_0000753_202102231102_202102231129_20210223is10_elpp_v5.2.3.nc overlap_correction_file : "
],
"text/plain": [
"