Azure Maps Weather Services를 사용하여 실시간 및 예측 날씨 데이터 요청
Azure Maps Weather Services는 개발자가 매우 동적인 기록, 실시간 및 예측 날씨 데이터와 시각화를 솔루션에 통합할 수 있도록 하는 RESTful API 집합입니다.
이 문서에서는 실시간 및 예측 날씨 데이터를 요청하는 방법을 보여 줍니다.
- Get Current Conditions API를 사용하여 실시간(현재) 날씨 데이터를 요청합니다.
- Get Severe Weather Alerts API를 사용하여 심각한 날씨 경보를 요청합니다.
- Get Daily Forecast API를 사용하여 일별 예측을 요청합니다.
- Get Hourly Forecast API를 사용하여 시간별 예측을 요청합니다.
- Get Minute Forecast API를 사용하여 분 단위 예측을 요청합니다.
이 비디오는 Azure Maps Weather Services에 대한 REST 호출 예제를 제공합니다.
필수 조건
Important
이 문서의 URL 예에서 {Your-Azure-Maps-Subscription-key}
를 Azure Maps 구독 키로 바꿔야 합니다.
이 자습서에서는 브루노 애플리케이션을 사용하지만 다른 API 개발 환경을 선택할 수 있습니다.
실시간 날씨 데이터 요청
Get Current Conditions API는 특정 좌표 위치에 대한 강수량, 온도 및 바람과 같은 자세한 날씨 상황을 반환합니다. 또한 특정 위치에 대해 지난 6 시간 또는 24 시간 동안의 관측 값을 검색할 수 있습니다. 응답에는 관측 날짜 및 시간, 기상 조건 설명, 날씨 아이콘, 강수량 표시 플래그, 온도와 같은 세부 정보가 포함됩니다. RealFeel™ 온도 및 자외선(UV) 지수도 반환됩니다.
이 예제에서는 Get Current Conditions API를 사용하여 워싱턴주 시애틀에 위치한 좌표에서 현재 날씨 상황을 검색합니다.
브루노 앱을 열고 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP로 설정합니다. 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 URL을 입력합니다.
https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
파란색 만들기 단추를 선택합니다.
실행 단추를 선택합니다.
응답 본문에는 현재 날씨 정보가 포함됩니다.
{ "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 } } } } ] }
심각한 날씨 경보 요청
Azure Maps Get Severe Weather Alerts API는 정부 공식 기상청과 주요 전 세계 기상 경보 공급자 모두에서 전 세계적으로 사용할 수 있는 심각한 날씨 경보를 반환합니다. 이 서비스는 경고 형식, 범주, 수준과 같은 세부 정보를 반환합니다. 또한 이 서비스는 허리케인, 뇌우, 번개, 열파 또는 산불과 같은 요청된 위치에 대한 활성 심각한 경고에 대한 자세한 설명을 반환합니다. 예를 들어 물류 관리자는 사업장 위치 및 계획된 경로와 함께 심각한 날씨 상황을 지도에 시각화하고 운전자 및 현지 근로자와 더욱 긴밀하게 조정할 수 있습니다.
이 예제에서는 Get Severe Weather Alerts API를 사용하여 와이오밍주 샤이엔에 위치한 좌표에서 현재 날씨 상황을 검색합니다.
참고 항목
이 예제에서는 작성 시의 심각한 날씨 경보를 검색합니다. 요청된 위치에 더 이상 심각한 날씨 경보가 없을 수 있습니다. 이 예제를 실행할 때 실제 심각한 경보 데이터를 검색하려면 다른 좌표 위치에서 데이터를 검색해야 합니다.
브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP로 설정합니다. 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 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}
파란색 만들기 단추를 선택합니다.
실행 단추를 선택합니다.
악천후 경고가 없는 경우 응답 본문에는 빈
results[]
배열이 포함됩니다. 심각한 날씨 경보가 있는 경우 응답 본문에 다음 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" } ] },... ] }
일별 일기예보 데이터 요청
Get Daily Forecast API는 온도 및 바람과 같은 상세한 일별 일기예보를 반환합니다. 요청은 지정된 좌표 위치에 대해 1일, 5일, 10일, 15일, 25일 또는 45일 중 반환할 날 수를 지정할 수 있습니다. 응답에는 온도, 바람, 강수량, 대기 질 및 UV 지수와 같은 세부 정보가 포함됩니다. 이 예제에서는 duration=5
를 설정하여 5일 동안 요청합니다.
Important
S0 가격 책정 계층에서는 다음 1일, 5일, 10일 및 15일에 대한 일일 예보를 요청할 수 있습니다. Gen1(S1) 또는 Gen2 가격 책정 계층에서 향후 25일 및 45일에 대한 일별 예측을 요청할 수 있습니다.
Azure Maps Gen1 가격 책정 계층 사용 중지
Gen1 가격 책정 계층은 이제 더 이상 사용되지 않으며 26/9/15에 사용 중지됩니다. Gen2 가격 책정 계층은 Gen1(S0 및 S1 모두) 가격 책정 계층을 대체합니다. Azure Maps 계정에 Gen1 가격 책정 계층이 선택된 경우 사용 중지되기 전에 Gen2 가격 책정으로 전환할 수 있습니다. 그렇지 않으면 자동으로 업데이트됩니다. 자세한 내용은 Azure Maps 계정의 가격 책정 계층 관리를 참조하세요.
이 예제에서는 Get Daily Forecast API를 사용하여 워싱턴주 시애틀에 위치한 좌표에 대한 5일간의 일기예보를 검색합니다.
브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP로 설정합니다. 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 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}
파란색 만들기 단추를 선택합니다.
실행 단추를 선택합니다.
응답 본문에는 5일간의 일기예보 데이터가 포함됩니다. 간결성을 위해 다음 JSON 응답은 첫날의 예측을 보여 줍니다.
{ "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" ] } ] }
시간별 일기예보 데이터 요청
Get Hourly Forecast API는 지정된 좌표 위치에 대해 다음 1시간, 12시간, 24시간(1일), 72시간(3일), 120시간(5일) 및 240시간(10일)에 대한 시간별 자세한 일기예보를 반환합니다. API는 온도, 습도, 바람, 강수량 및 UV 지수와 같은 세부 정보를 반환합니다.
Important
Gen1(S0) 가격 책정 계층에서는 다음 1시간, 12시간, 24시간(1일), 72시간(3일)에 대한 시간별 예보를 요청할 수 있습니다. Gen1(S1) 또는 Gen2 가격 책정 계층에서 다음 120시간(5일) 및 240시간(10일)에 대한 시간별 예측을 요청할 수 있습니다.
이 예제에서는 Get Hourly Forecast API를 사용하여 워싱턴주 시애틀에 위치한 좌표에 대한 향후 12시간 동안의 시간별 일기예보를 검색합니다.
브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP로 설정합니다. 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 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}
파란색 만들기 단추를 선택합니다.
실행 단추를 선택합니다.
응답 본문에는 다음 12시간 동안의 일기예보 데이터가 포함됩니다. 다음 예제 JSON 응답은 첫 번째 시간만 보여줍니다.
{ "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 } } ] }
분 단위 일기예보 데이터 요청
Get Minute Forecast API는 다음 120분 동안 지정된 위치에 대한 분 단위 예측을 반환합니다. 사용자는 1분, 5분, 15분 간격으로 일기예보를 요청할 수 있습니다. 응답에는 강수 유형(비, 눈 또는 둘 다 포함), 시작 시각 및 강수 강도 값 (dBZ)과 같은 세부 정보가 포함됩니다.
이 예제에서는 Get Minute Forecast API를 사용하여 워싱턴주 시애틀에 위치한 좌표에 대한 분 단위 일기예보를 검색합니다. 다음 120분 동안 일기예보가 제공됩니다. 쿼리는 15분 간격으로 예측이 제공되도록 요청하지만 매개 변수를 1분 또는 5분으로 조정할 수 있습니다.
브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP로 설정합니다. 요청의 이름을 입력합니다.
URL 드롭다운 목록에서 GET HTTP 메서드를 선택한 다음, 다음 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}
파란색 만들기 단추를 선택합니다.
실행 단추를 선택합니다.
응답 본문에는 다음 120분 동안 15분 간격의 일기예보 데이터가 포함됩니다.
{ "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 } ] }