Como obter o clima atual por meio de serviços da Web [fechado
-
20-09-2019 - |
Pergunta
Estou tentando obter o clima atual, dado um código postal ou um conjunto de coordenadas de latitude/longitude. Parece que a melhor prática fazer isso (e como a NOAA faz) é obter o feed XML para uma estação meteorológica.
Exemplo: http://www.weather.gov/xml/current_obs/kedw.xml
O único problema é que a NOAA não fornece uma boa maneira de encontrar a estação meteorológica mais próxima, dada um código ou coordenadas ZIP e não vi nenhum serviço da Web hospedado por aí que fornecerá esse mapeamento.
Alguém conhece algum serviço da Web para obter a estação meteorológica mais próxima, dada um código postal ou coordenar a entrada? Caso contrário, alguém tem ótimas soluções para analisar que fornecem informações semelhantes, como a NOAA, mas leva um código postal ou coordena?
Solução
Existem inúmeras APIs climáticas por aí que procurarão o clima com base em códigos postais ou encontre o mais próximo para um código postal. Ver essa questão.
O Serviço Nacional de Meteorologia tem um Rest API. Ctrl+F para ZipCode:
Dados resumidos para um ou mais códigos ZIP: Retorna dados NDFD codificados por DWML para um ou mais códigos postais (50 Estados Unidos e Porto Rico).
Aqui está um pedido de amostra
Não tenho certeza se esse tem condições atuais. Caso contrário, você pode usar o API do Wunderground. Primeiro você usa Geolookupxml procurar estações meteorológicas próximas baseadas na cidade (veja o nearby_weather_stations
elemento na saída da amostra), então você pode usar WxCurrentObxml Para obter as condições em uma das estações meteorológicas.
Outras dicas
Foram necessárias algumas pesquisas, mas a NOAA mantém uma lista de todas as estações meteorológicas de metar, com suas coordenadas de latitude e longitude, além de links diretos para seus URLs de alimentação RSS e XML. A lista é armazenada no XML aqui: http://www.weather.gov/xml/current_obs/index.xml
Você pode usar as APIs de geocodificação do Google ou Yahoo para procurar a latitude/longitude de um nome de local (cidade, endereço, código postal, etc.) e, em seguida, pesquisar na lista de estações meteorológicas para a estação de metar mais próxima do local fornecido.
Eu tentei o seu link e, em vez da cidade, a rua inseriu meu código postal. Ele retornou o local correto e o relatório meteorológico. É possível que seja apenas uma API mal documentada e um parâmetro de cidade/rua substituído por um zip de 5 dígitos realmente fará o que você deseja.