Condividi tramite


Come scrivere un'estensione meteo

In questa sezione viene visualizzata una guida dettagliata per scrivere un'estensione meteo personalizzata.

Che cos'è un'estensione meteo

L'estensione meteo in Data Manager per l'agricoltura è un file manifesto (JSON) che fornisce i dettagli completi sulle API e un modello per ogni risposta API (output). Pertanto, il file di estensione è essenzialmente una struttura di modelli API come definito da Data Manager per l'agricoltura, per comprendere le caratteristiche di input (richiesta) e output (risposta).

Struttura dell'estensione meteo

A livello generale, il file di estensione è un file JSON costituito da due elementi:

  • Metadati del provider (oggetto JSON)
  • Informazioni sull'API (matrice JSON)

Metadati del provider

Si tratta di un oggetto JSON che fornisce i dettagli sui campi seguenti necessari per identificare in modo univoco un'estensione e le relative informazioni sul controllo delle versioni. I dettagli forniti in questa sezione dell'estensione vengono visualizzati ai clienti esterni nel marketplace data manager per l'agricoltura. Pertanto extensionId , & extensionName (per facilitare l'identificazione) e description (per la proposta di valore) deve essere incentrato sul cliente.

Metadati del provider di esempio

"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"
  }
Dettagli dei metadati del provider
Nome Tipo Descrizione
extensionId string ID fornito nel modo di nome dell'organizzazione (Contoso) e servizio (meteo) Ex: org.service. extensionId è l'identificatore univoco dell'estensione e quello usato dagli utenti nella piattaforma Data Manager for Agriculture per interagire con le API di estensione
extensionName string Nome dell'estensione da usare nel marketplace dell'estensione Data Manager for Agriculture.
description stringa Descrizione che indica le funzionalità e i servizi offerti dall'estensione.
dataCategory string Per le estensioni meteo, usare weather.
farmBeatsSchemaVersion string Versione del file manifesto sul lato Data Manager for Agriculture. Eventuali aggiornamenti al file manifesto esistente comportano un nuovo aggiornamento della versione a questo campo.
extensionVersion string Versione del file di estensione. 1.0A partire da . Aggiornamenti al file di estensione incrementare questo numero di versione in base alla convenzione degli aggiornamenti principali e secondari.
Supporturl string Collegamento al sito Web per generare query di supporto e domande frequenti
supportEmail string Inviare un messaggio di posta elettronica nelle query di supporto.

Informazioni sull'API

La matrice JSON di informazioni API (apiInfos) può essere ulteriormente suddivisa negli elementi strutturali seguenti.

  • Metadati dell'API
  • Parametri di autenticazione
  • Parametri di input dell'API
  • Parametri di input dell'API estratti
  • Parametri funzionali
  • Sistema di unità
  • Parametri della piattaforma e personalizzati
  • Modello di piattaforma e personalizzato

Metadati dell'API

Questa sezione è costituita da informazioni di base relative all'API usata da Data Manager per l'agricoltura per identificare apiName (chiamate in modo esplicito dagli utenti) e reindirizzare la richiesta API al diritto endpoint in base all'oggetto appropriato requestType.

Metadati dell'API di esempio
"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"
    }
]
Dettagli dei metadati dell'API
Nome Tipo Descrizione
apiInfos array Matrice JSON di oggetti, in cui ogni API è un oggetto all'interno apiInfos della matrice.
apiName string Il nome DELL'API supportato dall'estensione è il nome esatto che gli utenti chiamerebbero nelle API di estensione. Seguire la stessa convenzione di denominazione descritta nella documentazione dell'API.
description stringa Descrizione API
endpoint string Endpoint API per Data Manager per l'agricoltura apiNameda chiamare in .
Requesttype string GET o POST o PUT tipo di richiesta come supportato da apiName.
isLoadAPI boolean Se è un'API apiName pass-through come i dati meteo correnti, impostare questa chiave come false. Per tutte le API di caricamento (cronologia e previsione), mantenere questo campo come true. Quando la isLoadAPI chiave è false, la risposta API viene inviata direttamente all'utente e non viene archiviata nel servizio di archiviazione Data Manager for Agriculture.
typeOfData string I valori attualmente supportati sono Historical e Forecast.
granularity string I valori attualmente supportati sono Daily e Hourly.
defaultUnitSystem string Specificare il nome del sistema di unità predefinite supportato da apiName.

Parametri di autenticazione

