Pedir dados meteorológicos em tempo real e previstos com os serviços de meteorologia Azure Maps

Azure Maps Serviços meteorológicos são um conjunto de APIs RESTful que permite aos programadores integrar dados e visualizações meteorológicas altamente dinâmicos históricos, em tempo real e previstos nas suas soluções.

Este artigo demonstra como pedir dados meteorológicos em tempo real e previstos:

Este vídeo fornece exemplos para efetuar chamadas REST para serviços de meteorologia Azure Maps.



Pré-requisitos

Este tutorial utiliza a aplicação Postman , mas pode escolher um ambiente de desenvolvimento de API diferente.

Pedir dados meteorológicos em tempo real

A API Obter Condições Atuais devolve condições meteorológicas detalhadas, como precipitação, temperatura e vento para uma determinada localização coordenada. Além disso, podem ser obtidas observações das últimas 6 ou 24 horas para uma localização específica. A resposta inclui detalhes como data e hora de observação, descrição das condições meteorológicas, ícone de meteorologia, sinalizadores de indicadores de precipitação e temperatura. Também são devolvidos índices de Temperatura RealFeel™ e ultravioleta(UV).

Neste exemplo, vai utilizar a API Obter Condições Atuais para obter as condições meteorológicas atuais em coordenadas localizadas em Seattle, WA.

  1. Abra a aplicação Postman. Selecione Novo para criar o pedido. Na janela Criar Novo , selecione Pedido HTTP. Introduza um Nome do pedido para o pedido.

  2. Selecione o método GET HTTP no separador construtor e introduza o seguinte URL. Para este pedido e outros pedidos mencionados neste artigo, substitua pela {Your-Azure-Maps-Subscription-key} sua chave de subscrição Azure Maps.

    https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
    
  3. Selecione o botão azul Enviar . O corpo da resposta contém as informações meteorológicas atuais.

    {
    "results": [
        {
            "dateTime": "2020-10-19T20:39:00+00:00",
            "phrase": "Cloudy",
            "iconCode": 7,
            "hasPrecipitation": false,
            "isDayTime": true,
            "temperature": {
                "value": 12.4,
                "unit": "C",
                "unitType": 17
            },
            "realFeelTemperature": {
                "value": 13.7,
                "unit": "C",
                "unitType": 17
            },
            "realFeelTemperatureShade": {
                "value": 13.7,
                "unit": "C",
                "unitType": 17
            },
            "relativeHumidity": 87,
            "dewPoint": {
                "value": 10.3,
                "unit": "C",
                "unitType": 17
            },
            "wind": {
                "direction": {
                    "degrees": 23.0,
                    "localizedDescription": "NNE"
                },
                "speed": {
                    "value": 4.5,
                    "unit": "km/h",
                    "unitType": 7
                }
            },
            "windGust": {
                "speed": {
                    "value": 9.0,
                    "unit": "km/h",
                    "unitType": 7
                }
            },
            "uvIndex": 1,
            "uvIndexPhrase": "Low",
            "visibility": {
                "value": 9.7,
                "unit": "km",
                "unitType": 6
            },
            "obstructionsToVisibility": "",
            "cloudCover": 100,
            "ceiling": {
                "value": 1494.0,
                "unit": "m",
                "unitType": 5
            },
            "pressure": {
                "value": 1021.2,
                "unit": "mb",
                "unitType": 14
            },
            "pressureTendency": {
                "localizedDescription": "Steady",
                "code": "S"
            },
            "past24HourTemperatureDeparture": {
                "value": -2.1,
                "unit": "C",
                "unitType": 17
            },
            "apparentTemperature": {
                "value": 15.0,
                "unit": "C",
                "unitType": 17
            },
            "windChillTemperature": {
                "value": 12.2,
                "unit": "C",
                "unitType": 17
            },
            "wetBulbTemperature": {
                "value": 11.3,
                "unit": "C",
                "unitType": 17
            },
            "precipitationSummary": {
                "pastHour": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past3Hours": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past6Hours": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past9Hours": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past12Hours": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past18Hours": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "past24Hours": {
                    "value": 0.4,
                    "unit": "mm",
                    "unitType": 3
                }
            },
            "temperatureSummary": {
                "past6Hours": {
                    "minimum": {
                        "value": 12.2,
                        "unit": "C",
                        "unitType": 17
                    },
                    "maximum": {
                        "value": 14.0,
                        "unit": "C",
                        "unitType": 17
                    }
                },
                "past12Hours": {
                    "minimum": {
                        "value": 12.2,
                        "unit": "C",
                        "unitType": 17
                    },
                    "maximum": {
                        "value": 14.0,
                        "unit": "C",
                        "unitType": 17
                    }
                },
                "past24Hours": {
                    "minimum": {
                        "value": 12.2,
                        "unit": "C",
                        "unitType": 17
                    },
                    "maximum": {
                        "value": 15.6,
                        "unit": "C",
                        "unitType": 17
                    }
                }
            }
        }
    ]
    }
    

