Review Request: Fix the 0600GMT=sunrise, 1800GMT=sunset bug in the BBC Weather Ion

Andrew Coles andrew_coles at yahoo.co.uk
Sun May 10 13:38:33 CEST 2009


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/684/
-----------------------------------------------------------

(Updated 2009-05-10 04:38:33.431438)


Review request for Plasma.


Changes
-------

Thanks for all your comments - it now uses the existing code from the time data engine.

Changes in Time DataEngine build:
 - Wrap the helper functions for sunrise/sunset into lib_solar_time and make them visible.

Changes in the BBC UK Met Weather Ion:
 - Link to lib_solar_time.
 - Use the functions which it can now see.


Summary
-------

To give an icon depicting the current weather, the BBC UK Met. Office backend decides whether or not it is day or night using a simple rule: if it's after 0600GMT but before 1800GMT, it is daytime; otherwise, it's night time.  This causes two known issues:

i) For people in the UK, the weather icons indicate night even though sunset is not until well after 2000GMT at this time of year
ii) For people outside the UK, day and night are set to an approximation of what they are in the UK.  So, for instance, for people in New York, the weather icon goes to night at lunchtime.

The attached diff fixes this bug by calculating the actual sunrise/sunset times for the weather location, and using /these/ to decide whether it's day or night.  How is this done?  Whilst the BBC don't provide sunrise/sunset time in the current observations, they do provide latitude and longitude information.  Given we know:

i) The date
ii) The latitude/longitude

...we can then calculate sunrise and sunset times using a bit of maths.  If you look, the diffs for the ion itself are very small: just enough to handle the lat/long information, and then calls to sunrise/sunset calculation to decide whether it's day or night.  The sunrise/sunset calculation - existing mature GPLed code - has been put into weatherutils.h/.cpp, as other ions may need this information too.


Diffs (updated)
-----

  /trunk/KDE/kdebase/workspace/plasma/dataengines/time/CMakeLists.txt 965571 
  /trunk/KDE/kdebase/workspace/plasma/dataengines/time/solarposition.h 965571 
  /trunk/KDE/kdebase/workspace/plasma/dataengines/time/time_solar_export.h PRE-CREATION 
  /trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/CMakeLists.txt 965571 
  /trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/ion_bbcukmet.h 965571 
  /trunk/KDE/kdebase/workspace/plasma/dataengines/weather/ions/ion_bbcukmet.cpp 965571 

Diff: http://reviewboard.kde.org/r/684/diff


Testing
-------

I use the BBC weather ion for my weather data, so I tested it for my current location (fine) and a few others from around the world (also fine).


Thanks,

Andrew



More information about the Plasma-devel mailing list