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.
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";
-
$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">
-
<img src="http://www.google.com<?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']; ?> °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="http://www.google.com<?php echo $foreday['icon']['attr']['data']; ?>" /><br />
-
<?php echo $foreday['low']['attr']['data']; ?>°C |
-
<?php echo $foreday['high']['attr']['data']; ?>°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/.
Posts Relacionados


Comentarios Total 11 comentarios
Publicado: 20/10/2009 5:53 am
Muy buen artículo, sólo que en el demo que publicaste, genera un error cuando se quiere buscar una ciudad como por ej. “Buenos Aires”
Además sería interesante poder agregar un filtro adicional cosa de poder diferenciar algunas ciudades con el mismo nombre, por ej. Córdoba , que existe en Argentina y España
Saludos
Publicado: 20/10/2009 7:31 am
Iba a decir exactamente lo mismo que Christian. Yo por ejemplo vivo en Córdoba, Argentina… y no puedo ver los datos del tiempo de mi ciudad.
Me encanta la web, y estoy sacando mucha info que hay aca, y estoy rediseñando mi web ahora gracias a toda la info que pones, y a mucha otra que complementa que encontre en google.
Gracias, te felicito.
Publicado: 20/10/2009 8:47 am
Gracias por el post, me será de ayuda en mis proyectos.
Lo del espacio podrias solucionarlo reemplazando en el php que recibe el campo de la busqueda los espacios por el signo de +, para que el file_get_contents no contenga espacios y funcione sin problema!
Saludos.
Publicado: 20/10/2009 10:04 pm
El link de descarga del zip no anda.
Publicado: 20/10/2009 11:24 pm
Respecto a las ciudades con dos palabras como menciona Carlos pueden colocar el símbolo + como separador de ciudad, otra forma de hacerlo es que lo codifiques en formato url utilizando la función urlencode.
$url = "http://www.google.com/ig/api?weather=".urlencode($que)."&hl=es";He corregido los URLs y ya esta funcionando nuevamente las descargas.
Publicado: 21/10/2009 10:48 am
no em funciona tu codigo, sera problema del servidor ??
lo monto tal como lo tienes y no funciona, lo unico que modifique fue la ciudad (aunque original tampoco me funcionaba)
Lo tengo en esta web http://decamping.net/ClimaGoogle/basic.php
Que puede ser el problema ?? limitaciones del server gratuito ?
Publicado: 29/10/2009 8:31 am
He probado el script y funciona a medias.
Guardé en un archivo de texto lo que me trae la función función file_get_contents y me di cuenta que el problema es que no me trae todo el archivo. Qué puede suceder?
Publicado: 29/10/2009 9:11 am
Corrijo lo que dije, si trae el archivo, pero el xml2array solo me devuelve 2 días
Publicado: 06/11/2009 12:30 pm
No funciona la descarga
Publicado: 27/11/2009 11:47 am
Solo enseña el primer dia..
Publicado: 27/11/2009 2:40 pm
Antes he posteado diciendo que solo enseñaba el primer dia y era por que hoy es viernes , y en el array el sabado lo pone con acento es decir sáb con lo cual la libreria no sigue leyendo.
pongan esto al principio !!
$contents = str_replace(”á”,”a”,$contents);
$contents = str_replace(”é”,”e”,$contents);
$contents = str_replace(”í”,”i”,$contents);
$contents = str_replace(”ó”,”o”,$contents);