Pedir alertas meteorológicos severos

Azure Maps API Get Severe Weather Alerts devolve os alertas meteorológicos severos que estão disponíveis em todo o mundo, tanto das Agências Meteorológicas oficiais do Governo como dos principais fornecedores globais de alertas meteorológicos regionais. O serviço devolve detalhes como tipo de alerta, categoria, nível. O serviço também devolve descrições detalhadas sobre os alertas graves ativos para a localização pedida, como furacões, trovoadas, relâmpagos, ondas de calor ou incêndios florestais. Por exemplo, os gestores de logística podem visualizar condições meteorológicas severas num mapa, juntamente com localizações empresariais e rotas planeadas, e coordenar-se ainda mais com motoristas e trabalhadores locais.

Neste exemplo, vai utilizar a API Obter Alertas de Meteorologia Severa para obter as condições meteorológicas atuais em coordenadas localizadas em Cheyenne, WY.

Nota

Este exemplo obtém alertas meteorológicos severos no momento da escrita. É provável que já não existam alertas meteorológicos severos no local pedido. Para obter dados de alertas graves reais ao executar este exemplo, terá de obter dados numa localização de coordenada diferente.

  1. Na aplicação Postman, selecione Novo para criar o pedido. Na janela Criar Novo , selecione Pedido HTTP. Introduza um Nome do pedido para o pedido.

  2. Selecione o método GET HTTP no separador construtor e introduza o seguinte URL. Para este pedido e outros pedidos mencionados neste artigo, substitua pela {Your-Azure-Maps-Subscription-key} sua chave de subscrição Azure Maps.

    https://atlas.microsoft.com/weather/severe/alerts/json?api-version=1.0&query=41.161079,-104.805450&subscription-key={Your-Azure-Maps-Subscription-key}
    
  3. Selecione o botão azul Enviar . Se não existirem alertas meteorológicos severos, o corpo da resposta contém uma matriz vazia results[] . Se existirem alertas meteorológicos severos, o corpo da resposta contém algo semelhante à 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"
                }
            ]
            },...
        ]
    }
    

Pedir dados diários de previsão meteorológica

A API Get Daily Forecast devolve previsões meteorológicas diárias detalhadas, como temperatura e vento. O pedido pode especificar quantos dias deve devolver: 1, 5, 10, 15, 25 ou 45 dias para uma determinada localização coordenada. A resposta inclui detalhes como temperatura, vento, precipitação, qualidade do ar e índice UV. Neste exemplo, pedimos cinco dias ao definir duration=5.

Importante

No escalão de preço S0, pode pedir previsão diária para os próximos 1, 5, 10 e 15 dias. No escalão de preço Gen1 (S1) ou Gen2, pode pedir previsão diária para os próximos 25 dias e 45 dias.

descontinuação do escalão de preço do Azure Maps Gen1

