About the data
This page covers what the map does not tell you on the page itself. Everything here is a property of the data rather than a bug waiting to be fixed, and each one can change how a number should be read.
This map is for reference, not medical advice
The readings come from volunteer low-cost sensors, model forecasts and official EU classifications. They can be wrong, late or missing. Use them to stay aware, not to make health decisions. If you have symptoms or a condition, ask a doctor. For official alerts, follow the Ministry of Health, the regional health inspectorates (РЗИ) and the Executive Environment Agency (ИАОС).
The sensors are not reference instruments
The readings come from the sensor.community network: low-cost optical particulate sensors, sited and maintained by volunteers. They are good at showing change over time and gross spatial patterns, and they are not regulatory monitors. High humidity in particular inflates optical PM readings. Their absolute values should not be compared against a legal limit as though they came from a reference station.
City areas are not all the same kind of thing
For 13 of the 27 provincial capitals we use the boundary of the city itself. The other 14 have no settlement-level boundary in OpenStreetMap, so we use the boundary of the whole municipality instead. A municipality covers considerably more ground than its city: a sensor kilometres outside the built-up area (in a village, on a hillside, beside a road through farmland) is attributed to the city and moves its median. Rural air is usually cleaner in summer and, where solid fuel heating is common, dirtier in winter, so the bias is not in a fixed direction.
Whole municipality: Blagoevgrad, Vratsa, Kardzhali, Lovech, Montana, Pazardzhik, Pernik, Pleven, Plovdiv, Sliven, Smolyan, Stara Zagora, Haskovo, Yambol.
So comparing Plovdiv (municipality) with Varna (city) compares two different kinds of area. The comparison is still informative. It is not like-for-like. Within one city the geometry is constant, so the trend over time is unaffected.
Coverage is uneven, and reported rather than hidden
Sensor density varies enormously: Sofia has many, some provinces have very few. An area's figure is only as representative as the sensors inside it, and an area with two sensors is not measuring the same thing as an area with two hundred. That is why coverage state is shown alongside every figure instead of being folded invisibly into it. Check it before drawing a conclusion from a sparse area.
A sensor near a border may be attributed to the neighbouring area
The boundaries are simplified to roughly 200 metres. Within that distance of a border, a sensor can fall on the other side of the simplified line from the real one. Affected sensors are few and the effect on an area's median is smaller still, but a single sensor's area label near a province or district edge should not be treated as authoritative.
Pollen is a model forecast, not a count
We do not measure pollen. The layer is the Copernicus CAMS European ensemble forecast for ragweed, mugwort, grasses, birch, alder and olive, in grains per cubic metre, delivered through Open-Meteo. We fetch it twice a day and show today and the next two days. An area takes the worst model cell inside it, or the nearest cell if none falls inside. A province shows the species with the highest level. The levels are low, moderate and high. Moderate starts at 10 grains per m³ for birch, alder, olive and mugwort and at 3 for grasses and ragweed. High starts at 100 and 50. These are the EAACI limits that CAMS uses. They are defined for hourly counts, and the map shows the daily mean forecast, so a day can read lower than the hourly scale would put it. No official Bulgarian numeric scale exists, so this is the European one.
A bathing water class covers several seasons, not today
Bathing sites and classes come from the EEA WISE Bathing Water Directive tables, read through the Discodata API for Bulgaria, under CC BY 4.0. The class is calculated from E. coli and intestinal enterococci over the current season and the three before it. The EEA publishes once a year. We import weekly, and the map shows the newest classification for each site. Single samples in the site panel are context, not a verdict on the water today. The class does not cover chemical pollution.
Where the data comes from
Readings from sensor.community contributors (ODbL 1.0). Province, city and Sofia district boundaries from OpenStreetMap (ODbL 1.0). The national boundary from Natural Earth. Pollen forecast from CAMS (Copernicus Atmosphere Monitoring Service) via Open-Meteo.com (CC BY 4.0). Bathing water classes from the European Environment Agency (CC BY 4.0). Bathing water lab results from the regional health inspectorates (RHI) Varna, Burgas and Dobrich, read from the files they publish (derived data under CC BY 4.0).
Privacy
This site sets no cookies.
It keeps a few preferences in your browser's local storage. They stay on your device. The site keeps no copy.
| Stored key | What it remembers |
|---|---|
kanarche:theme | Your chosen colour theme: auto, light, or dark. |
kanarche:map-layers | Which map layers are switched on. |
kanarche:legend-open | Whether the map legend panel is open. |
kanarche:play-speed | Your chosen playback speed for the time-lapse. |
kanarche:map-window | The time window the map shows: live readings or an average over a longer period. |
kanarche:auto-refresh | How often the map refreshes itself with new readings. |
kanarche:map-view | Where the home map was last centred and zoomed, so it reopens there. |
kanarche:locate-hint-seen | That the tip pointing at the locate button was already shown. |
kanarche:favourite-sensor | The sensor you starred, so the map opens on it. |
kanarche:panel-folded | Whether the sensor panel on the map was folded. |
kanarche:panel-height | The height you dragged the sensor panel on the map to. |
Removes only the keys listed above.