Compartir a través de


Solicitud de datos meteorológicos en tiempo real y previsiones mediante los servicios meteorológicos de Azure Maps

El servicio Weather de Azure Maps es un conjunto de API de RESTful que permite a los desarrolladores integrar datos y visualizaciones meteorológicos sumamente dinámicos históricos, en tiempo real y previstos en sus soluciones.

En este artículo, se muestra cómo solicitar datos meteorológicos en tiempo real y previsiones:

En este vídeo se proporcionan ejemplos para realizar llamadas de REST al servicio Weather de Azure Maps.



Requisitos previos

Importante

En los ejemplos de direcciones URL de este artículo, deberá reemplazar {Your-Azure-Maps-Subscription-key} por la clave de suscripción de Azure Maps.

En este tutorial se usa la aplicación bruno, pero se puede elegir otro entorno de desarrollo de API.

Solicitud de datos meteorológicos en tiempo real

Get Current Conditions API devuelve condiciones meteorológicas detalladas, como precipitaciones, temperatura y viento para una ubicación de coordenadas determinada. Además, se pueden recuperar las observaciones de las últimas 6 o 24 horas para una ubicación determinada. La respuesta incluye detalles como la fecha y la hora de la observación, una descripción de las condiciones meteorológicas, el icono del tiempo, las marcas del indicador de precipitación y la temperatura. También se devuelven la temperatura y el índice de rayos UVA de RealFeel™.

En este ejemplo, usará Get Current Conditions API para recuperar las condiciones meteorológicas actuales en las coordenadas ubicadas en Seattle, WA.

  1. Abra la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud. En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. Escriba un Nombre para la solicitud.

  2. Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:

    https://atlas.microsoft.com/weather/currentConditions/json?api-version=1.0&query=47.60357,-122.32945&subscription-key={Your-Azure-Maps-Subscription-key}
    
  3. Seleccione el botón azul Crear.

  4. Haga clic en el botón Ejecutar.

    Captura de pantalla que muestra la URL de Solicitud de datos meteorológicos en tiempo real con el botón ejecutar resaltado en la aplicación bruno.

    El cuerpo de la respuesta contiene información meteorológica actual.

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

Solicitud de alertas meteorológicas graves

Get Severe Weather Alerts API de Azure Maps devuelve las alertas meteorológicas graves que están disponibles en todo el mundo desde las agencias meteorológicas gubernamentales oficiales y los principales proveedores de alertas meteorológicas globales y regionales. El servicio devuelve detalles como el tipo de alerta, la categoría y el nivel. El servicio también devuelve descripciones detalladas sobre las alertas graves activas en la ubicación solicitada, como huracanes, tormentas eléctricas, olas de calor o incendios forestales. Por ejemplo, los administradores de logística pueden visualizar las condiciones meteorológicas graves en un mapa, junto con las ubicaciones de la empresa y las rutas planeadas, y coordinarse mejor con los conductores y los trabajadores locales.

En este ejemplo, usará Get Severe Weather Alerts API para recuperar las condiciones meteorológicas actuales en las coordenadas ubicadas en Cheyenne, WY.

Nota

En este ejemplo se recuperan alertas meteorológicas graves en el momento de redactar este documento. Es probable que ya no haya ninguna alerta meteorológica grave en la ubicación solicitada. Para recuperar datos de alertas graves reales al ejecutar este ejemplo, debe recuperar los datos de una ubicación de coordenadas diferente.

  1. En la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud. En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. Escriba un Nombre para la solicitud.

  2. Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:

    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. Seleccione el botón azul Crear.

  4. Haga clic en el botón Ejecutar.

    Captura de pantalla que muestra la URL de Solicitud de alertas meteorológicas graves con el botón ejecutar resaltado en la aplicación bruno.

    Si no hay ninguna alerta meteorológica grave, el cuerpo de la respuesta contiene una matriz results[] vacía. Si hay alertas meteorológicas graves, el cuerpo de la respuesta contiene algo parecido a la siguiente respuesta 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"
                }
            ]
            },...
        ]
    }
    

Solicitud de datos de previsiones meteorológicas diarias

Get Daily Forecast API devuelve la previsión meteorológica diaria detallada, como la temperatura y el viento. La solicitud puede especificar para cuántos días se devolverá esta información: 1, 5, 10, 15, 25 o 45 días para una ubicación de coordenadas determinada. La respuesta incluye detalles como la temperatura, el viento, las precipitaciones, la calidad del aire y el índice de rayos UVA. En este ejemplo, se establece duration=5 para solicitar la información de cinco días.