O escalão de preço gen1 foi preterido e será descontinuado a 15/09/26. O escalão de preço Gen2 substitui o escalão de preço Gen1 (S0 e S1). Se a sua conta Azure Maps tiver o escalão de preço Gen1 selecionado, pode mudar para os preços gen2 antes de ser descontinuado, caso contrário, será atualizado automaticamente. Para obter mais informações, veja Gerir o escalão de preço da sua conta Azure Maps.

Neste exemplo, vai utilizar a API Obter Previsão Diária para obter a previsão meteorológica de cinco dias para coordenadas localizadas em Seattle, WA.

  1. Na aplicação Postman, selecione Novo para criar o pedido. Na janela Criar Novo , selecione Pedido HTTP. Introduza um Nome do pedido para o pedido.

  2. Selecione o método GET HTTP no separador construtor e introduza o seguinte URL. Para este pedido e outros pedidos mencionados neste artigo, substitua pela {Your-Azure-Maps-Subscription-key} sua chave de subscrição Azure Maps.

    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}
    
  3. Selecione o botão azul Enviar . O corpo da resposta contém os dados de previsão meteorológica de cinco dias. Por uma questão de brevidade, a seguinte resposta JSON mostra a previsão para o primeiro dia.

    {
    "summary": {
        "startDate": "2020-10-18T17:00:00+00:00",
        "endDate": "2020-10-19T23:00:00+00:00",
        "severity": 2,
        "phrase": "Snow, mixed with rain at times continuing through Monday evening and a storm total of 3-6 cm",
        "category": "snow/rain"
    },
    "forecasts": [
        {
            "date": "2020-10-19T04:00:00+00:00",
            "temperature": {
                "minimum": {
                    "value": -1.1,
                    "unit": "C",
                    "unitType": 17
                },
                "maximum": {
                    "value": 1.3,
                    "unit": "C",
                    "unitType": 17
                }
            },
            "realFeelTemperature": {
                "minimum": {
                    "value": -6.0,
                    "unit": "C",
                    "unitType": 17
                },
                "maximum": {
                    "value": 0.5,
                    "unit": "C",
                    "unitType": 17
                }
            },
            "realFeelTemperatureShade": {
                "minimum": {
                    "value": -6.0,
                    "unit": "C",
                    "unitType": 17
                },
                "maximum": {
                    "value": 0.7,
                    "unit": "C",
                    "unitType": 17
                }
            },
            "hoursOfSun": 1.8,
            "degreeDaySummary": {
                "heating": {
                    "value": 18.0,
                    "unit": "C",
                    "unitType": 17
                },
                "cooling": {
                    "value": 0.0,
                    "unit": "C",
                    "unitType": 17
                }
            },
            "airAndPollen": [
                {
                    "name": "AirQuality",
                    "value": 23,
                    "category": "Good",
                    "categoryValue": 1,
                    "type": "Ozone"
                },
                {
                    "name": "Grass",
                    "value": 0,
                    "category": "Low",
                    "categoryValue": 1
                },
                {
                    "name": "Mold",
                    "value": 0,
                    "category": "Low",
                    "categoryValue": 1
                },
                {
                    "name": "Ragweed",
                    "value": 0,
                    "category": "Low",
                    "categoryValue": 1
                },
                {
                    "name": "Tree",
                    "value": 0,
                    "category": "Low",
                    "categoryValue": 1
                },
                {
                    "name": "UVIndex",
                    "value": 0,
                    "category": "Low",
                    "categoryValue": 1
                }
            ],
            "day": {
                "iconCode": 22,
                "iconPhrase": "Snow",
                "hasPrecipitation": true,
                "precipitationType": "Mixed",
                "precipitationIntensity": "Light",
                "shortPhrase": "Chilly with snow, 2-4 cm",
                "longPhrase": "Chilly with snow, accumulating an additional 2-4 cm",
                "precipitationProbability": 90,
                "thunderstormProbability": 0,
                "rainProbability": 54,
                "snowProbability": 85,
                "iceProbability": 8,
                "wind": {
                    "direction": {
                        "degrees": 36.0,
                        "localizedDescription": "NE"
                    },
                    "speed": {
                        "value": 9.3,
                        "unit": "km/h",
                        "unitType": 7
                    }
                },
                "windGust": {
                    "direction": {
                        "degrees": 70.0,
                        "localizedDescription": "ENE"
                    },
                    "speed": {
                        "value": 25.9,
                        "unit": "km/h",
                        "unitType": 7
                    }
                },
                "totalLiquid": {
                    "value": 4.3,
                    "unit": "mm",
                    "unitType": 3
                },
                "rain": {
                    "value": 0.5,
                    "unit": "mm",
                    "unitType": 3
                },
                "snow": {
                    "value": 2.72,
                    "unit": "cm",
                    "unitType": 4
                },
                "ice": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "hoursOfPrecipitation": 9.0,
                "hoursOfRain": 1.0,
                "hoursOfSnow": 9.0,
                "hoursOfIce": 0.0,
                "cloudCover": 96
            },
            "night": {
                "iconCode": 29,
                "iconPhrase": "Rain and snow",
                "hasPrecipitation": true,
                "precipitationType": "Mixed",
                "precipitationIntensity": "Light",
                "shortPhrase": "Showers of rain and snow",
                "longPhrase": "A couple of showers of rain or snow this evening; otherwise, cloudy; storm total snowfall 1-3 cm",
                "precipitationProbability": 65,
                "thunderstormProbability": 0,
                "rainProbability": 60,
                "snowProbability": 54,
                "iceProbability": 4,
                "wind": {
                    "direction": {
                        "degrees": 16.0,
                        "localizedDescription": "NNE"
                    },
                    "speed": {
                        "value": 16.7,
                        "unit": "km/h",
                        "unitType": 7
                    }
                },
                "windGust": {
                    "direction": {
                        "degrees": 1.0,
                        "localizedDescription": "N"
                    },
                    "speed": {
                        "value": 35.2,
                        "unit": "km/h",
                        "unitType": 7
                    }
                },
                "totalLiquid": {
                    "value": 4.3,
                    "unit": "mm",
                    "unitType": 3
                },
                "rain": {
                    "value": 3.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "snow": {
                    "value": 0.79,
                    "unit": "cm",
                    "unitType": 4
                },
                "ice": {
                    "value": 0.0,
                    "unit": "mm",
                    "unitType": 3
                },
                "hoursOfPrecipitation": 4.0,
                "hoursOfRain": 1.0,
                "hoursOfSnow": 3.0,
                "hoursOfIce": 0.0,
                "cloudCover": 94
            },
            "sources": [
                "AccuWeather"
            ]
        },...
    ]
    }
    

Pedir dados de previsão meteorológica por hora

A API Get Hourly Forecast devolve a previsão meteorológica detalhada pela hora para as próximas 1, 12, 24 (1 dia), 72 (3 dias), 120 (5 dias) e 240 horas (10 dias) para a localização de coordenadas especificada. A API devolve detalhes como temperatura, humidade, vento, precipitação e índice UV.

Importante

No escalão de preço Gen1 (S0), pode pedir previsão por hora para as próximas 1, 12, 24 horas (1 dia) e 72 horas (3 dias). No escalão de preço Gen1 (S1) ou Gen2, pode pedir previsão por hora para os próximos 120 (5 dias) e 240 horas (10 dias).

Neste exemplo, vai utilizar a API Get Hourly Forecast para obter a previsão meteorológica por hora para as próximas 12 horas em coordenadas localizadas em Seattle, WA.

  1. Na aplicação Postman, selecione Novo para criar o pedido. Na janela Criar Novo , selecione Pedido HTTP. Introduza um Nome do pedido para o pedido.

  2. Selecione o método GET HTTP no separador construtor e introduza o seguinte URL. Para este pedido e outros pedidos mencionados neste artigo, substitua pela {Your-Azure-Maps-Subscription-key} sua chave de subscrição Azure Maps.

    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}
    
  3. Selecione o botão azul Enviar . O corpo da resposta contém dados de previsão meteorológica para as próximas 12 horas. Por uma questão de brevidade, a seguinte resposta JSON mostra a previsão para a primeira hora.

    {
    "forecasts": [
        {
            "date": "2020-10-19T21:00:00+00:00",
            "iconCode": 12,
            "iconPhrase": "Showers",
            "hasPrecipitation": true,
            "precipitationType": "Rain",
            "precipitationIntensity": "Light",
            "isDaylight": true,
            "temperature": {
                "value": 14.7,
                "unit": "C",
                "unitType": 17
            },
            "realFeelTemperature": {
                "value": 13.3,
                "unit": "C",
                "unitType": 17
            },
            "wetBulbTemperature": {
                "value": 12.0,
                "unit": "C",
                "unitType": 17
            },
            "dewPoint": {
                "value": 9.5,
                "unit": "C",
                "unitType": 17
            },
            "wind": {
                "direction": {
                    "degrees": 242.0,
                    "localizedDescription": "WSW"
                },
                "speed": {
                    "value": 9.3,
                    "unit": "km/h",
                    "unitType": 7
                }
            },
            "windGust": {
                "speed": {
                    "value": 14.8,
                    "unit": "km/h",
                    "unitType": 7
                }
            },
            "relativeHumidity": 71,
            "visibility": {
                "value": 9.7,
                "unit": "km",
                "unitType": 6
            },
            "cloudCover": 100,
            "ceiling": {
                "value": 1128.0,
                "unit": "m",
                "unitType": 5
            },
            "uvIndex": 1,
            "uvIndexPhrase": "Low",
            "precipitationProbability": 51,
            "rainProbability": 51,
            "snowProbability": 0,
            "iceProbability": 0,
            "totalLiquid": {
                "value": 0.3,
                "unit": "mm",
                "unitType": 3
            },
            "rain": {
                "value": 0.3,
                "unit": "mm",
                "unitType": 3
            },
            "snow": {
                "value": 0.0,
                "unit": "cm",
                "unitType": 4
            },
            "ice": {
                "value": 0.0,
                "unit": "mm",
                "unitType": 3
            }
        }...
    ]
    }
    

