Sdílet prostřednictvím


Jak napsat rozšíření počasí

V této části se zobrazí podrobný průvodce pro psaní vlastního rozšíření počasí.

Co je rozšíření počasí

Rozšíření počasí v Data Manageru pro zemědělství je soubor manifestu (JSON), který poskytuje úplné podrobnosti o rozhraních API a šabloně pro každou odpověď rozhraní API (výstup). Soubor přípony je tedy v podstatě struktura šablon rozhraní API definovaná Správcem dat pro zemědělství, aby porozuměl charakteristikám vstupu (požadavku) a výstupu rozhraní API (odpovědi).

Struktura rozšíření počasí

Na vysoké úrovni je soubor přípony JSON, který se skládá ze dvou věcí:

  • Metadata zprostředkovatele (objekt JSON)
  • Informace o rozhraní API (pole JSON)

Metadata zprostředkovatele

Jedná se o objekt JSON poskytující podrobnosti o následujících polích, která jsou nezbytná k jednoznačné identifikaci rozšíření a informací o jeho správě verzí. Podrobnosti uvedené v této části rozšíření se zobrazují externím zákazníkům na marketplace Data Manageru pro zemědělství. Proto extensionId musí extensionName být zákazník zaměřený na zákazníky (pro snadnou identifikaci) a description (pro návrh hodnoty).

Ukázková metadata zprostředkovatele

"provider": {
    "extensionId": "abc.weather", 
    "extensionName": "ABC weather",
    "description": "Get Weather data from ABC weather into Azure Data Manager for Agriculture platform using this extension",
    "dataCategory": "Weather",
    "farmBeatsSchemaVersion": "1.0",
    "extensionVersion": "1.0",
    "supportUrl": "www.abc.com/support",
    "supportEmail": "support@abc.com"
  }
Podrobnosti metadat zprostředkovatele
Name Typ Popis
extensionId string ID zadané v podobě názvu organizace (Contoso) a služby (počasí) Ex: org.service. extensionId je jedinečný identifikátor rozšíření a identifikátor, který uživatelé používají na platformě Data Manager for Agriculture k interakci s rozhraními API rozšíření.
extensionName string Název rozšíření, který se má použít v marketplace rozšíření Data Manager for Agriculture.
description string Popis s uvedením možností a služeb nabízených rozšířením
dataCategory string Pro rozšíření počasí použijte weather.
farmBeatsSchemaVersion string Verze souboru manifestu na straně Data Manageru pro zemědělství. Všechny aktualizace existujícího souboru manifestu vedou k aktualizaci nové verze tohoto pole.
extensionVersion string Verze souboru s příponou. Začíná na .1.0 Aktualizace na váš soubor s příponou zvýší toto číslo verze podle konvence hlavních a dílčích aktualizací.
Supporturl string Odkaz na web pro vyvolání dotazů na podporu a nejčastější dotazy
supportEmail string Odešlete e-mail s dotazy podpory.

Informace o rozhraní API

Pole JSON s informacemi o rozhraní API (apiInfos) je možné dále rozdělit na následující strukturální prvky.

  • Metadata API
  • Parametry ověřování
  • Vstupní parametry rozhraní API
  • Extrahované vstupní parametry rozhraní API
  • Funkční parametry
  • Systém jednotek
  • Parametry platformy a vlastní
  • Šablona platformy a vlastní

Metadata API

Tato část se skládá ze základních informací týkajících se rozhraní API používaného Data Managerem pro zemědělství k identifikaci apiName (volaného uživateli explicitně) a přesměrování požadavku rozhraní API na právo endpoint na základě příslušného requestTypepožadavku .

