:::: MENU ::::

Reporte del Clima con PHP y Google

En el artículo Showing the weather with PHP and Google Weather API en donde explican la forma de obtener los datos del clima utilizando Google. Para ello acceden a un URL utilizado en iGoogle el cual devuelve un XML con los datos del clima actual para la ciudad seleccionada y el pronostico para los siguientes tres días.

gweather

Obteniendo los datos de Google
Para obtener los datos del clima (condición, temperatura, humedad, vientos) de una ciudad determinada podemos acceder al siguiente URL.

http://www.google.com/ig/api?weather=city

Estos datos son devueltos en idioma ingles, podemos agregarle un parámetro adicional hl para indicar el idioma de la respuesta, por ejemplo para español.

http://www.google.com/ig/api?weather=city&hl=es

Utilizando PHP para mostrar los datos
Ahora que ya sabes de donde obtener los datos los cargamos con PHP utilizando la función file_get_contents y posteriormente los convertimos en un array utilizando xml2array.

require("xml2array.php");

$url = "http://www.google.com/ig/api?weather=lima&hl=es";
$contents = file_get_contents($url);
$data = xml2array($contents);

$weather_info = $data['xml_api_reply']['weather']['forecast_information'];
$weather_current = $data['xml_api_reply']['weather']['current_conditions'];
$weather_forecast = $data['xml_api_reply']['weather']['forecast_conditions'];

Como se puede ver, hemos obtenido los datos de los nodos forecast_information, current_conditions, forecast_conditions en tres variables. Estos nodos contienen los datos de la ciudad consultada, los datos actuales clima y la predicción del clima para los siguientes tres días.

El siguiente paso es imprimir los datos que hemos obtenido de las respectivas variables. Si mostramos los datos del clima actual tendríamos el siguiente código:

<h3>Google Weather Demo </h3>
<div id="current">
    <strong><?php echo utf8_encode($weather_info['city']['attr']['data']); ?></strong><br />
    <img src="<?php echo $weather_current['icon']['attr']['data']; ?>" />
    Condición: <?php echo $weather_current['condition']['attr']['data']; ?><br />
    Temperatura: <?php echo $weather_current['temp_c']['attr']['data']; ?> &deg;C<br />
    <?php echo $weather_current['humidity']['attr']['data']; ?><br />
</div>

Nótese que mostramos el icono con el clima actual, los datos de la condición, temperatura y humedad. Pueden ver el ejemplo funcionando en http://samples.unijimpe.net/gweather/basic.php

También podemos mostrar las predicciones del clima para los siguientes días utilizando la variable $weather_forecast que contiene un array para ello escribimos:

<div id="forecast">
    <?php for ($i=0; $i<sizeof($weather_forecast); $i++) { ?>
    <?php $foreday = $weather_forecast[$i]; ?>
    <div id="item">
    <?php echo utf8_encode($foreday['day_of_week']['attr']['data']); ?><br />
    <img src="<?php echo $foreday['icon']['attr']['data']; ?>" /><br />
    <?php echo $foreday['low']['attr']['data']; ?>&deg;C | 
    <?php echo $foreday['high']['attr']['data']; ?>&deg;C
    <?php } ?>
</div>

Agregando CSS y un formulario de búsqueda podemos obtener excelentes resultados, solo depende de nuestra imaginación. Pueden ver ejemplo final funcionando en http://samples.unijimpe.net/gweather/.


54 Comentarios

  • Héctor José |

    Disculpa, una consulta para alguien que sabe: Tengo un programa del clima que exporta este HTML a un soft de radio.

    El problema es que su base de datos no tiene mi pueblo y hay mucha diferencia. Cómo podria hacerse que por ejemplo los datos fuesen extraidos de Google como haces tu , o de la página de accuweater. Si puedes haccerlo sería de muchisima utilidad para las radios comunitarias y otras que no manejamos presupuesto para contratar este servicio. Desde ya muchas gracias. mi correo hectorjoseper(arroba)yahoo.com.ar

    Location: [STATION]
    Condition: [CONDITION]
    Temperature: [TEMP]
    Feels Like: [FEELS]
    Dew Point: [DEW]
    Humidity: [HUMIDITY]
    Wind: [WIND]
    Barometer: [BAROMETER]
    Sunrise: [SUNRISE AMPM]
    Sunset: [SUNSET AMPM]

    [UPDATED]

  • Héctor José |

    <HTML>
    Location: [STATION]<BR />
    Condition: [CONDITION]<BR />
    Temperature: [TEMP]<BR />
    Feels Like: [FEELS]<BR />
    Dew Point: [DEW]<BR />
    Humidity: [HUMIDITY]<BR />
    Wind: [WIND]<BR />
    Barometer: [BAROMETER]<BR />
    Sunrise: [SUNRISE AMPM]<BR />
    Sunset: [SUNSET AMPM]<BR />
    <BR />

  • Gerardo |

    Hola me tira este error (Hasta ayer funcionaba ok) :

    Warning: file_get_contents(http://www.google.com/ig/api?weather=Cordoba+Argentina&hl=es) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable in /home/qu000034/public_html/Estructura/Clima/CordobaCapital.php on line 12

    Linea 12: $contents = utf8_encode(file_get_contents($url));

    Que hago? Gracias

  • Algenis |

    Saludos,

    Al igual que Gerardo tuve el mismo problema tratando de implementar el api para mostrar el clima de mi ciudad, pero buscando informacion llegue a la conclusion de que google ya no esta dando ese servicio, debido a que el api estaba contemplado con el proyecto iGoogle, el cual ya anunciaron que para el año proximo dejara de existir.

    La informacion la optuve de este site: http://www.solucionesuno.com/blog/diseno-grafico/google-desactiva-de-su-api-el-clima/

    Espero que les haya sido util esta informacion.

Publica tu comentario

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.