Parsivel2#
The OTT Parsivel2 is a laser-based disdrometer for comprehensive measurement of all types of precipitation. There are currently 2 such disdrometers in operation at the BCO, although at points we have had 3 disdrometers at once.
The longest running disdrometer (451995) was in operation since 2023-05-14. The other two, 451996 and 451997, were added 2025-09-22. On 2026-07-19, 451995 was decommissioned and replaced with 451997.
As flags in the level 1 datasets, we provide the locations of the three parsivels, referencing the shipping containers as pictured below. We also provide an ‘orientation’ flag with meanings ‘eastward’ (with aperture perpendicular to climatologically dominant easterlies, as recommended by OTT) and ‘northward’ (perpendicular to eastward).


The device works on the extinction principle and measures precipitation particles using the shadowing effects they cause when they pass through a laser band.
The Parsivel2 captures both the size and the rate of fall in detail of the individual hydrometeors and classifies them into a range of 32 classes each. The temporal resolution covers between 10 seconds and one hour. The raw data is used to calculate for example precipitation type, amount and intensity.
The measurement principle#
OTT Parsivel2 uses a laser-optical sensor to measure precipitation. The transmitter unit of the sensor generates a flat, horizontal beam of light that the receiver unit converts to an electrical signal. This signal changes whenever a hydrometeor falls through the beam anywhere within the measuring area (54 cm2). The degree of dimming is a measure of the size of the hydrometeor and the fall velocity is derived from the extinction signal duration.
Uh oh!
Comparison with other precipitation measurements corroborates findings from the literature that the parsivel does not accurately capture rain events surpassing 20 mm h-1 in intensity.
Data Availability#
The data from the first parsivel is available as BCO.parsivel_451995 in the catalog.
The next two are published under the keys BCO.parsivel_451996 and BCO.parsivel_451997.
Sample Plot#
The plot shows rain rate and particle size distribution during September 2024 (the period where the ORCESTRA Campaign visited the BCO).
import intake
import matplotlib.pylab as plt
cat = intake.open_catalog("https://tcodata.mpimet.mpg.de/catalog.yaml")
ds = cat.BCO.parsivel_451995.to_dask()
subset = ds.sel(time="2024-09")
fix, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))
subset["rain_rate"].plot(ax=ax1)
subset["raw"].mean("time").plot(cmap="Blues", ax=ax2);
/builds/tco/bco/docs/.venv/lib/python3.12/site-packages/intake_xarray/base.py:21: FutureWarning: The return type of `Dataset.dims` will be changed to return a set of dimension names in future, in order to be more consistent with `DataArray.dims`. To access a mapping from dimension names to lengths, please use `Dataset.sizes`.
'dims': dict(self._ds.dims),
The full dataset:
ds
<xarray.Dataset> Size: 3GB
Dimensions: (d: 32, bnd: 2, time: 1473459, v: 32)
Coordinates:
alt float64 8B ...
* d (d) float32 128B 0.0625 0.1875 ... 21.5 24.5
lat float64 8B ...
lon float64 8B ...
* time (time) datetime64[ns] 12MB 2023-05-14T00:46...
* v (v) float32 128B 0.05 0.15 0.25 ... 17.6 20.8
Dimensions without coordinates: bnd
Data variables:
d_bounds (d, bnd) float32 256B dask.array<chunksize=(32, 2), meta=np.ndarray>
disdrometer_rain_rate_status (time) int8 1MB dask.array<chunksize=(1473459,), meta=np.ndarray>
error_code (time) int16 3MB dask.array<chunksize=(1473459,), meta=np.ndarray>
field_n_ved (time, d) float32 189MB dask.array<chunksize=(131072, 32), meta=np.ndarray>
field_v (time, v) float32 189MB dask.array<chunksize=(131072, 32), meta=np.ndarray>
firmware_iop (time) uint16 3MB dask.array<chunksize=(1473459,), meta=np.ndarray>
number_of_particles (time) int32 6MB dask.array<chunksize=(1473459,), meta=np.ndarray>
rain_rate (time) float32 6MB dask.array<chunksize=(1473459,), meta=np.ndarray>
raw (time, v, d) int16 3GB dask.array<chunksize=(4096, 32, 32), meta=np.ndarray>
sample_interval (time) int16 3MB dask.array<chunksize=(1473459,), meta=np.ndarray>
sensor_status (time) int16 3MB dask.array<chunksize=(1473459,), meta=np.ndarray>
v_bounds (v, bnd) float32 256B dask.array<chunksize=(32, 2), meta=np.ndarray>
Attributes: (12/15)
Conventions: CF-1.12
_logical_cutoff_date: 2026-07-19T00:00:00Z
bcoproc_version: 0.0.0.post1672.dev0+6e6e668
featureType: timeSeries
history: processed with bcoproc l1
institution: Max Planck Institute for Meteorology, Hamburg
... ...
sensor_serial_number: 451995
source: OTT Parsivel2 451995
station_name: BCODIS
summary: The OTT Parsivel² is a modern laser disdrometer fo...
title: Parsivel 2 Disdrometer data from BCO (Level 1)
tool_versions: {"Python": "3.11.2 (main, Apr 28 2025, 14:11:48) [...