Ukázková metadata rozhraní API
"apiInfos": [
    {
          "apiName": "dailyforecast",
          "description": "The Daily Forecast API",
          "endpoint": "https://ag.us.clearapis.com/v1.1/forecast/daily",
          "requestType": "GET",
          "isLoadAPI": "false",
          "typeOfData": "forecast",
          "granularity": "daily",
          "defaultUnitSystem": "us"
    }
]
Podrobnosti metadat rozhraní API
Name Typ Popis
apiInfos pole Pole JSON objektů, kde každé rozhraní API je objekt v rámci apiInfos pole.
apiName string Název rozhraní API podporovaný rozšířením je přesný název, pomocí kterého by uživatelé volali do rozhraní API rozšíření. Postupujte podle stejných zásad vytváření názvů, jak je uvedeno v dokumentaci k rozhraní API.
description string Popis rozhraní API
endpoint string Koncový bod rozhraní API pro Data Manager pro zemědělství, který se má zavolat do apiNamerozhraní .
Requesttype string GET nebo POST PUT typ požadavku, který apiNamepodporuje .
isLoadAPI boolean Pokud se jedná apiName o průchozí rozhraní API, jako jsou aktuální data o počasí, nastavte tento klíč jako false. Pro všechna rozhraní API pro načítání (historická a prognóza) ponechte toto pole jako true. isLoadAPI Když je falseklíč, odpověď rozhraní API by se uživateli odeslala přímo a neuložila by se do služby úložiště Data Manager for Agriculture.
typeOfData string Aktuálně podporované hodnoty jsou Historical a Forecast.
Rozlišovací schopnost string Aktuálně podporované hodnoty jsou Daily a Hourly.
defaultUnitSystem string Zadejte název výchozího systému jednotek, který apiNamepodporuje .

Parametry ověřování

Tato část přebírá parametry související s ověřováním apiName, které podporuje . Vzhledem k tomu, že Správce dat pro zemědělství podporuje dva typy klíčů souvisejících s ověřováním (x-ms-farmBeats-data-provider-id & x-ms-farmBeats-data-provider-key) v části hlavičky rozhraní API, musí soubor přípony explicitně zadat název klíče příslušných ověřovacích klíčů podle potřeby apiName.

Jako Správce dat pro zemědělství shromažďuje ověřovací informace prostřednictvím hlavičky rozhraní API (v rozhraní API pro vytvoření úlohy počasí). Mapování ověřovacích parametrů zajišťuje, aby Správce dat pro zemědělství mohl podle potřeby předat klíč odpovídajícím způsobem rozšíření.

Ukázkové parametry ověřování
"apiInfos": [
    "authInputParameters": [
        {
          "farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-id",
          "name": "app_id",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "Provide the APP ID, username etc. that your API supports",
          "location": "apiQuery"
        },
        {
          "farmBeatsAuthMapping": "x-ms-farmBeats-data-provider-key",
          "name": "app_key",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "Provide the API Key or password etc. that your API supports",
          "location": "apiQuery"
        }
      ]
]
Podrobnosti o parametrech ověřování
Name Typ Popis
authInputParameters pole Pole JSON parametrů ověřování, kde každý objekt označuje typ podporovaného ověřování. Klíč použijte na základě typu ověřování podporovaného vaším rozšířením.
farmBeatsAuthMapping string V současné době se podporují dva typy klíčů souvisejících s ověřováním. Pro ověřování založené na klíči rozhraní API používejte pouze x-ms-farmBeats-data-provider-key objekt, zatímco pro ověřování POMOCÍ ID APLIKACE a klíče APP se používají oba x-ms-farmBeats-data-provider-id objekty ix-ms-farmBeats-data-provider-key objekty.
name string Název ověřovacího klíče, který podporuje apiName.
isRequired boolean Je tento název povinný parametr pro apiName? Zadejte hodnoty true nebo false.
providerDataType string Zadejte datový typ parametru name .
description string Data Manager for Agriculture description of what each of the farmBeatsAuthMapping means within each object.
location string Kde má být parametr odeslán v rozhraní API name . Aktuálně podporované hodnoty jsou apiQuery & apiHeader.

Vstupní parametry rozhraní API

Tato část obsahuje podrobnosti o podpisu rozhraní API (vstupní parametry) pro úspěšné volání do objektu apiName.