Pedir dados de previsão meteorológica minuto a minuto

A API de Previsão obter Minuto devolve previsões minuto a minuto para uma determinada localização para os próximos 120 minutos. Os utilizadores podem pedir 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 de intensidade de precipitação (dBZ).

Neste exemplo, vai utilizar a API de Previsão obter Minuto para obter a previsão meteorológica minuto a minuto em coordenadas localizadas em Seattle, WA. A previsão meteorológica é dada para os próximos 120 minutos. A nossa consulta pede que a previsão seja dada em intervalos de 15 minutos, mas pode ajustar o parâmetro para 1 ou 5 minutos.

  1. Na aplicação Postman, selecione Novo para criar o pedido. Na janela Criar Novo , selecione Pedido HTTP. Introduza um Nome do pedido para o pedido.

  2. Selecione o método GET HTTP no separador construtor e introduza o seguinte URL. Para este pedido e outros pedidos mencionados neste artigo, substitua pela {Your-Azure-Maps-Subscription-key} sua chave de subscrição Azure Maps.

    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}
    
  3. Selecione o botão azul Enviar . O corpo da resposta contém dados de previsão meteorológica 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": 7
    },
    "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": 7
        }
    ],
    "intervals": [
        {
            "startTime": "2020-10-19T20:51:00+00:00",
            "minute": 0,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T21:06:00+00:00",
            "minute": 15,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T21:21:00+00:00",
            "minute": 30,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T21:36:00+00:00",
            "minute": 45,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T21:51:00+00:00",
            "minute": 60,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T22:06:00+00:00",
            "minute": 75,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T22:21:00+00:00",
            "minute": 90,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        },
        {
            "startTime": "2020-10-19T22:36:00+00:00",
            "minute": 105,
            "dbz": 0.0,
            "shortPhrase": "No Precipitation",
            "iconCode": 7,
            "cloudCover": 100
        }
        ]
    }
    

Passos seguintes