你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在适用于 Azure 农业数据管理器中引入天气预报数据

天气是农业领域里一项高度自主化的服务。 通过适用于农业的 Azure 数据管理器,客户能够使用自己选择的天气提供程序。

适用于农业的 Azure 数据管理器通过基于扩展的与提供程序无关的方法提供当前天气数据和天气预测数据。 可按照编写天气扩展的步骤来使用你选择的提供程序。

设计概述

由于适用于农业的 Azure 数据管理器通过与提供程序无关的方法提供天气数据,所以你不必了解提供程序的 API。 相反,无论使用什么提供程序,都可使用相同的适用于农业的 Azure 数据管理器 API。

下面是与提供程序无关的 API 的行为的一些说明:

  • 可以通过一次调用请求最多 50 个位置的天气数据。
  • 预测数据不早于 15 分钟。 当前条件的数据不早于 10 分钟。
  • 针对某个位置进行初始调用后,将缓存数据且缓存时长为定义的生存时间 (TTL)。
  • 若要让缓存持续更新,可在天气扩展中使用 apiFreshnessTimeInMinutes 参数。 平台让作业运行定义的时间量并更新缓存。 默认值为零,表示默认情况下缓存不持续更新。

以下部分提供了命令来提取天气数据并将其引入适用于农业的 Azure 数据管理器。

步骤 1:安装天气扩展

若要安装该扩展,请使用 Azure 资源管理器 ARMClient 工具运行以下命令。

将尖括号中的所有值 (<>) 替换为相应的环境值。 当前支持的扩展 ID 为 IBM.TWC

armclient PUT /subscriptions/<subscriptionid>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-resource-name>/extensions/<extensionid>?api-version=2020-05-12-preview '{}'

下面是安装命令的示例输出:

{
      "id": "/subscriptions/<subscriptionid>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-resource-name>/extensions/<extensionid>",
      "type": "Microsoft.AgFoodPlatform/farmBeats/extensions",
      "systemData": {
        "createdBy": "testuser@abc.com",
        "createdByType": "User",`        
        "createdAt": "2021-03-17T12:36:51Z",
        "lastModifiedBy": "testuser@abc.com",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2021-03-17T12:36:51Z"
      },
      "properties": {
        "category": "Weather",
        "installedExtensionVersion": "1.0",
        "extensionAuthLink": "https://www.<provider.com/integration/",
        "extensionApiDocsLink": "https://docs.<provider>.com/documentation/Weather_Data/Historical_and_Climatological_Weather/latest#_daily_historical_ag_weather_v1_0"
      },
      "eTag": "92003c91-0000-0700-0000-804752e00000",
      "name": "<provider>"
}

完成扩展安装后,可以引入天气数据。

如果想要更新 apiFreshnessTimeInMinutes,请使用以下 PowerShell 命令更新扩展。 将尖括号中的所有值替换为相应的环境值。

armclient put /subscriptions/<subscriptionid>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-resource-name>/<extensionid>?api-version=2021-09-01-preview '{"additionalApiProperties": {""15-day-daily-forecast"": {"apiFreshnessTimeInMinutes": <time>}, ""currents-on-demand"": {"apiFreshnessTimeInMinutes": <time>},""15-day-hourly-forecast"":{"apiFreshnessTimeInMinutes": <time>}}}'

上述更新命令会合并修补操作。 它仅更新命令中提到的 API 的新鲜度时间,并原样保留其他 API 的新鲜度时间值。

下面是更新命令的示例输出:

{
  "id": "/subscriptions/<subscriptionid>/resourceGroups/<resource-group-name>/providers/Microsoft.AgFoodPlatform/farmBeats/<farmbeats-resource-name>/extensions/<extensionid>",
  "type": "Microsoft.AgFoodPlatform/farmBeats/extensions",
  "systemData": {
    "createdBy": "50e74af5-3b8f-4a8c-9521-4f506b4e0c16",
    "createdByType": "User",
    "createdAt": "2022-10-10T21:28:05Z",
    "lastModifiedBy": "50e74af5-3b8f-4a8c-9521-4f506b4e0c16",
    "lastModifiedByType": "User",
    "lastModifiedAt": "2022-11-08T13:10:17Z"
  },
  "properties": {
    "extensionId": "provider",
    "extensionCategory": "Weather",
    "installedExtensionVersion": "2.0",
    "extensionApiDocsLink": "https://go.microsoft.com/fwlink/?linkid=2192974",
    "additionalApiProperties": {
      "15-day-daily-forecast": {
        "apiFreshnessTimeInMinutes": 1600
      },
      "currents-on-demand": {
        "apiFreshnessTimeInMinutes": 1600
      },
       "15-day-hourly-forecast": {
        "apiFreshnessTimeInMinutes": 1600
      }
    }
  },
  "eTag": "ea0261d0-0000-0700-0000-636a55390000",
  "name": "provider"
}

步骤 2:提取天气数据

获取访问 API 所需的凭据后,需要调用天气数据 API 来提取天气数据。