Ukázkové vstupní parametry rozhraní API
"apiInfos": [
    "apiInputParameters": [
        {
          "name": "start",
          "isRequired": "true",
          "providerDataType": "double",
          "description": "Start of time range. Valid start values range from zero to nine. Day zero represents the current day.",
          "location": "apiQuery"
        },
        {
          "name": "end",
          "isRequired": "true",
          "providerDataType": "double",
          "description": "End of time range. Valid end values range from zero to nine.",
          "location": "apiQuery"
        },
        {
          "name": "location",
          "isRequired": "true",
          "providerDataType": "string",
          "description": "User-provided latitude and longitude coordinates. Formatted as location=[(<lat_1>,<lon_1>)].",
          "location": "apiQuery"
        },
        {
          "name": "unitcode",
          "isRequired": "false",
          "providerDataType": "string",
          "description": "Unit conversion set to be used. Default is us-std. Valid values are us-std, si-std.",
          "location": "apiQuery"
        },
      ]
]
Podrobnosti o vstupních parametrech rozhraní API
Name Typ Popis
apiInputParameters pole Pole JSON vstupních parametrů rozhraní API, kde každý objekt označuje vstupní parametr podporovaný parametrem apiName.
name string Název vstupního parametru, který podporuje apiName.
isRequired boolean Je tento název povinný parametr pro apiName? Zadejte hodnoty true nebo false.
providerDataType string Zadejte datový typ parametru name .
description string Zadejte popis toho, co name parametr znamená.
location string Kde má být parametr odeslán v rozhraní API name . Aktuálně podporované hodnoty jsou apiQuery & apiHeader.

Extrahované vstupní parametry rozhraní API

Tato část je určená pro Data Manager k extrahování vstupních parametrů předaných v požadavku rozhraní API pro výpočty a úložiště. V tomto příkladu by Správce dat pro zemědělství extrahoval informace o poloze (zeměpisnou šířku a délku) z požadavku vstupu rozhraní API a uložil je jako součást každého výstupu počasí ve Správci dat pro zemědělství.

Proto rozšíření musí poskytnout šablonu HandleBars, jak extrahovat informace o poloze. Následující příklad naznačuje, že rozhraní API rozšíření shromažďuje informace o poloze jako "lat" "latitude" a "lon" pro "longitude".

Ukázka extrahovaných vstupních parametrů rozhraní API
"extractedApiInputParameters": [
        {
          "name": "location",
          "template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\"  } "
        }
      ]
Podrobnosti o extrahovaných vstupních parametrech rozhraní API
Name Typ Popis
extractedApiInputParameters pole Pole JSON funkcí extrakce, kde každý objekt označuje, jaké informace je potřeba extrahovat. V současné době location je jednou z těchto extrakcí.
name string Název extrakce, aktuálně podporovaná hodnota je location .
šablona string Šablona HandleBars znázorňující, jak jsou informace o zeměpisné šířce a délce shromážděné ve vstupních parametrech rozhraní API.

Funkční parametry

Tato část se věnuje funkcím a možnostem vytvořeným správcem dat pro zemědělství. Pro rozšíření počasí je výpočet centroidu jednou z těchto funkcí.

Pokud uživatelé nezadají souřadnice zeměpisné šířky a délky, použije Správce dat pro zemědělství k výpočtu centroidu primární geometrii pole (ID předaného uživatelem). Vypočítané souřadnice centroidu se předávají jako zeměpisná šířka a délka rozšíření (zprostředkovatel dat). Proto je pro správce dat pro zemědělství možné pochopit použití umístění souřadnice funkčních parametrů oddílu.

U Data Manageru apiName pro zemědělství se očekává, že rozšíření bude poskytovat name klíč používaný ke shromažďování informací o poloze následované šablonou úchytu, která naznačuje, jak je potřeba předat hodnoty zeměpisné šířky a délky.

