Bagikan melalui


Meminta data cuaca real-time dan perkiraan menggunakan layanan Azure Maps Weather

Layanan cuaca Azure Maps adalah serangkaian API RESTful yang memungkinkan pengembang mengintegrasikan data dan visualisasi cuaca historis, real-time, dan prakiraan yang sangat dinamis ke dalam solusi mereka.

Artikel ini menunjukkan cara meminta data cuaca real time dan prakiraan:

Video ini memberikan contoh untuk melakukan panggilan REST ke layanan Azure Maps Weather.



Prasyarat

Penting

Dalam contoh URL dalam artikel ini, Anda harus mengganti {Your-Azure-Maps-Subscription-key} dengan kunci langganan Azure Maps Anda.

Tutorial ini menggunakan aplikasi bruno , tetapi Anda dapat memilih lingkungan pengembangan API yang berbeda.

Meminta data cuaca waktu nyata

Get Current Conditions API menampilkan detail kondisi cuaca seperti curah hujan, suhu, dan angin untuk lokasi koordinat tertentu. Juga, pengamatan dari 6 atau 24 jam terakhir untuk lokasi tertentu dapat diambil. Respons mencakup detail seperti tanggal dan waktu pengamatan, deskripsi kondisi cuaca, ikon cuaca, bendera indikator curah hujan, dan suhu. Indeks Suhu dan ultraviolet (UV) RealFeelâ„¢ juga dikembalikan.

Dalam contoh ini, Anda menggunakan Get Current Condition API untuk mengambil kondisi cuaca saat ini pada koordinat yang terletak di Seattle, WA.

  1. Buka aplikasi bruno, pilih PERMINTAAN BARU untuk membuat permintaan. Di jendela PERMINTAAN BARU, atur Jenis ke HTTP. Masukkan Nama untuk permintaan tersebut.

  2. Pilih metode HTTP GET di daftar drop-down URL, lalu masukkan URL berikut:

    https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
    
  3. Pilih tombol Buat biru.

  4. Pilih tombol jalankan.

    Cuplikan layar yang menunjukkan URL Data cuaca real time Permintaan dengan tombol jalankan disorot di aplikasi bruno.

    Badan respons berisi informasi cuaca terkini.

    {
      "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
              }
            }
          }
        }
      ]
    }
    

Meminta pemberitahuan cuaca buruk

AZURE Maps Get Severe Weather Alerts API mengembalikan peringatan cuaca buruk yang tersedia di seluruh dunia dari Badan Meteorologi Pemerintah resmi dan penyedia pemberitahuan cuaca global ke regional terkemuka. Layanan mengembalikan detail seperti jenis pemberitahuan, kategori, tingkat. Layanan ini juga mengembalikan deskripsi terperinci tentang pemberitahuan parah aktif untuk lokasi yang diminta, seperti badai, badai petir, petir, gelombang panas, atau kebakaran hutan. Sebagai contoh, manajer logistik dapat memvisualisasikan kondisi cuaca buruk di peta, bersama dengan lokasi bisnis dan rute yang direncanakan, dan berkoordinasi lebih lanjut dengan pengemudi dan pekerja lokal.

Dalam contoh ini, Anda menggunakan Get Severe Weather Alerts API untuk mengambil kondisi cuaca saat ini pada koordinat yang terletak di Cheyenne, WY.

Catatan

Contoh ini mengambil pemberitahuan cuaca buruk pada saat penulisan ini. Kemungkinan tidak ada lagi pemberitahuan cuaca buruk di lokasi yang diminta. Untuk mengambil data pemberitahuan parah yang sebenarnya saat menjalankan contoh ini, Anda harus mengambil data di lokasi koordinat yang berbeda.

  1. Di aplikasi bruno, pilih PERMINTAAN BARU untuk membuat permintaan. Di jendela PERMINTAAN BARU, atur Jenis ke HTTP. Masukkan Nama untuk permintaan tersebut.

  2. Pilih metode HTTP GET di daftar drop-down URL, lalu masukkan URL berikut:

    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. Pilih tombol Buat biru.

  4. Pilih tombol jalankan.

    Cuplikan layar yang menunjukkan URL Permintaan pemberitahuan cuaca buruk dengan tombol jalankan disorot di aplikasi bruno.

    Jika tidak ada pemberitahuan cuaca buruk, isi respons berisi array kosong results[] . Jika ada pemberitahuan cuaca buruk, badan respons berisi sesuatu seperti respons JSON berikut:

    {
    "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"
                }
            ]
            },...
        ]
    }
    

Minta data ramalan cuaca harian

Mendapatkan API Prakiraan Harian menampilkan prakiraan cuaca harian yang terperinci seperti suhu dan angin. Permintaan dapat menentukan berapa hari untuk kembali: 1, 5, 10, 15, 25, atau 45 hari untuk lokasi koordinat tertentu. Responsnya mencakup detail seperti suhu, angin, curah hujan, kualitas udara, dan indeks UV. Dalam contoh ini, kami meminta lima hari dengan mengatur duration=5.

Penting

