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
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
Iae Everton como eu faço para usar essa api da google para obter a temperatura ?
se puder fazer um simples tutorial eu agradeço :)
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
Postar um comentário
Nota: fique a vontade para expressar o que achou deste artigo ou do blog.
Dica: para acompanhar as respostas, acesse com uma conta do Google e marque a opção "Notifique-me".
Atenção: o blogger não permite inclusão de tags nos comentários, por isso, use algum site externo para postar seu código com dúvidas e deixe o link aqui. Exemplo: pastebin.com