Solicite dados meteorológicos em tempo real e previstos usando os serviços meteorológicos do Azure Maps
Os serviços meteorológicos do Azure Maps são um conjunto de APIs RESTful que permite aos programadores integrar visualizações e dados meteorológicos históricos, em tempo real e previstos altamente dinâmicos nas suas soluções.
Este artigo demonstra como solicitar dados meteorológicos em tempo real e previstos:
- Solicite dados meteorológicos (atuais) em tempo real usando a API Obter Condições Atuais.
- Solicite alertas de mau tempo usando a API Obter alertas de mau tempo.
- Solicite previsões diárias usando a API Obter previsão diária.
- Solicite previsões horárias usando a API Obter previsão horária.
- Solicite previsões minuto a minuto usando a API Get Minute Forecast.
Este vídeo fornece exemplos para fazer chamadas REST para os serviços meteorológicos do Azure Maps.
Pré-requisitos
Importante
Nos exemplos de URL neste artigo, você precisará substituir {Your-Azure-Maps-Subscription-key}
por sua chave de assinatura do Azure Maps.
Este tutorial usa o aplicativo bruno , mas você pode escolher um ambiente de desenvolvimento de API diferente.
Solicite dados meteorológicos em tempo real
A API Obter Condições Atuais retorna condições meteorológicas detalhadas, como precipitação, temperatura e vento para um determinado local coordenado. Além disso, as observações das últimas 6 ou 24 horas para um determinado local podem ser recuperadas. A resposta inclui detalhes como data e hora de observação, descrição das condições meteorológicas, ícone meteorológico, sinalizadores indicadores de precipitação e temperatura. A temperatura RealFeel™ e o índice ultravioleta (UV) também são retornados.
Neste exemplo, você usa a API Obter Condições Atuais para recuperar as condições meteorológicas atuais em coordenadas localizadas em Seattle, WA.
Abra o aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
Selecione o botão azul Criar .
Selecione o botão Executar.
O corpo da resposta contém informações meteorológicas atuais.
{ "results": [ { "dateTime": "2024-08-08T09:22:00-07:00", "phrase": "Sunny", "iconCode": 1, "hasPrecipitation": false, "isDayTime": true, "temperature": { "value": 19.5, "unit": "C", "unitType": 17 }, "realFeelTemperature": { "value": 23.7, "unit": "C", "unitType": 17 }, "realFeelTemperatureShade": { "value": 19.4, "unit": "C", "unitType": 17 }, "relativeHumidity": 81, "dewPoint": { "value": 16.2, "unit": "C", "unitType": 17 }, "wind": { "direction": { "degrees": 0, "localizedDescription": "N" }, "speed": { "value": 2, "unit": "km/h", "unitType": 7 } }, "windGust": { "speed": { "value": 3.8, "unit": "km/h", "unitType": 7 } }, "uvIndex": 4, "uvIndexPhrase": "Moderate", "visibility": { "value": 16.1, "unit": "km", "unitType": 6 }, "obstructionsToVisibility": "", "cloudCover": 5, "ceiling": { "value": 12192, "unit": "m", "unitType": 5 }, "pressure": { "value": 1015.9, "unit": "mb", "unitType": 14 }, "pressureTendency": { "localizedDescription": "Steady", "code": "S" }, "past24HourTemperatureDeparture": { "value": 3, "unit": "C", "unitType": 17 }, "apparentTemperature": { "value": 20, "unit": "C", "unitType": 17 }, "windChillTemperature": { "value": 19.4, "unit": "C", "unitType": 17 }, "wetBulbTemperature": { "value": 17.5, "unit": "C", "unitType": 17 }, "precipitationSummary": { "pastHour": { "value": 0, "unit": "mm", "unitType": 3 }, "past3Hours": { "value": 0, "unit": "mm", "unitType": 3 }, "past6Hours": { "value": 0, "unit": "mm", "unitType": 3 }, "past9Hours": { "value": 0, "unit": "mm", "unitType": 3 }, "past12Hours": { "value": 0, "unit": "mm", "unitType": 3 }, "past18Hours": { "value": 0, "unit": "mm", "unitType": 3 }, "past24Hours": { "value": 0, "unit": "mm", "unitType": 3 } }, "temperatureSummary": { "past6Hours": { "minimum": { "value": 16, "unit": "C", "unitType": 17 }, "maximum": { "value": 19.5, "unit": "C", "unitType": 17 } }, "past12Hours": { "minimum": { "value": 16, "unit": "C", "unitType": 17 }, "maximum": { "value": 20.4, "unit": "C", "unitType": 17 } }, "past24Hours": { "minimum": { "value": 16, "unit": "C", "unitType": 17 }, "maximum": { "value": 26.4, "unit": "C", "unitType": 17 } } } } ] }
Solicitar alertas de mau tempo
A API de Alertas de Mau Tempo do Azure Maps devolve os alertas de mau tempo que estão disponíveis em todo o mundo a partir das Agências Meteorológicas Governamentais oficiais e dos principais fornecedores de alertas meteorológicos globais e regionais. O serviço retorna detalhes como tipo de alerta, categoria, nível. O serviço também retorna descrições detalhadas sobre os alertas severos ativos para o local solicitado, como furacões, tempestades, raios, ondas de calor ou incêndios florestais. Como exemplo, os gerentes de logística podem visualizar condições climáticas severas em um mapa, juntamente com locais de negócios e rotas planejadas, e coordenar ainda mais com motoristas e trabalhadores locais.
Neste exemplo, você usa a API Get Severe Weather Alerts para recuperar as condições meteorológicas atuais nas coordenadas localizadas em Cheyenne, WY.
Nota
Este exemplo recupera alertas de mau tempo no momento em que este artigo foi escrito. É provável que já não existam alertas de mau tempo no local solicitado. Para recuperar dados reais de alerta severo ao executar este exemplo, você precisará recuperar dados em um local de coordenadas diferente.
No aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
https://atlas.microsoft.com/weather/severe/alerts/json?api-version=1.0&query=41.161079,-104.805450&subscription-key={Your-Azure-Maps-Subscription-key}
Selecione o botão azul Criar .
Selecione o botão Executar.
Se não houver alertas de mau tempo, o corpo da resposta contém uma matriz vazia
results[]
. Se houver alertas de mau tempo, o corpo da resposta contém algo como a seguinte resposta JSON:{ "results": [ { "countryCode": "US", "alertId": 2194734, "description": { "localized": "Red Flag Warning", "english": "Red Flag Warning" }, "category": "FIRE", "priority": 54, "source": "U.S. National Weather Service", "sourceId": 2, "alertAreas": [ { "name": "Platte/Goshen/Central and Eastern Laramie", "summary": "Red Flag Warning in effect until 7:00 PM MDT. Source: U.S. National Weather Service", "startTime": "2020-10-05T15:00:00+00:00", "endTime": "2020-10-06T01:00:00+00:00", "latestStatus": { "localized": "Continue", "english": "Continue" }, "alertDetails": "...RED FLAG WARNING REMAINS IN EFFECT FROM 9 AM THIS MORNING TO\n7 PM MDT THIS EVENING FOR STRONG GUSTY WINDS AND LOW HUMIDITY...\n\n* WHERE...Fire weather zones 303, 304, 305, 306, 307, 308, 309,\n and 310 in southeast Wyoming. Fire weather zone 313 in Nebraska.\n\n* WIND...West to northwest 15 to 30 MPH with gusts around 40 MPH.\n\n* HUMIDITY...10 to 15 percent.\n\n* IMPACTS...Any fires that develop will likely spread rapidly.\n Outdoor burning is not recommended.\n\nPRECAUTIONARY/PREPAREDNESS ACTIONS...\n\nA Red Flag Warning means that critical fire weather conditions\nare either occurring now...or will shortly. A combination of\nstrong winds...low relative humidity...and warm temperatures can\ncontribute to extreme fire behavior.\n\n&&", "alertDetailsLanguageCode": "en" } ] },... ] }
Solicite dados diários de previsão meteorológica
A API Get Daily Forecast retorna previsões meteorológicas diárias detalhadas, como temperatura e vento. A solicitação pode especificar quantos dias deve retornar: 1, 5, 10, 15, 25 ou 45 dias para um determinado local coordenado. A resposta inclui detalhes como temperatura, vento, precipitação, qualidade do ar e índice UV. Neste exemplo, solicitamos cinco dias definindo duration=5
.
Importante
No nível de preço S0, você pode solicitar a previsão diária para os próximos 1, 5, 10 e 15 dias. No nível de preços Gen1 (S1) ou Gen2, você pode solicitar uma previsão diária para os próximos 25 dias e 45 dias.
Aposentadoria da camada de preços do Azure Maps Gen1
O nível de preços Gen1 foi preterido e será desativado em 15/09/26. O nível de preços Gen2 substitui o nível de preços Gen1 (S0 e S1). Se sua conta do Azure Maps tiver o nível de preço Gen1 selecionado, você poderá alternar para o preço Gen2 antes de ser desativado, caso contrário, ele será atualizado automaticamente. Para obter mais informações, consulte Gerenciar a camada de preços da sua conta do Azure Maps.
Neste exemplo, você usa a API Get Daily Forecast para recuperar a previsão do tempo para cinco dias para coordenadas localizadas em Seattle, WA.
No aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
https://atlas.microsoft.com/weather/forecast/daily/json?api-version=1.0&query=47.60357,-122.32945&duration=5&subscription-key={Your-Azure-Maps-Subscription-key}
Selecione o botão azul Criar .
Selecione o botão Executar.
O corpo de resposta contém os dados de previsão meteorológica para cinco dias. Por uma questão de brevidade, a seguinte resposta JSON mostra a previsão para o primeiro dia.
{ "summary": { "startDate": "2024-08-09T08:00:00-07:00", "endDate": "2024-08-09T20:00:00-07:00", "severity": 7, "phrase": "Very warm tomorrow", "category": "heat" }, "forecasts": [ { "date": "2024-08-08T07:00:00-07:00", "temperature": { "minimum": { "value": 16.2, "unit": "C", "unitType": 17 }, "maximum": { "value": 28.9, "unit": "C", "unitType": 17 } }, "realFeelTemperature": { "minimum": { "value": 16.3, "unit": "C", "unitType": 17 }, "maximum": { "value": 29.8, "unit": "C", "unitType": 17 } }, "realFeelTemperatureShade": { "minimum": { "value": 16.3, "unit": "C", "unitType": 17 }, "maximum": { "value": 27.3, "unit": "C", "unitType": 17 } }, "hoursOfSun": 12.9, "degreeDaySummary": { "heating": { "value": 0, "unit": "C", "unitType": 17 }, "cooling": { "value": 5, "unit": "C", "unitType": 17 } }, "airAndPollen": [ { "name": "AirQuality", "value": 56, "category": "Moderate", "categoryValue": 2, "type": "Nitrogen Dioxide" }, { "name": "Grass", "value": 2, "category": "Low", "categoryValue": 1 }, { "name": "Mold", "value": 0, "category": "Low", "categoryValue": 1 }, { "name": "Ragweed", "value": 5, "category": "Low", "categoryValue": 1 }, { "name": "Tree", "value": 0, "category": "Low", "categoryValue": 1 }, { "name": "UVIndex", "value": 7, "category": "High", "categoryValue": 3 } ], "day": { "iconCode": 2, "iconPhrase": "Mostly sunny", "hasPrecipitation": false, "shortPhrase": "Mostly sunny", "longPhrase": "Mostly sunny; wildfire smoke will cause the sky to be hazy", "precipitationProbability": 0, "thunderstormProbability": 0, "rainProbability": 0, "snowProbability": 0, "iceProbability": 0, "wind": { "direction": { "degrees": 357, "localizedDescription": "N" }, "speed": { "value": 11.1, "unit": "km/h", "unitType": 7 } }, "windGust": { "direction": { "degrees": 354, "localizedDescription": "N" }, "speed": { "value": 29.6, "unit": "km/h", "unitType": 7 } }, "totalLiquid": { "value": 0, "unit": "mm", "unitType": 3 }, "rain": { "value": 0, "unit": "mm", "unitType": 3 }, "snow": { "value": 0, "unit": "cm", "unitType": 4 }, "ice": { "value": 0, "unit": "mm", "unitType": 3 }, "hoursOfPrecipitation": 0, "hoursOfRain": 0, "hoursOfSnow": 0, "hoursOfIce": 0, "cloudCover": 10 }, "night": { "iconCode": 35, "iconPhrase": "Partly cloudy", "hasPrecipitation": false, "shortPhrase": "Partly cloudy", "longPhrase": "Partly cloudy; wildfire smoke will cause the sky to be hazy", "precipitationProbability": 1, "thunderstormProbability": 0, "rainProbability": 1, "snowProbability": 0, "iceProbability": 0, "wind": { "direction": { "degrees": 7, "localizedDescription": "N" }, "speed": { "value": 9.3, "unit": "km/h", "unitType": 7 } }, "windGust": { "direction": { "degrees": 3, "localizedDescription": "N" }, "speed": { "value": 20.4, "unit": "km/h", "unitType": 7 } }, "totalLiquid": { "value": 0, "unit": "mm", "unitType": 3 }, "rain": { "value": 0, "unit": "mm", "unitType": 3 }, "snow": { "value": 0, "unit": "cm", "unitType": 4 }, "ice": { "value": 0, "unit": "mm", "unitType": 3 }, "hoursOfPrecipitation": 0, "hoursOfRain": 0, "hoursOfSnow": 0, "hoursOfIce": 0, "cloudCover": 26 }, "sources": [ "AccuWeather" ] } ] }
Solicite dados de previsão do tempo por hora
A API Get Hourly Forecast retorna a previsão do tempo detalhada por hora para os próximos 1, 12, 24 (1 dia), 72 (3 dias), 120 (5 dias) e 240 horas (10 dias) para o local de coordenadas determinado. A API retorna detalhes como temperatura, umidade, vento, precipitação e índice UV.
Importante
No nível de preços Gen1 (S0), você pode solicitar previsão horária para os próximos 1, 12, 24 horas (1 dia) e 72 horas (3 dias). No nível de preços Gen1 (S1) ou Gen2, você pode solicitar previsão horária para os próximos 120 (5 dias) e 240 horas (10 dias).
Neste exemplo, você usa a API Get Hourly Forecast para recuperar a previsão do tempo por hora para as próximas 12 horas nas coordenadas localizadas em Seattle, WA.
No aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
https://atlas.microsoft.com/weather/forecast/hourly/json?api-version=1.0&query=47.60357,-122.32945&duration=12&subscription-key={Your-Azure-Maps-Subscription-key}
Selecione o botão azul Criar .
Selecione o botão Executar.
O corpo de resposta contém dados de previsão meteorológica para as próximas 12 horas. O exemplo de resposta JSON a seguir mostra apenas a primeira hora:
{ "forecasts": [ { "date": "2024-08-07T15:00:00-07:00", "iconCode": 2, "iconPhrase": "Mostly sunny", "hasPrecipitation": false, "isDaylight": true, "temperature": { "value": 24.6, "unit": "C", "unitType": 17 }, "realFeelTemperature": { "value": 26.4, "unit": "C", "unitType": 17 }, "wetBulbTemperature": { "value": 18.1, "unit": "C", "unitType": 17 }, "dewPoint": { "value": 14.5, "unit": "C", "unitType": 17 }, "wind": { "direction": { "degrees": 340, "localizedDescription": "NNW" }, "speed": { "value": 14.8, "unit": "km/h", "unitType": 7 } }, "windGust": { "speed": { "value": 24.1, "unit": "km/h", "unitType": 7 } }, "relativeHumidity": 53, "visibility": { "value": 16.1, "unit": "km", "unitType": 6 }, "cloudCover": 11, "ceiling": { "value": 10211, "unit": "m", "unitType": 5 }, "uvIndex": 5, "uvIndexPhrase": "Moderate", "precipitationProbability": 0, "rainProbability": 0, "snowProbability": 0, "iceProbability": 0, "totalLiquid": { "value": 0, "unit": "mm", "unitType": 3 }, "rain": { "value": 0, "unit": "mm", "unitType": 3 }, "snow": { "value": 0, "unit": "cm", "unitType": 4 }, "ice": { "value": 0, "unit": "mm", "unitType": 3 } } ] }
Solicite dados de previsão do tempo minuto a minuto
A API Get Minute Forecast retorna previsões minuto a minuto para um determinado local para os próximos 120 minutos. Os utilizadores podem solicitar previsões meteorológicas em intervalos de 1, 5 e 15 minutos. A resposta inclui detalhes como o tipo de precipitação (incluindo chuva, neve ou uma mistura de ambos), hora de início e valor da intensidade de precipitação (dBZ).
Neste exemplo, você usa a API Get Minute Forecast para recuperar a previsão do tempo minuto a minuto nas coordenadas localizadas em Seattle, WA. A previsão do tempo é dada para os próximos 120 minutos. Nossa consulta solicita que a previsão seja dada em intervalos de 15 minutos, mas você pode ajustar o parâmetro para ser de 1 ou 5 minutos.
No aplicativo bruno, selecione NOVA SOLICITAÇÃO para criar a solicitação. Na janela NEW REQUEST, defina Type como HTTP. Insira um Nome para a solicitação.
Selecione o método HTTP GET na lista suspensa URL e insira o seguinte URL:
https://atlas.microsoft.com/weather/forecast/minute/json?api-version=1.0&query=47.60357,-122.32945&interval=15&subscription-key={Your-Azure-Maps-Subscription-key}
Selecione o botão azul Criar .
Selecione o botão Executar.
O corpo de resposta contém dados de previsão do tempo para os próximos 120 minutos, em intervalos de 15 minutos.
{ "summary": { "briefPhrase60": "No precipitation for at least 60 min", "shortPhrase": "No precip for 120 min", "briefPhrase": "No precipitation for at least 120 min", "longPhrase": "No precipitation for at least 120 min", "iconCode": 1 }, "intervalSummaries": [ { "startMinute": 0, "endMinute": 119, "totalMinutes": 120, "shortPhrase": "No precip for %MINUTE_VALUE min", "briefPhrase": "No precipitation for at least %MINUTE_VALUE min", "longPhrase": "No precipitation for at least %MINUTE_VALUE min", "iconCode": 1 } ], "intervals": [ { "startTime": "2024-08-08T05:58:00-07:00", "minute": 0, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 7 }, { "startTime": "2024-08-08T06:13:00-07:00", "minute": 15, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 3 }, { "startTime": "2024-08-08T06:28:00-07:00", "minute": 30, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 2 }, { "startTime": "2024-08-08T06:43:00-07:00", "minute": 45, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 2 }, { "startTime": "2024-08-08T06:58:00-07:00", "minute": 60, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 1 }, { "startTime": "2024-08-08T07:13:00-07:00", "minute": 75, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 1 }, { "startTime": "2024-08-08T07:28:00-07:00", "minute": 90, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 0 }, { "startTime": "2024-08-08T07:43:00-07:00", "minute": 105, "dbz": 0, "shortPhrase": "No Precipitation", "iconCode": 1, "cloudCover": 0 } ] }