A year of weather statistics for Belgrade

Mammatus clouds above Belgrade

Exactly one year ago, I made a PHP script to retrieve weather data from national weather service website (RHMZ). I put it to my always-on home server, and set it up to run every hour, which coincides with their updates. Result is a comprehensive data set for several cities in my country, which can be used for additional analysis.


Why, you may ask? Well, my wife landed a job there at the same time (she is a meteorologist), and she didn't know how to fetch this data on demand. Service does have departments which deals with this type of data gathering and storing, but the path to obtaining it was anything but obvious. Since this data can be used for weather forecast verification, we anticipated the need for it later and I went to set up a simple local database.

Script was written in PHP, which emulates a browser request to the page which hosts a table with recent measurements. It then parses this table to gather weather data for several cities and store it in a simple CSV text file. Additional script runs each day and converts this table to Excel format (using excellent PHPExcel library), compresses it and uploads it to a web server for sharing. I used cron to setup these tasks, and even implemented error control (server notifies me by e-mail if something goes wrong, and trust me, it often does).


We agreed to monitor and retrieve data for following cities in Serbia:

  • Belgrade (Beograd)
  • Kragujevac
  • Niš
  • Novi Sad
  • Zlatibor

Following weather data was gathered:

  • Date/Time (or Timestamp)
  • Temperature (in degrees Celsius)
  • Atmospheric pressure (in hPa)
  • Wind direction
  • Wind speed (m/s)
  • Relative humidity (%)
  • Heat index
  • Weather description (clear, cloudy, etc)


While I waited for some professional to make use of this data, I wondered if I could represent the data from last year for Belgrade using online tools. Cue Google Fusion Tables, which recently graduated to Google Docs/Drive suite. It enables you to import large tables of data and visualize it quite easily. Let's take a look at all temperatures values (8791 points!) in Belgrade by timestamps.

There are even some power options, like data aggregation, which are done on the fly without the need to alter the table. For example, here is the average temperature with maximal and minimal values by days.

Or, let's aggregate by wind direction, using next Pie chart. We can see that the prevailing wind in Belgrade last year was of southeast (SE) direction (also known as Košava).

If you want to know what type of weather was dominant last year in Belgrade, you just have to look at next chart. Apparently clear skies (vedro).

Unfortunately, I am not able to provide here a direct download of this data, since I merely just copied it from other source. But I am providing a link to the Belgrade Fusion table, where you can tinker with additional analysis. There is even Experimental section with some new tools, so go for it :)

Data from RHMZ
Photo supplied by Gaga, thanks!