Importante

En el plan de tarifa S0, puede solicitar una previsión diaria para los próximos 1, 5, 10 y 15 días. En el plan de tarifa Gen1 (S1) o Gen2, puede solicitar una previsión diaria para los próximos 25 y 45 días.

Retirada del plan de tarifa Gen1 de Azure Maps

El plan de tarifa de Gen1 ya está en desuso y se retirará el 15/9/26. El plan de tarifa Gen2 reemplaza al plan de tarifa Gen1 (tanto S0 como S1). Si la cuenta de Azure Maps tiene seleccionado el plan de tarifa Gen1, puede cambiar a los precios de Gen2 antes de que se retire; de lo contrario, se actualizará automáticamente. Para obtener más información, consulte Administración del plan de tarifa de la cuenta de Azure Maps.

En este ejemplo, usará Get Daily Forecast API para recuperar la previsión meteorológica de cinco días para las coordenadas ubicadas en Seattle, WA.

  1. En la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud. En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. Escriba un Nombre para la solicitud.

  2. Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:

    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. Seleccione el botón azul Crear.

  4. Haga clic en el botón Ejecutar.

    Captura de pantalla que muestra la URL de Solicitud de previsión del tiempo diario con el botón ejecutar resaltado en la aplicación bruno.

    El cuerpo de la respuesta contiene los datos de previsión meteorológica de cinco días. Por motivos de brevedad, la respuesta JSON siguiente muestra la previsión para el primer día.

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

Solicitud de datos de previsión meteorológica por hora

Get Hourly Forecast API devuelve la previsión meteorológica detallada por hora para las próximas 1, 12, 24 (1 día), 72 (3 días), 120 (5 días) y 240 horas (10 días) para la ubicación de coordenadas dada. La API devuelve detalles como la temperatura, la humedad, el viento, la precipitación y el índice de rayos UVA.

Importante

En el plan de tarifa Gen1 (S0), puede solicitar una previsión horaria para las próximas 1, 12, 24 horas (1 día) y 72 horas (3 días). En el plan de tarifa Gen1 (S1) o Gen2, puede solicitar una previsión por hora para las próximas 120 horas (5 días) y 240 horas (10 días).

En este ejemplo, usará Get Hourly Forecast API para recuperar la previsión meteorológica por hora para las próximas 12 horas en las coordenadas ubicadas en Seattle, WA.

  1. En la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud. En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. Escriba un Nombre para la solicitud.

  2. Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:

    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. Seleccione el botón azul Crear.

  4. Haga clic en el botón Ejecutar.

    Captura de pantalla que muestra la URL de Solicitud de previsión del tiempo cada hora con el botón ejecutar resaltado en la aplicación bruno.

    El cuerpo de la respuesta contiene los datos de previsión meteorológica para las próximas 12 horas. La siguiente respuesta JSON de ejemplo solo muestra la primera hora:

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

Solicitud de datos de previsión meteorológica minuto a minuto

Get Minute Forecast API devuelve las previsiones minuto a minuto de una ubicación determinada para los próximos 120 minutos. Los usuarios pueden solicitar previsiones meteorológicas en intervalos de 1, 5 y 15 minutos. La respuesta incluye detalles como el tipo de precipitación (como lluvia, nieve o una mezcla de ambos), la hora de inicio y el valor de intensidad de la precipitación (dBZ).

En este ejemplo, usará Get Minute Forecast API para recuperar la previsión meteorológica minuto a minuto en las coordenadas ubicadas en Seattle, WA. La previsión meteorológica se proporciona para los próximos 120 minutos. Nuestra consulta solicita que la previsión se proporcione a intervalos de 15 minutos, pero puede ajustar el parámetro para que sea de 1 o 5 minutos.

  1. En la aplicación bruno, seleccione NUEVA SOLICITUD para crear la solicitud. En la ventana NUEVA SOLICITUD, establezca Tipo en HTTP. Escriba un Nombre para la solicitud.

  2. Seleccione el método HTTP GET en la lista desplegable de URL y escriba la dirección URL siguiente:

    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. Seleccione el botón azul Crear.

  4. Haga clic en el botón Ejecutar.

    Captura de pantalla que muestra la URL de Solicitud de previsión del tiempo minuto a minuto con el botón ejecutar resaltado en la aplicación bruno.

    El cuerpo de respuesta contiene datos de previsión meteorológica para los próximos 120 minutos, en 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": 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
        }
      ]
    }
    

Pasos siguientes