Ukázkové funkční parametry
"apiInfos": [
    "functionalParameters": [
        {
          "name": "CentroidCalculation",
          "description": "Provide names of the parameters used to collect latitude and longitude information",
          "functionalParameterEntities": [
            {
              "name": "lat",
              "template": "{ \"lat\": \"{{latitude}}\" } "
            },
            {
              "name": "lon",
              "template": "{ \"lon\": \"{{longitude}}\" } "
            }
          ]
        }
      ],
]
Podrobnosti funkčních parametrů
Name Typ Popis
functionalParameters pole Pole funkcí JSON, kde každý objekt označuje funkce podporované Správcem dat pro zemědělství. V současné době CentroidCalculation je jednou z těchto funkcí.
name string Název funkce, aktuálně podporovaná hodnota je CentroidCalculation .
description string Popis funkcí v Data Manageru pro zemědělství
functionalParameterEntities pole Pole JSON objektů, kde je každý objekt specifický pro zeměpisnou šířku a délku.

Systém jednotek

Tato část používá Správce dat pro zemědělství k pochopení různých typů systémů jednotek podporovaných rozšířením. Proto rozšíření potřebuje zadat key název použitý pro shromažďování informací o jednotkách ve vstupech rozhraní API a za ním různé systémové názvy jednotek (např. us-std), jak je podporováno apiName.

Systém ukázkových jednotek
"unitSystems": 
    {
        "key": "unitcode",
        "values": [
            "us-std",
            "si-std",
            "us-std-precise",
            "si-std-precise"
            ]
    }
Podrobnosti o systému jednotek
Name Typ Popis
unitSystems objekt Objekt JSON ke shromažďování informací o systému jednotek
klíč string Název parametru použitého ke shromažďování informací o jednotkách ve vstupu rozhraní API.
hodnoty string Seznam systémových názvů jednotek podporovaných rozšířením

Vlastní parametry platformy a platformy

V každé odpovědi rozhraní API pro počasí se jako parametry volají míry počasí, které se odesílají jako součást výstupu (např. teplota, rosný bod atd.).

Proto, pokud jde o parametry, Data Manager pro zemědělství interně podporuje následující sadu parametrů a považuje je za Platform parameters.

  • cloudCover
  • data a času.
  • rosný bod
  • growingDegreeDay
  • Srážek
  • tlak
  • relativeHumidity
  • soilMoisture
  • soilTemperature
  • Teplota
  • viditelnost
  • wetBulbTemperature
  • windChill
  • windDirection
  • windGust
  • windSpeed

Proto všechna rozšíření odesílající parametry počasí, které nespadají pod parametry platformy, je odesílá jako součást Custom parameters. Klíčovým rozdílem mezi parametry platformy a zákazníka je, že uživatelé používající Data Manager pro rozhraní API pro počasí v zemědělství můžou dotazovat a filtrovat parametry platformy (např. teplota > 30) a ne na vlastních parametrech. Vlastní parametry se ale odesílají jako součást výstupu dotazu počasí.

V této části poskytuje rozšíření informace o jednotkách pro každý podporovaný systém jednotek. Tento správce dat pro zemědělství ví, jaká je podkladová měrná jednotka pro každý parametr počasí, na základě informací uvedených v této části rozšíření.

Poznámka:

  • Pro konkrétní parametr, pokud nejsou jednotky použitelné, pak nezmiňujte jednotky pro tyto samotné (např. weatherDescriptor).
  • Pokud jsou jednotky stejné pro všechny jednotky systému jednotek, uveďte stejný parametr ve všech jednotkách. (Příklad: cloudCover)
