Building a weather service

Create web service to return personal weather station or airport weather station data from wunderground.com.

The web service will return JSON or XML data. wunderground.com API returns XML data.

When a user request weather information for a location, the web service will return the closest weather information for that location that is available. If nothing is available, or the closest is deemed to be too far away, the user will be asked if this is good enuogh and a message will be added to our logs informing the application administrator that closer weather data is required.

If the user, or an administrator adds a new weather station, the longitude and latitude will be added to the database, as with the name of the station, a link, and an ID that will map to a file system location, when it was added and if the last update was successful. Weather stations once added will be updated every 3 hours, 8 times in a 24 hour period. These will be translated into JSON files when requested.

The directory system will be based on weather station ID and the date in the form YYYYMMDD. Each directory will only contain up to 8 XML files, relating to a single weather station and day. Each directory may also contain JSON files. Perhaps a PHP XSLT engine, or C XSLT engine could be used to generate the desired JSON and JSONP files. We may utilise a library such as Xalan-C to generate JSON files. I’ve investigated XSLT solutions and it appears that PHP has suitable XSLT functions. I will modify this procedure, but it shows that the functionality is suitable.

$proc = new XSLTProcessor();

if (!$proc->hasExsltSupport())
{
   die('EXSLT support not available');
}
// Load the XML source
$xml = new DOMDocument;
$xml->load('test.xml');

$xsl = new DOMDocument;
$xsl->load('test.xsl');

// Configure the transformer
$proc->importStyleSheet($xsl); // attach the xsl rules

if(isset($_GET["callback"])) echo $_GET["callback"]."(";
echo $proc->transformToDoc($xml)->firstChild->wholeText;
if(isset($_GET["callback"])) echo ")";

We will be able to resolve the closest weather station or stations to a particular point and (in our user interface) allow a user to select the favoured weather station.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • LinkedIn
  • Reddit
  • StumbleUpon
  • Tumblr
  • Twitter
  • Yahoo! Buzz

1 Response to “Building a weather service”


  1. 1 Pal

    Hello

    Good information about weather. Is there an xslt that i can reuse?

    Thanks
    -P

Leave a Reply