다음을 통해 공유


Azure Maps Weather Services를 사용하여 실시간 및 예측 날씨 데이터 요청

Azure Maps Weather Services는 개발자가 매우 동적인 기록, 실시간 및 예측 날씨 데이터와 시각화를 솔루션에 통합할 수 있도록 하는 RESTful 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를 사용하여 워싱턴주 시애틀에 위치한 좌표에서 현재 날씨 상황을 검색합니다.

  1. 브루노 앱을 열고 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP설정합니다. 요청의 이름을 입력합니다.

  2. 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}
    
  3. 파란색 만들기 단추를 선택합니다.

  4. 실행 단추를 선택합니다.

    브루노 앱에서 실행 단추가 강조 표시된 실시간 날씨 데이터 URL 요청을 보여 주는 스크린샷

    응답 본문에는 현재 날씨 정보가 포함됩니다.

    {
      "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를 사용하여 와이오밍주 샤이엔에 위치한 좌표에서 현재 날씨 상황을 검색합니다.

참고 항목

이 예제에서는 작성 시의 심각한 날씨 경보를 검색합니다. 요청된 위치에 더 이상 심각한 날씨 경보가 없을 수 있습니다. 이 예제를 실행할 때 실제 심각한 경보 데이터를 검색하려면 다른 좌표 위치에서 데이터를 검색해야 합니다.

  1. 브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP설정합니다. 요청의 이름을 입력합니다.

  2. 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}
    
  3. 파란색 만들기 단추를 선택합니다.

  4. 실행 단추를 선택합니다.

    브루노 앱에서 실행 단추가 강조 표시된 악천후 경고 요청 URL을 보여 주는 스크린샷.

    악천후 경고가 없는 경우 응답 본문에는 빈 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일간의 일기예보를 검색합니다.

  1. 브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP설정합니다. 요청의 이름을 입력합니다.

  2. 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}
    
  3. 파란색 만들기 단추를 선택합니다.

  4. 실행 단추를 선택합니다.

    브루노 앱에서 실행 단추가 강조 표시된 일일 일기 예보 데이터 URL 요청을 보여 주는 스크린샷.

    응답 본문에는 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시간 동안의 시간별 일기예보를 검색합니다.

  1. 브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP설정합니다. 요청의 이름을 입력합니다.

  2. 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}
    
  3. 파란색 만들기 단추를 선택합니다.

  4. 실행 단추를 선택합니다.

    브루노 앱에서 실행 단추가 강조 표시된 요청 시간별 일기 예보 데이터 URL을 보여 주는 스크린샷.

    응답 본문에는 다음 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분으로 조정할 수 있습니다.

  1. 브루노 앱에서 NEW REQUEST를 선택하여 요청을 만듭니다. 새 요청 창에서 형식을 HTTP설정합니다. 요청의 이름을 입력합니다.

  2. 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}
    
  3. 파란색 만들기 단추를 선택합니다.

  4. 실행 단추를 선택합니다.

    브루노 앱에서 실행 단추가 강조 표시된 요청 분 단위 일기 예보 데이터 URL을 보여 주는 스크린샷.

    응답 본문에는 다음 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
        }
      ]
    }
    

다음 단계