Questa sezione accetta i parametri correlati all'autenticazione supportati da apiName. Poiché Data Manager per l'agricoltura supporta due tipi di chiavi correlate all'autenticazione (x-ms-farmBeats-data-provider-id & x-ms-farmBeats-data-provider-key) nella sezione intestazione API, il file di estensione deve specificare in modo esplicito il nome della chiave delle rispettive chiavi di autenticazione come richiesto da apiName.

Poiché Data Manager per l'agricoltura raccoglie le informazioni di autenticazione tramite l'intestazione API (nell'API Crea processo meteo). Il mapping dei parametri di autenticazione viene eseguito per garantire che Data Manager per l'agricoltura possa passare la chiave di conseguenza all'estensione in base alle esigenze.

Parametri di autenticazione di esempio
"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"
        }
      ]
]
Dettagli dei parametri di autenticazione
Nome Tipo Descrizione
authInputParameters array Matrice JSON di parametri di autenticazione, in cui ogni oggetto indica un tipo di autenticazione supportato. Usare la chiave in base al tipo di autenticazione supportato dall'estensione.
farmBeatsAuthMapping string Attualmente sono supportati due tipi di chiavi correlate all'autenticazione. Per l'autenticazione basata su chiave API, usare solo x-ms-farmBeats-data-provider-key l'oggetto , mentre per l'ID APP e l'autenticazione basata su chiave APP usano entrambi x-ms-farmBeats-data-provider-id gli oggetti ex-ms-farmBeats-data-provider-key .
name string Nome della chiave di autenticazione supportata da apiName.
isRequired boolean Questo nome è un parametro obbligatorio per apiName? Specificare valori true o false.
providerDataType string Specificare il tipo di dati del name parametro.
description stringa Data Manager per l'agricoltura descrizione di ogni mezzo all'interno di farmBeatsAuthMapping ogni oggetto.
location string Dove deve essere inviato il name parametro nell'API. I valori attualmente supportati sono apiQuery & apiHeader.

Parametri di input dell'API

Questa sezione fornisce i dettagli sulla firma dell'API (parametri di input) per chiamare correttamente in apiName.

Parametri di input dell'API di esempio
"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"
        },
      ]
]
Dettagli dei parametri di input dell'API
Nome Tipo Descrizione
apiInputParameters array Matrice JSON dei parametri di input dell'API, in cui ogni oggetto indica un parametro di input supportato da apiName.
name string Nome del parametro di input supportato da apiName.
isRequired boolean Questo nome è un parametro obbligatorio per apiName? Specificare valori true o false.
providerDataType string Specificare il tipo di dati del name parametro.
description stringa Specificare una descrizione del parametro che name significa .
location string Dove deve essere inviato il name parametro nell'API. I valori attualmente supportati sono apiQuery & apiHeader.

Parametri di input dell'API estratti

Questa sezione consente a Data Manager di estrarre i parametri di input passati nella richiesta API per il calcolo e l'archiviazione. In questo esempio Data Manager for Agriculture estrae le informazioni sulla posizione (latitudine e longitudine) dalla richiesta di input DELL'API e le archivia come parte di ogni output meteo in Data Manager for Agriculture.

Di conseguenza, l'estensione deve fornire un modello HandleBars per estrarre le informazioni sulla posizione. L'esempio seguente suggerisce che l'API di estensione raccoglie le informazioni sulla posizione come "lat" per "latitude" e "lon" per "longitude".

Parametri di input dell'API estratti di esempio
"extractedApiInputParameters": [
        {
          "name": "location",
          "template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\"  } "
        }
      ]
Dettagli dei parametri di input dell'API estratti
Nome Tipo Descrizione
extractedApiInputParameters array Matrice JSON delle funzionalità di estrazione, in cui ogni oggetto indica quali informazioni devono essere estratte. Attualmente location è un'estrazione di questo tipo.
name string Nome dell'estrazione, attualmente il valore supportato è location .
annidato string Modello HandleBars che illustra come vengono raccolte informazioni sulla latitudine e la longitudine nei parametri di input dell'API.

Parametri funzionali

Questa sezione è dedicata alle funzionalità e alle funzionalità create da Data Manager per l'agricoltura. Per l'estensione meteo, il calcolo centroide è una di queste funzionalità.

