Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

PHP code to retrieve NDFD weather forecasts.

Posted on 2016-11-09
6
Medium Priority
?
76 Views
Last Modified: 2016-11-14
What I need is the PHP code to retrieve NDFD weather forecasts.  I find examples, but most with broken links that don't actually work or throw errors.  I'm using PHP 5.3 on a FreeBSD server.
0
Comment
Question by:IT_Architect
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 3
6 Comments
 
LVL 111

Accepted Solution

by:
Ray Paseur earned 2000 total points
ID: 41880867
Is this what you're looking at?
http://www.nws.noaa.gov/ndfd/

If so, it looks like they have a RESTful API.
http://graphical.weather.gov/xml/rest.php

Here's an example showing what you get back from the API
https://iconoun.com/demo/temp_it_architect.php
<?php // demo/temp_it_architect.php
/**
 * https://www.experts-exchange.com/questions/28982054/PHP-code-to-retrieve-NDFD-weather-forecasts.html
 *
 * https://www.experts-exchange.com/articles/12239/Introduction-to-Application-Programming-Interfaces.html
 */
error_reporting(E_ALL);

$url = <<<EOD
http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?whichClient=NDFDgenByDay&lat=38.99&lon=-77.01&listLatLon=&lat1=&lon1=&lat2=&lon2=&resolutionSub=&endPoint1Lat=&endPoint1Lon=&endPoint2Lat=&endPoint2Lon=&centerPointLat=&centerPointLon=&distanceLat=&distanceLon=&resolutionSquare=&zipCodeList=&citiesLevel=&format=24+hourly&startDate=2016-11-09&numDays=7&Unit=e&Submit=Submit
EOD;

// SHOW HOW TO RETRIEVE DATA FROM THE API
$xml = file_get_contents($url);
$obj = SimpleXML_Load_String($xml);
echo '<pre>';
var_dump($obj);

Open in new window

This article has some general information about APIs.
https://www.experts-exchange.com/articles/12239/Introduction-to-Application-Programming-Interfaces.html
0
 

Author Comment

by:IT_Architect
ID: 41883911
Hi Ray,
From what I see so far, it looks like you "hit the nail on the head" with that code.  I could not get their code to work for some reason.  All I found was broken links.

PS:  What I need now is a good way to parse it.  If you have some pointers on the best way to post that thread, let me know here.
0
 

Author Closing Comment

by:IT_Architect
ID: 41883914
Fabulous!
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
LVL 111

Expert Comment

by:Ray Paseur
ID: 41883992
See if this helps: https://iconoun.com/demo/temp_it_architect.php
<?php // demo/temp_it_architect.php
/**
 * https://www.experts-exchange.com/questions/28982054/PHP-code-to-retrieve-NDFD-weather-forecasts.html
 *
 * https://www.experts-exchange.com/articles/12239/Introduction-to-Application-Programming-Interfaces.html
 */
error_reporting(E_ALL);

$url = <<<EOD
http://graphical.weather.gov/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?whichClient=NDFDgenByDay&lat=38.99&lon=-77.01&listLatLon=&lat1=&lon1=&lat2=&lon2=&resolutionSub=&endPoint1Lat=&endPoint1Lon=&endPoint2Lat=&endPoint2Lon=&centerPointLat=&centerPointLon=&distanceLat=&distanceLon=&resolutionSquare=&zipCodeList=&citiesLevel=&format=24+hourly&startDate=2016-11-09&numDays=7&Unit=e&Submit=Submit
EOD;

// SHOW HOW TO RETRIEVE DATA FROM THE API
$xml = file_get_contents($url);
$obj = SimpleXML_Load_String($xml);
echo '<pre>';

// ACTIVATE THIS TO SEE THE ENTIRE OBJECT
// var_dump($obj);

// SHOW HOW TO ACCESS SOME OF THE PROPERTIES
$t = $obj->head->product->title;
echo PHP_EOL . "TITLE: $t";

$lat = (string)$obj->data->location->point->attributes()->latitude;
$lon = (string)$obj->data->location->point->attributes()->longitude;
$geo = "$lat,$lon";
echo PHP_EOL . "GEOCODE: $geo";

$units  = (string)$obj->data->parameters->temperature[0]->attributes()->units;
$name   = (string)$obj->data->parameters->temperature[0]->name;
echo PHP_EOL . "$name ($units)";

$days   = (array)$obj->data->{'time-layout'}[0]->{'start-valid-time'};
$values = (array)$obj->data->parameters->temperature[0]->value;
$icons  = (array)$obj->data->parameters->{'conditions-icon'}->{'icon-link'};

foreach ($days as $key => $day)
{
    $dow = date('D', strtotime($day));
    $tmp = $values[$key];
    echo PHP_EOL . "$dow $tmp&deg;" . substr($units,0,1);
    echo '<img src="' . $icons[$key] . '" />';
}

Open in new window

Cross-reference:
https://www.experts-exchange.com/questions/28982716/How-can-I-assign-SimpleXMLElements-to-variables.html#a41885047
0
 

Author Comment

by:IT_Architect
ID: 41886354
All I can say is WOW!  

The NOAA information I was using disappeared.  I also had a source for bulk information, and that is missing now too.  Now I need to resource that information.  You can do in minutes what takes me days.  Should I start a new thread for what I need, or maybe one for each table that I need or advise if possible?
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 41886371
Sure - start a new thread.  As long as it shows up in the PHP Zone, I'll see it, and I'll be glad to help.

All the best, ~Ray
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

715 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question