Ukázkové a vlastní parametry platformy
"apiInfos": [
     "platformParameters": [
        {
          "farmBeatsName": "cloudCover",
          "farmBeatsDataType": "double",
          "description": "The average percentage of sky covered by clouds.",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "%"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "%"
            },
            {
              "unitSystem": "si-std",
              "unit": "%"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "%"
            }
          ]
        },
        {
          "farmBeatsName": "dewPoint",
          "farmBeatsDataType": "double",
          "description": "The air temperature at which the air will become saturated, and dew moisture will condense into fog (or dew).",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "F"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "F"
            },
            {
              "unitSystem": "si-std",
              "unit": "C"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "C"
            }
          ]
        },
    "customParameters": [
        {
          "providerName": "weatherDescriptor",
          "providerDataType": "string",
          "description": "General weather descriptor data"
        },
        {
          "providerName": "airTempMax",
          "providerDataType": "double",
          "description": "Maximum daily air temperature at two meters above ground level.",
          "measurementUnits": [
            {
              "unitSystem": "us-std",
              "unit": "F"
            },
            {
              "unitSystem": "us-std-precise",
              "unit": "F"
            },
            {
              "unitSystem": "si-std",
              "unit": "C"
            },
            {
              "unitSystem": "si-std-precise",
              "unit": "C"
            }
          ]
        },
]
Podrobnosti parametrů platformy
Name Typ Popis
platformParameters pole Pole JSON parametrů platformy, kde je každý objekt jedním parametrem platformy.
farmBeatsName string Název parametru, který poskytuje Správce dat pro zemědělství.
farmBeatsDataType string Datový typ parametru, který poskytuje Správce dat pro zemědělství.
description string Popis parametru, který poskytuje Správce dat pro zemědělství.
měrné jednotky string Pole jednotek JSON pro každý systém values jednotek podporovaný rozšířením
unitSystem string Systém value jednotek podporovaný rozšířením.
unit string Měrná jednotka pro konkrétní parametr počasí Ex: F pro dewPoint.
Podrobnosti vlastních parametrů
Name Typ Popis
customParameters objekt Pole JSON vlastních parametrů, kde je každý objekt jedním vlastním parametrem.
Providername string Název parametru, který poskytuje rozšíření.
providerDataType string Datový typ parametru, který poskytuje rozšíření.
description string Popis parametru, který poskytuje rozšíření.
měrné jednotky string Pole jednotek JSON pro každý systém values jednotek podporovaný rozšířením
unitSystem string Systém value jednotek podporovaný rozšířením.
unit string Měrná jednotka pro konkrétní parametr počasí Ex: F pro airTempMax.

Šablona platformy a vlastní šablony

Šablona je informace o mapování poskytované rozšířením pro převod výstupu rozhraní API rozšíření (odpověď JSON) do formátu, který očekává Správce dat pro zemědělství. Pomocí těchto různých formátů výstupu rozhraní API je teď možné rovnoměrně mapovat nebo převést na jeden formát.

Řešení šablony je jedním z nejúčinnějších způsobů, jak analyzovat výstup JSON poskytovaný rozšířením. V případě rozšíření počasí očekává Správce dat pro zemědělství, že rozšíření bude zapsáno pomocí šablony HandleBars. HandleBars je opensourcový jazyk šablon s jednoduchým použitím výrazů.

Poznámka:

Důrazně doporučujeme vyzkoušet šablonu HandleBars s příklady, které jsou k dispozici, a zjistit, jak pomocí pomocných funkcí vytvořit vlastní logiku analýzy, pokud ji správce dat pro zemědělství ještě neposkytuje.

Na vysoké úrovni to je způsob, jakým šablony fungují, tím, že vezme odpověď rozhraní API jako vstup a vygeneruje výstup ve formátu očekávaném Správcem dat pro zemědělství.

Snímek obrazovky toku šablony

Jak je znázorněno na obrázku výše, ověřte svou šablonu proti příslušné odpovědi rozhraní API a použijte ověřenou šablonu v rozšíření. Níže je příklad odpovědi rozhraní API a příslušné platformy a vlastní šablony.