Quando gli utenti non forniscono le coordinate di latitudine/longitudine, Data Manager per l'agricoltura usa la geometria primaria del campo (ID passato dall'utente) per calcolare il centroide. Le coordinate centroidi calcolate vengono passate come latitudine e longitudine all'estensione (provider di dati). Di conseguenza, per consentire a Data Manager per l'agricoltura di comprendere l'utilizzo delle coordinate di posizione, viene usata la sezione relativa ai parametri funzionali.

Per consentire a Data Manager per l'agricoltura di comprendere l'utilizzo della latitudine e della longitudine nei apiName parametri di input, è previsto che l'estensione fornisca la name chiave usata per raccogliere le informazioni sulla posizione seguita da un modello di handlebar per indicare come devono essere passati i valori di latitudine e longitudine.

Parametri funzionali di esempio
"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}}\" } "
            }
          ]
        }
      ],
]
Dettagli dei parametri funzionali
Nome Tipo Descrizione
functionalParameters array Matrice JSON di funzionalità, in cui ogni oggetto indica una funzionalità supportata da Data Manager for Agriculture. Attualmente CentroidCalculation è una di queste funzionalità.
name string Nome della funzionalità, attualmente il valore supportato è CentroidCalculation .
description stringa Data Manager per l'agricoltura descrizione delle funzionalità.
functionalParameterEntities array Matrice JSON di oggetti, in cui ogni oggetto è specifico per la latitudine e longitudine.

Sistema di unità

Questa sezione viene usata da Data Manager per l'agricoltura per comprendere i vari tipi di sistemi di unità supportati dall'estensione. Di conseguenza, l'estensione deve fornire il key nome usato per raccogliere informazioni sulle unità negli input dell'API e seguito dai vari nomi di sistema delle unità (ad esempio us-std) supportati da apiName.

Sistema di unità di esempio
"unitSystems": 
    {
        "key": "unitcode",
        "values": [
            "us-std",
            "si-std",
            "us-std-precise",
            "si-std-precise"
            ]
    }
Dettagli di sistema unità
Nome Tipo Descrizione
unitSystems oggetto Oggetto JSON per raccogliere le informazioni di sistema dell'unità.
chiave string Nome del parametro usato per raccogliere le informazioni sulle unità nell'input dell'API.
valori string Elenco dei nomi di sistema delle unità supportate dall'estensione.

Parametri della piattaforma e personalizzati

In ogni risposta api meteo, le misure meteo, che vengono inviate come parte dell'output (ad esempio temperatura, punto di dewpoint e così via) vengono chiamate come parametri.

Di conseguenza, quando si tratta di parametri, Data Manager per l'agricoltura supporta internamente il set di parametri seguente e li considera come Platform parameters.

  • cloudCover
  • dateTime
  • Rugiada
  • growingDegreeDay
  • Precipitazioni
  • pressione
  • relative Bindingdity
  • soilMoisture
  • soilTemperature
  • temperatura
  • visibility
  • wetBulbTemperature
  • Windchill
  • windDirection
  • windGust
  • windSpeed

Pertanto, qualsiasi estensione che invia parametri meteo, che non rientrano nei parametri della piattaforma, li invia come parte di Custom parameters. La differenza principale tra i parametri della piattaforma e dei clienti è che gli utenti che usano le API meteo di Data Manager per l'agricoltura sono in grado di eseguire query e filtrare i parametri della piattaforma (ad esempio: temperatura > 30) e non sui parametri personalizzati. Tuttavia, i parametri personalizzati vengono inviati come parte dell'output della query meteo.

In questa sezione l'estensione fornisce le informazioni sulle unità per ogni parametro per ogni sistema di unità supportato. L'uso di questo data manager per l'agricoltura sa qual è l'unità di misura sottostante per ogni parametro meteo in base alle informazioni fornite in questa sezione dell'estensione.

Nota

  • Per un particolare parametro se le unità non sono applicabili, non menzionare le unità per quelle da sole (ad esempio weatherDescriptor)
  • Per un particolare parametro se le unità sono uguali per tutte le unità di sistema, quindi menzionare lo stesso in tutte le unità di sistema. (Ad esempio: cloudCover)
