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 requestType
pož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 apiName rozhraní . |
Requesttype | string | GET nebo POST PUT typ požadavku, který apiName podporuje . |
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 false klíč, 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ý apiName podporuje . |
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í.
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.