Ukázková odpověď rozhraní API
{
    "47,-97": {
        "2016-12-15": {
            "overall": {
                "air_temp_avg": {
                    "unit": "F",
                    "value": -3.0
                },
                "air_temp_max": {
                    "unit": "F",
                    "value": 5.0
                },
                "air_temp_min": {
                    "unit": "F",
                    "value": -11.0
                },
                "cloud_cover_avg": {
                    "unit": "%",
                    "value": 26.4
                },
                "descriptors": {
                    "cloud_cover_descriptor": {
                        "code": 21107,
                        "icon": "https://.../cover_partlycloudyday.png",
                        "text": "Increasing Clouds"
                    },
                    "precipitation_descriptor": {
                        "code": 61113,
                        "icon": "https://.../precip_flurries.png",
                        "text": "Slight Chance of Flurries"
                    },
                    "weather_descriptor": {
                        "code": 61113,
                        "icon": "https://.../precip_flurries.png",
                        "text": "Slight Chance of Flurries"
                    },
                    "wind_direction_descriptor": {
                        "code": 51600,
                        "icon": "https://.../direction_sw.png",
                        "text": "Southwest"
                    },
                    "wind_trend_descriptor": {
                        "code": 10500,
                        "icon": "https://.../error_none.png",
                        "text": "None"
                    }
                },
                "dew_point_avg": {
                    "unit": "F",
                    "value": -11.0
                },
                "dew_point_max": {
                    "unit": "F",
                    "value": -4.0
                },
                "dew_point_min": {
                    "unit": "F",
                    "value": -19.0
                },
                "ice_acc_period": {
                    "unit": "in",
                    "value": 0.0
                },
                "liquid_acc_period": {
                    "unit": "in",
                    "value": 0.0
                },
                "long_wave_radiation_avg": {
                    "unit": "W/m^2",
                    "value": 170.0
                },
                "pet_period": {
                    "unit": "in",
                    "value": 0.009
                },
                "precip_acc_period": {
                    "unit": "in",
                    "value": 0.001
                },
                "precip_prob": {
                    "unit": "%",
                    "value": 10.0
                },
                "relative_humidity_avg": {
                    "unit": "%",
                    "value": 68.0
                },
                "relative_humidity_max": {
                    "unit": "%",
                    "value": 77.0
                },
                "relative_humidity_min": {
                    "unit": "%",
                    "value": 61.0
                },
                "short_wave_radiation_avg": {
                    "unit": "W/m^2",
                    "value": 70.0
                },
                "snow_acc_period": {
                    "unit": "in",
                    "value": 0.02
                },
                "sunshine_duration": {
                    "unit": "hours",
                    "value": 6
                },
                "wind_gust_max": {
                    "unit": "n/a",
                    "value": "n/a"
                },
                "wind_speed_2m_avg": {
                    "unit": "mph",
                    "value": 6.0
                },
                "wind_speed_2m_max": {
                    "unit": "mph",
                    "value": 8.0
                },
                "wind_speed_2m_min": {
                    "unit": "mph",
                    "value": 2.0
                },
                "wind_speed_avg": {
                    "unit": "mph",
                    "value": 8.0
                },
                "wind_speed_max": {
                    "unit": "mph",
                    "value": 11.0
                },
                "wind_speed_min": {
                    "unit": "mph",
                    "value": 3.0
                }
            }
        }
    }
}
Ukázková šablona platformy a vlastní šablony pro výše uvedenou odpověď rozhraní API
{
"apiInfos": {
    "platformTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"cloudCover\": \"{{overall.cloud_cover_avg.value}}\" ,\"dewPoint\": \"{{overall.dew_point_avg.value}}\" ,\"precipitation\": \"{{overall.precip_acc_period.value}}\" ,\"relativeHumidity\": \"{{overall.relative_humidity_avg.value}}\" ,\"dateTime\": \"{{convertDateInYYYYMMDDToDateTime @key}}\",      \"temperature\": \"{{overall.air_temp_avg.value}}\" ,\"windSpeed\": \"{{overall.wind_speed_avg.value}}\" ,   },{{/each}}]{{/each}} }",
    "customTemplate": "{ {{#each .}}\"value\": [{{#each .}} {\"air_temp_max\": \"{{overall.air_temp_max.value}}\",\"air_temp_min\": \"{{overall.air_temp_min.value}}\",\"cloudCoverDescriptor\": \"{{overall.descriptors.cloud_cover_descriptor.text}}\",\"precipitationDescriptor\": \"{{overall.descriptors.precipitation_descriptor.text}}\",\"weatherDescriptor\": \"{{overall.descriptors.weather_descriptor.text}}\",\"windDirectionDescriptor\": \"{{overall.descriptors.wind_direction_descriptor.text}}\",\"windTrendDescriptor\": \"{{overall.descriptors.wind_trend_descriptor.text}}\",\"dewPointMax\": \"{{overall.dew_point_max.value}}\",\"dewPointMin\": \"{{overall.dew_point_min.value}}\",\"iceAccPeriod\": \"{{overall.ice_acc_period.value}}\",\"liquidAccPeriod\": \"{{overall.liquid_acc_period.value}}\",\"longWaveRadiationAvg\": \"{{overall.long_wave_radiation_avg.value}}\",\"petPeriod\": \"{{overall.pet_period.value}}\",\"precipProb\": \"{{overall.precip_prob.value}}\",\"relativeHumidityMax\": \"{{overall.relative_humidity_max.value}}\",\"relativeHumidityMin\": \"{{overall.relative_humidity_min.value}}\",\"shortWaveRadiationAvg\": \"{{overall.short_wave_radiation_avg.value}}\",\"snowAccPeriod\": \"{{overall.snow_acc_period.value}}\",\"sunshineDuration\": \"{{overall.sunshine_duration.value}}\",\"windSpeed2mAvg\": \"{{overall.wind_speed_2m_avg.value}}\",\"windSpeed2mMax\": \"{{overall.wind_speed_2m_max.value}}\",\"windSpeed2mMin\": \"{{overall.wind_speed_2m_min.value}}\",\"windSpeedMax\": \"{{overall.wind_speed_max.value}}\",\"windSpeedMin\": \"{{overall.wind_speed_min.value}}\",},{{/each}}]{{/each}} }"
}
}

