Informações do Tempo

Artigo explicando como elaborar um webservice para obter informações climáticas de uma determinada região utilizando o site www.weather.com.

Introdução
imagens de tempo metereológico

Para quem gostaria de incluir informações metereológicas em um site ou aplicação PHP, segue uma dica de como fazer isso usando o web service provido pelo site The Weather Channel.

Registro

A primeira coisa a se fazer é acessar o link [http://www.weather.com/services/xmloap.html] e clicar no botão de inscrição (Sign in). O serviço é gratuito, mas pede o registro. Após completar (e aceitar os termos), você recebe um e-mail com algumas instruções, exigências, além de um Partner ID e uma License Key.

Obtendo as informações

Para obter as informações, é preciso obter o ID da localidade que você deseja consultar. Para isso, acesse o site The Weather Channel, digite o nome da cidade e país, depois clique sobre a sugestão de cidade correta. Digitando, por exemplo, "Limeira, Brazil", você cai na página que mostra informações desta cidade. O ID da cidade é incluída no próprio link da página e, neste caso, o código é "BRXX0134".

Com o ID da cidade desejada, o Partner ID e a License Key em mãos, basta fazer uma requisição via URL no formato:
http://xoap.weather.com/weather/local/IDCIDADE?cc=*&dayf=0&link=xoap&prod=xoap&par=PARTNERID&key=LICENSEKEY

Basta substituir os pontos chave pelos respectivos códigos.

Este link devolve a informação na forma de XML. Para conhecer a estrutura do XML, acesse um link de uma cidade através do navegador web com suporte a XML. Com PHP, você pode ler facilmente os dados usando simplexml, conforme o exemplo:

// Montando o link
$link = "http://xoap.weather.com/weather/local/IDCIDADE?cc=*&dayf=0&link=xoap&prod=xoap&par=PARTNERID&key=LICENSEKEY";

// Obtendo os dados da Web
$xml = simplexml_load_file($link);

// Exemplo de como obter a temperatura
$temperatura = $xml->cc->tmp;

Note que os dados tem uma unidade descrita no elemento head do XML. No caso da temperatura, ela vem na unidade F (Fahrenheit). Para converter para celcius, precisa aplicar a conversão. Parece-me que a conversão é simples: basta subtrair 32 da temperatura em Fahrenheit, depois dividir por 1,8.

Além da temperatura, são informadas outras coisas como a humidade do ar, vento, etc. Também é possível obter informações dos próximos dias. Para isso, basta especificar o parâmetro "dayf" no link para o número de dias desejados.

3 comentários

Everton disse...

Muito bom.
O Google também oferece um xml com o mesmo propósito.
Segue um exemplo:
http://www.google.com/ig/api?weather=sao+paulo

Rubens Takiguti Ribeiro (autor do blog) disse...

Silvestre, dê uma olhada no XML. Lá tem as tags temp_f e temp_c, que representam a temperatura em Fahrenheit e Celsius.

Para saber como obter estes dados, sugiro a leitura deste outro artigo:
http://rubsphp.blogspot.com.br/2011/02/simplexml.html