Parametri personalizzati e piattaforma di esempio
"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"
            }
          ]
        },
]
Dettagli dei parametri della piattaforma
Nome Tipo Descrizione
platformParameters array Matrice JSON di parametri della piattaforma in cui ogni oggetto è un parametro della piattaforma.
farmBeatsName string Nome del parametro fornito da Data Manager per l'agricoltura.
farmBeatsDataType string Tipo di dati del parametro fornito da Data Manager per l'agricoltura.
description stringa Descrizione del parametro fornito da Data Manager per l'agricoltura.
measurementUnits string Matrice JSON di unità per ogni sistema values di unità supportato dall'estensione.
unitSystem string value Sistema di unità supportato dall'estensione.
unitàà string Unità di misura per il parametro meteo specifico, ad esempio per F dewPoint.
Dettagli dei parametri personalizzati
Nome Tipo Descrizione
customParameters oggetto Matrice JSON di parametri personalizzati in cui ogni oggetto è un parametro personalizzato.
Providername string Nome del parametro fornito dall'estensione.
providerDataType string Tipo di dati del parametro fornito dall'estensione.
description stringa Descrizione del parametro fornito dall'estensione.
measurementUnits string Matrice JSON di unità per ogni sistema values di unità supportato dall'estensione.
unitSystem string value Sistema di unità supportato dall'estensione.
unitàà string Unità di misura per il parametro meteo specifico Ex: F per airTempMax.

Piattaforma e modello personalizzato

Il modello è le informazioni di mapping fornite dall'estensione per convertire l'output dell'API di estensione (risposta JSON) nel formato previsto da Data Manager for Agriculture. L'uso di questi diversi formati di output API può ora essere mappato/convertito in modo uniforme in un unico formato.

La soluzione modello è stata trovata come uno dei modi più efficaci per analizzare l'output JSON fornito dall'estensione. Nel caso dell'estensione meteo, Data Manager for Agriculture prevede che l'estensione venga scritta usando il modello HandleBars. HandleBars è un linguaggio di creazione modelli open source con espressioni semplici da usare.

Nota

È consigliabile provare il modello HandleBars con gli esempi forniti e imparare a usare le funzioni helper per creare una logica di analisi personalizzata se non è già fornita da Data Manager per l'agricoltura.

In generale, questo è il funzionamento dei modelli, prendendo la risposta API come input e generando l'output nel formato previsto da Data Manager per l'agricoltura.

Screenshot del flusso del modello.

Come illustrato nella figura precedente, convalidare il modello rispetto alla risposta API corrispondente e usare il modello convalidato nell'estensione. Di seguito è riportato un esempio di risposta API e della rispettiva piattaforma e modello personalizzato.

Risposta dell'API di esempio
{
    "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
                }
            }
        }
    }
}
Modello di piattaforma e personalizzato di esempio per la risposta API precedente
{
"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}} }"
}
}

Nota

Il modello generato da HandleBars viene stringato aggiungendo \"<text>\" per renderlo compatibile con il formato JSON.

Funzioni di supporto

Le funzioni helper vengono usate dai modelli per eseguire trasformazioni specifiche sui dati, che non sono supportate in modo nativo. Ecco le funzioni helper supportate da Data Manager per l'agricoltura.

Funzioni helper di esempio
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);
});

Che azione vengono eseguite da queste funzioni helper?

  • SplitAndTake(object valueObject, separatore di stringa, indice int): questa funzione viene usata per suddividere una stringa (ad esempio"47,-97") in base a un separatore (ad esempio: ",") e accetta l'elemento in corrispondenza dell'indice specificato (ad esempio, index=0 restituisce "47")
  • ConvertDateInFormatToDateTime(object dateObject, formato stringa): questa funzione viene usata per analizzare una data in un determinato formato (ad esempio: 2016-12-15) in una stringa DateTime.
  • ConvertUnixTimeToDateTime(object unixTimeStamp): questa funzione viene usata per convertire il timestamp unix (ad esempio, 1392267600) in una stringa datetime.
  • GetObjectFromListWithKeyValuePair(Array listOfObjects, stringa chiave, valore stringa): dato un elenco di oggetti recupera l'oggetto in base alla coppia chiave () valore (typeRAIN). Nell'esempio seguente viene usata la precipitazione di "type": "RAIN" questa funzione.
{
"precipitation": [
      {
        "type": "SNOW",
        "amount": 0
      },
      {
        "type": "RAIN",
        "amount": 0.01
      }
    ]
}
  • GetValueFromObject(string jsonString, stringa key): dato un oggetto json come stringa, ottiene il valore in base alla chiave.

Nota

Se l'estensione scritta richiede funzioni helper aggiuntive per analizzare la risposta dell'API, contattare Microsoft creando un ticket di supporto.