GSoC: Weather support and enhanced plugin features for Marble

I'd like to say hello to everybody reading this blog. This is my first blog entry. I'm starting my blog because I got accepted to this year's Google Summer of Code to work on Marble.

About Me
I live in Laboe, Germany and I am a student at the Christian-Albrechts-University of Kiel. My major subject is computer science and my minor subject Electrical Engineering. At the moment I am in my second semester.
In contrast to my work on Marble, I play the bagpipes, more precisely a German renaissance set of bagpipes called Hümmelchen. Furthermore I try to find some time to shoot my self-made historical flatbow.

The goal of my GSoC project
As I started working on Marble I thought it was a good idea to add weather support to Marble. Which would make Marble an even more interesting piece of Software.

What is meant by weather support for Marble

Weather in eastern russiaThe primary goal of this Google Summer of Code project is to develop a Marble plugin displaying weather data in form of little sun and cloud icons on the Marble map. When running, the plugin will display a short summary of the current weather on the Marble globe. The number of weather stations shown will depend on the angular resolution. The weather stations will be sorted by importance, so unimportant weather stations will not be shown as you zoom out. This could look like in this mockup showing a part of eastern Russia. The expanded weather box is a later enhancement.
My project is about a completely different feature than the existing Plasma weather applets. These applets provide weather information for only one place at a time. This place has to be selected by name in the configuration dialog. The Marble plugin will be able to display information from many different stations on the globe at the same time giving an overview of the weather in a whole area. It will be possible to freely browse the stations by simply moving around Marbles map.

Weather information with warningThe Weather plugin will be configurable because there are multiple versions the user possibly wants to see:
- only cloudiness
- cloudiness and temperature
- cloudiness, temperature and wind information
- for single stations (for example the weather station which is the nearest) detailed weather report
Because there are possibly other demands, it will be possible to select and deselect
[x] cloudiness
[x] temperature
[ ] wind direction
[ ] wind speed
[x] expandable
[x] weather warnings
separately. I checked a possible standard configuration. The plugin will select between one- and two-line layout automatically. You can see the two-line-version displaying all information in the following mockups.
Two-line mockup without warning

Further configuration options will be:
- Localization (Fahrenheit vs. Celsius; mph vs. km/h vs. bft.).
- [x] Expanded stations stay expanded after restart.
Here you can see a dialog with this configuration options.
At the moment, Marble doesn't support configuration and about dialogs for plugin specific settings. During this Summer of Code I will come up with a solution to make it possible to add these dialogs to plugins. This could look like in current Amarok versions as you see in this screenshot (current Marble plugin dialog).

Later enhancements
As the user can see the current weather now, he will possibly want to know how the weather will be tomorrow. After clicking on the "+" icon for a specific station the information frame will expand and the user will see the forecasts for this specific weather station. Expanded stations will stay expanded after disabling and enabling of expandability or the whole plugin. It will also be saved which stations are expanded so they stay expanded after a restart of Marble.

It would be nice if the user would not have to open the configuration dialog to disable/enable for example the the temperature settings. It would be nice if these options could move into the legend page of Marble's tool box. This could look like this.

Based on this plugin I could program an applet for the plasma-desktop.

I have also some other goals for my Summer of Code project, but I'd like blog about these later when you have seen the first screenshots of little weather icons on the Marble globe. I hope this also keeps you interested in my blog.


while the visualization you are proposing is unique (weather pulled for locations viewed on the map), the code that retrieves and parses online weather data for plasma is exactly what you'll need. either you'll end up duplicating that code, which would be unfortunate, or we can share those efforts. it would likely give you more time to work on things like the marble plugin improvements and calculating which cities to show.

in the mockup, you also show a "detailed view" that looks a _lot_ like the weather plasmoid. it would be a little odd to duplicate that code as well, tbh.

i've spoken with tackat about this already, and i hope it's possible to save you time and effort that can be better spent on other things.

By Aaron J. Seigo at Mon, 04/27/2009 - 20:12

> i hope it's possible to save you time and effort that can be better spent on other things.

I hope so too. For me the biggest value of this GSoC project is about the framework changes that this project will involve (like improvements regarding our rendering in general, KML support, and especially time support, etc.). That's why I'm not keen on reinventing wheels either. There's enough more valuable stuff that can be done to give us a premium weather map. "Getting hold of the data" is just a minor detail in that whole story. So yes, that will require some communication between Shawn Starr and Bastian to get optimal results :-)

By Torsten Rahn at Tue, 04/28/2009 - 06:20

I already had a look at the plasma dataengine "weather".
The main problem that prevents us from reusing code is that the plasma dataengine is part of Plasma and Marbles core libraries are pure Qt libraries without kde depencies. This enables application developers who don't use kdelibs but Qt to embed a Marble widget in their application. I'd also not like to have depencies on kdelibs or plasma libs for the Weather Plugin.
A fork wouldn't be nice.

An even bigger part of the weather pugin project is the reverse geocoding, which is not supported by the classical weather services at BBC, NOAA, .... This is also not supported by plasmas dataengine (although it would be nice). Geonames does support reverse geocoding, but it doesn't support weather forecasts but only current weather data.

By Bastian Holst at Tue, 04/28/2009 - 07:19

Google Earth lets you overlay areas of precipitation with doppler radar data, like this;

Maybe if Aaron is correct that much of the proposed project can be done by utilizing existing work from the Weather plasmoid, you would have time for this. :) The trick would be finding a data source (NOAA's site is probably a good starting point).

It would basically be a new map view: satellite view, with the radar data overlay on top.


By eean at Tue, 04/28/2009 - 01:57

> Google Earth lets you overlay areas of precipitation with doppler radar data,
> like this; http://radar.weather.gov/ridge/Conus/full.php

Yes, making use of the doppler radar stuff was actually on the TODO list. I think such radar data is available as KML. Improving current KML support in Marble so that it's possible to display this kind of stuff and improving KML support so that time dependent display of the data is possible would be one of the major challenges I see that need to be tackled.

By Torsten Rahn at Tue, 04/28/2009 - 06:11