Poznámka:

Šablona vygenerovaná z úchytů je řetězecifikovaná přidáním \"<text>\" , aby byla kompatibilní s formátem JSON.

Pomocné funkce

Pomocné funkce používají šablony k provedení konkrétní transformace dat, která nejsou nativně podporována. Tady jsou pomocné funkce podporované Správcem dat pro zemědělství.

Ukázkové pomocné funkce
Handlebars.registerHelper('splitAndTake', function(title, char, index) {
  var t = title.split(char);
  return t[index];
});
Handlebars.registerHelper('converttime', function(timestamp) {
    return new Date(timestamp);
});
Handlebars.registerHelper('convertunixtime', function(unix_timestamp) {
    return new Date(unix_timestamp * 1000);
});

Jakou akci tyto pomocné funkce dělají?

  • SplitAndTake(object valueObject, oddělovač řetězců, int index) – tato funkce se používá k rozdělení řetězce (např. 47;-97) na základě oddělovače (Např: ",") a přebírá prvek v daném indexu (např. index=0 dává "47")
  • ConvertDateInFormatToDateTime(object dateObject, string format) – tato funkce slouží k analýze data v daném formátu (např. 2016-12-15) na řetězec DateTime.
  • ConvertUnixTimeToDateTime(object unixTimeStamp) – tato funkce slouží k převodu časového razítka unixu (např. 1392267600) na řetězec datetime.
  • GetObjectFromListWithKeyValuePair(Array listOfObjects, klíč řetězce, hodnota řetězce) – Je-li uveden seznam objektů, které načte objekt na základě páru klíč (type) hodnota (RAIN). V následujícím příkladu se použijí srážky "type": "RAIN" této funkce.
{
"precipitation": [
      {
        "type": "SNOW",
        "amount": 0
      },
      {
        "type": "RAIN",
        "amount": 0.01
      }
    ]
}
  • GetValueFromObject(string jsonString, klíč řetězce) – Objekt JSON jako řetězec získá hodnotu založenou na klíči.

Poznámka:

Pokud rozšíření, které píšete, vyžaduje další pomocné funkce k analýze odpovědi rozhraní API, pak nás spojte vytvořením lístku podpory.