Żądanie danych pogodowych w czasie rzeczywistym i prognozowanych przy użyciu usług Pogodowych w usłudze Azure Maps
Usługi pogodowe w usłudze Azure Maps to zestaw interfejsów API RESTful, które umożliwiają deweloperom integrację wysoce dynamicznych danych historycznych, w czasie rzeczywistym oraz prognozowanych danych pogodowych i wizualizacji w swoich rozwiązaniach.
W tym artykule pokazano, jak zażądać zarówno danych pogodowych w czasie rzeczywistym, jak i prognozowanych:
- Żądanie danych pogodowych w czasie rzeczywistym (bieżących) przy użyciu interfejsu API Uzyskiwanie bieżących warunków.
- Zażądaj poważnych alertów pogodowych przy użyciu interfejsu API Uzyskiwanie poważnych alertów pogodowych.
- Żądaj codziennych prognoz przy użyciu interfejsu API Uzyskiwanie dziennej prognozy.
- Żądaj prognoz godzinowych przy użyciu interfejsu API uzyskiwania prognozy godzinowej.
- Prognozowanie minut po minutach przy użyciu interfejsu API prognozy minuty.
Ten klip wideo zawiera przykłady wykonywania wywołań REST do usług Pogodowych w usłudze Azure Maps.
Wymagania wstępne
Ważne
W przykładach adresów URL w tym artykule należy zastąpić {Your-Azure-Maps-Subscription-key}
kluczem subskrypcji usługi Azure Maps.
W tym samouczku jest używana aplikacja bruno , ale możesz wybrać inne środowisko deweloperskie interfejsu API.
Żądanie danych pogodowych w czasie rzeczywistym
Interfejs API Pobierz bieżące warunki zwraca szczegółowe warunki pogodowe, takie jak opady, temperatura i wiatr dla danej lokalizacji współrzędnych. Ponadto można pobrać obserwacje z ostatnich 6 lub 24 godzin dla określonej lokalizacji. Odpowiedź zawiera szczegółowe informacje, takie jak data i godzina obserwacji, opis warunków pogodowych, ikona pogody, flagi wskaźnika opadów i temperatura. Zwracany jest również indeks temperatury RealFeel™ i uv(UV).
W tym przykładzie użyjesz interfejsu API Pobierz bieżące warunki, aby pobrać bieżące warunki pogodowe na współrzędnych znajdujących się w Seattle w stanie WA.
Otwórz aplikację bruno, wybierz pozycję NOWE ŻĄDANIE , aby utworzyć żądanie. W oknie NOWE ŻĄDANIE ustaw wartość Typ na HTTP. Wprowadź nazwę żądania.
Wybierz metodę GET HTTP z listy rozwijanej Adres URL , a następnie wprowadź następujący adres URL:
https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
Wybierz niebieski przycisk Utwórz .
Wybierz przycisk Uruchamiania.
Treść odpowiedzi zawiera bieżące informacje o pogodzie.
{ "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 } } } } ] }
Żądanie poważnych alertów pogodowych
Interfejs API uzyskiwania poważnych alertów pogodowych w usłudze Azure Maps zwraca poważne alerty pogodowe dostępne na całym świecie zarówno od oficjalnych agencji meteorologicznych dla instytucji rządowych, jak i wiodących globalnych dla regionalnych dostawców alertów pogodowych. Usługa zwraca szczegóły, takie jak typ alertu, kategoria, poziom. Usługa zwraca również szczegółowe opisy dotyczące aktywnych poważnych alertów dla żądanej lokalizacji, takich jak huragany, burze, pioruny, fale upałów lub pożary lasów. Na przykład menedżerowie logistyki mogą wizualizować poważne warunki pogodowe na mapie wraz z lokalizacjami biznesowymi i planowanymi trasami oraz koordynować dalej z kierowcami i lokalnymi pracownikami.
W tym przykładzie użyjesz interfejsu API Uzyskiwanie poważnych alertów pogodowych, aby pobrać bieżące warunki pogodowe na współrzędnych znajdujących się w Cheyenne w stanie WY.
Uwaga
W tym przykładzie są pobierane poważne alerty pogodowe w momencie pisania tego artykułu. Prawdopodobnie nie ma już żadnych poważnych alertów pogodowych w żądanej lokalizacji. Aby pobrać rzeczywiste poważne dane alertu podczas uruchamiania tego przykładu, musisz pobrać dane w innej lokalizacji współrzędnych.
W aplikacji bruno wybierz pozycję NOWE ŻĄDANIE , aby utworzyć żądanie. W oknie NOWE ŻĄDANIE ustaw wartość Typ na HTTP. Wprowadź nazwę żądania.
Wybierz metodę GET HTTP z listy rozwijanej Adres URL , a następnie wprowadź następujący adres 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}
Wybierz niebieski przycisk Utwórz .
Wybierz przycisk Uruchamiania.
Jeśli nie ma poważnych alertów pogodowych, treść odpowiedzi zawiera pustą
results[]
tablicę. Jeśli istnieją poważne alerty pogodowe, treść odpowiedzi zawiera coś takiego jak następująca odpowiedź 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" } ] },... ] }
Żądanie codziennych danych prognozy pogody
Interfejs API Get Daily Forecast zwraca szczegółową prognozę pogody dziennej, taką jak temperatura i wiatr. Żądanie może określić liczbę dni do zwrócenia: 1, 5, 10, 15, 25 lub 45 dni dla danej lokalizacji współrzędnych. Odpowiedź zawiera szczegółowe informacje, takie jak temperatura, wiatr, opady, jakość powietrza i indeks UV. W tym przykładzie żądamy przez pięć dni, ustawiając wartość duration=5
.
Ważne
W warstwie cenowej S0 możesz zażądać dziennej prognozy dla następnych 1, 5, 10 i 15 dni. W warstwie cenowej Gen1 (S1) lub Gen2 można zażądać dziennej prognozy dla następnych 25 dni i 45 dni.
Wycofanie warstwy cenowej usługi Azure Maps Gen1
Warstwa cenowa Gen1 jest teraz przestarzała i zostanie wycofana w dniu 15.09.26. Warstwa cenowa Gen2 zastępuje warstwę cenową Gen1 (zarówno S0, jak i S1). Jeśli konto usługi Azure Maps ma wybraną warstwę cenową Gen1, możesz przełączyć się na cennik gen2 przed wycofaniem. W przeciwnym razie zostanie on automatycznie zaktualizowany. Aby uzyskać więcej informacji, zobacz Zarządzanie warstwą cenową konta usługi Azure Maps.
W tym przykładzie użyjesz interfejsu API Pobierz dzienną prognozę, aby pobrać pięciodniową prognozę pogody dla współrzędnych znajdujących się w Seattle w stanie WA.
W aplikacji bruno wybierz pozycję NOWE ŻĄDANIE , aby utworzyć żądanie. W oknie NOWE ŻĄDANIE ustaw wartość Typ na HTTP. Wprowadź nazwę żądania.
Wybierz metodę GET HTTP z listy rozwijanej Adres URL , a następnie wprowadź następujący adres 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}
Wybierz niebieski przycisk Utwórz .
Wybierz przycisk Uruchamiania.
Treść odpowiedzi zawiera pięciodniowe dane prognozy pogody. Ze względu na zwięzłość następująca odpowiedź JSON przedstawia prognozę pierwszego dnia.
{ "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" ] } ] }
Żądanie danych prognozy pogody godzinowej
Interfejs API pobierania prognozy godzinowej zwraca szczegółową prognozę pogody według godziny dla następnych 1, 12, 24 (1 dzień), 72 (3 dni), 120 (5 dni) i 240 godzin (10 dni) dla danej lokalizacji współrzędnych. Interfejs API zwraca szczegóły, takie jak temperatura, wilgotność, wiatr, opady i indeks UV.
Ważne
W warstwie cenowej Gen1 (S0) możesz zażądać prognozy godzinowej dla następnych 1, 12, 24 godzin (1 dzień) i 72 godzin (3 dni). W warstwie cenowej Gen1 (S1) lub Gen2 można zażądać prognozy godzinowej dla następnych 120 (5 dni) i 240 godzin (10 dni).
W tym przykładzie użyjesz interfejsu API Pobierania prognozy godzinowej, aby pobrać godzinną prognozę pogody dla następnych 12 godzin we współrzędnych znajdujących się w Seattle w stanie WA.
W aplikacji bruno wybierz pozycję NOWE ŻĄDANIE , aby utworzyć żądanie. W oknie NOWE ŻĄDANIE ustaw wartość Typ na HTTP. Wprowadź nazwę żądania.
Wybierz metodę GET HTTP z listy rozwijanej Adres URL , a następnie wprowadź następujący adres 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}
Wybierz niebieski przycisk Utwórz .
Wybierz przycisk Uruchamiania.
Treść odpowiedzi zawiera dane prognozy pogody na następne 12 godzin. W poniższym przykładzie odpowiedź JSON pokazuje tylko pierwszą godzinę:
{ "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 } } ] }
Żądanie minut po minucie danych prognozy pogody
Interfejs API prognozy get minute zwraca prognozy minut po minucie dla danej lokalizacji przez następne 120 minut. Użytkownicy mogą żądać prognoz pogody w interwałach 1, 5 i 15 minut. Odpowiedź zawiera szczegółowe informacje, takie jak typ opadów (w tym deszcz, śnieg lub mieszanina obu), czas rozpoczęcia i wartość intensywności opadów (dBZ).
W tym przykładzie użyjesz interfejsu API prognozy minuty, aby pobrać prognozę pogody minut po minucie na współrzędnych znajdujących się w Seattle w stanie WA. Prognoza pogody jest podawana przez następne 120 minut. Nasze zapytanie żąda, aby prognoza otrzymała 15-minutowe interwały, ale parametr można dostosować do wartości 1 lub 5 minut.
W aplikacji bruno wybierz pozycję NOWE ŻĄDANIE , aby utworzyć żądanie. W oknie NOWE ŻĄDANIE ustaw wartość Typ na HTTP. Wprowadź nazwę żądania.
Wybierz metodę GET HTTP z listy rozwijanej Adres URL , a następnie wprowadź następujący adres 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}
Wybierz niebieski przycisk Utwórz .
Wybierz przycisk Uruchamiania.
Treść odpowiedzi zawiera dane prognozy pogody dla następnych 120 minut w 15-minutowych odstępach czasu.
{ "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 } ] }