Di tingkat harga S0, Anda dapat meminta perkiraan harian untuk 1, 5, 10, dan 15 hari ke depan. Di tingkat harga Gen1 (S1) atau Gen2, Anda dapat meminta prakiraan harian selama 25 hari ke depan, dan 45 hari.

Penghentian tingkat harga Azure Maps Gen1

Tingkat harga Gen1 sekarang tidak digunakan lagi dan akan dihentikan pada 15/9/26. Tingkat harga Gen2 menggantikan tingkat harga Gen1 (baik S0 maupun S1). Jika akun Azure Maps Anda memiliki tingkat harga Gen1 yang dipilih, Anda dapat beralih ke harga Gen2 sebelum dihentikan, jika tidak, akun tersebut akan diperbarui secara otomatis. Untuk informasi selengkapnya, lihat Mengelola tingkat harga akun Azure Maps Anda.

Dalam contoh ini, Anda menggunakan Get Daily Forecast API untuk mengambil prakiraan cuaca lima hari untuk koordinat yang terletak di Seattle, WA.

  1. Di aplikasi bruno, pilih PERMINTAAN BARU untuk membuat permintaan. Di jendela PERMINTAAN BARU, atur Jenis ke HTTP. Masukkan Nama untuk permintaan tersebut.

  2. Pilih metode HTTP GET di daftar drop-down URL, lalu masukkan URL berikut:

    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. Pilih tombol Buat biru.

  4. Pilih tombol jalankan.

    Cuplikan layar yang menunjukkan URL data Prakiraan cuaca harian Permintaan dengan tombol jalankan disorot di aplikasi bruno.

    Badan tanggapan berisi data prakiraan cuaca lima hari. Demi kesederhanaan, respons JSON berikut menunjukkan prakiraan untuk hari pertama.

    {
      "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"
          ]
        }
      ]
    }
    

Minta data prakiraan cuaca setiap jam

Mendapatkan API Prakiraan Per Jam menampilkan prakiraan cuaca terperinci per jam untuk 1, 12, 24 (1 hari), 72 (3 hari), 120 (5 hari), dan 240 jam (10 hari) berikutnya untuk lokasi koordinat yang diberikan. API mengembalikan detail seperti suhu, kelembaban, angin, curah hujan, dan indeks UV.

Penting

Di tingkat harga Gen1 (S0), Anda dapat meminta prakiraan per jam untuk 1, 12, 24 jam (1 hari) berikutnya, dan 72 jam (3 hari). Di tingkat harga Gen1 (S1) atau Gen2, Anda dapat meminta prakiraan per jam untuk 120 (5 hari) dan 240 jam berikutnya (10 hari).

Dalam contoh ini, Anda menggunakan GET Hourly Forecast API untuk mengambil prakiraan cuaca per jam selama 12 jam ke depan pada koordinat yang terletak di Seattle, WA.

  1. Di aplikasi bruno, pilih PERMINTAAN BARU untuk membuat permintaan. Di jendela PERMINTAAN BARU, atur Jenis ke HTTP. Masukkan Nama untuk permintaan tersebut.

  2. Pilih metode HTTP GET di daftar drop-down URL, lalu masukkan URL berikut:

    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. Pilih tombol Buat biru.

  4. Pilih tombol jalankan.

    Cuplikan layar yang menunjukkan URL data prakiraan cuaca per jam Permintaan dengan tombol jalankan disorot di aplikasi bruno.

    Badan tanggapan berisi data prakiraan cuaca untuk 12 jam ke depan. Contoh respons JSON berikut hanya menunjukkan jam pertama:

    {
      "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
          }
        }
      ]
    }
    

Minta data ramalan cuaca menit demi menit

Get Minute Forecast API menampilkan perkiraan menit demi menit untuk lokasi tertentu selama 120 menit berikutnya. Pengguna dapat meminta prakiraan cuaca dalam interval 1, 5 dan 15 menit. Responsnya mencakup detail seperti jenis presipitasi (termasuk hujan, salju, atau campuran keduanya), waktu mulai, dan nilai intensitas presipitasi (dBZ).

Dalam contoh ini, Anda menggunakan GET Minute Forecast API untuk mengambil prakiraan cuaca menit demi menit pada koordinat yang terletak di Seattle, WA. Prakiraan cuaca diberikan untuk 120 menit ke depan. Kueri kami meminta agar prakiraan diberikan pada interval 15 menit, tetapi Anda dapat menyesuaikan parameter menjadi 1 atau 5 menit.

  1. Di aplikasi bruno, pilih PERMINTAAN BARU untuk membuat permintaan. Di jendela PERMINTAAN BARU, atur Jenis ke HTTP. Masukkan Nama untuk permintaan tersebut.

  2. Pilih metode HTTP GET di daftar drop-down URL, lalu masukkan URL berikut:

    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. Pilih tombol Buat biru.

  4. Pilih tombol jalankan.

    Cuplikan layar yang menunjukkan URL data prakiraan cuaca menit demi menit Permintaan dengan tombol jalankan disorot di aplikasi bruno.

    Badan respons berisi data ramalan cuaca untuk 120 menit berikutnya, dalam interval 15 menit.

    {
      "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
        }
      ]
    }
    

Langkah berikutnya