날씨 확장을 작성하는 방법
이 섹션에서는 고유한 날씨 확장을 작성하는 단계별 가이드를 볼 수 있습니다.
날씨 확장이란?
Data Manager for Agriculture의 날씨 확장은 API에 대한 전체 세부 정보와 각 API 응답(출력)에 대한 템플릿을 제공하는 매니페스트(JSON) 파일입니다. 따라서 확장 파일은 기본적으로 API 입력(요청) 및 출력(응답) 특성을 이해하기 위해 Data Manager for Agriculture에서 정의한 API 템플릿 구조입니다.
날씨 확장 구조
개략적으로 확장 파일은 다음 두 가지로 구성된 JSON입니다.
- 공급자 메타데이터(JSON 개체)
- API 정보(JSON 배열)
공급자 메타데이터
확장 및 해당 버전 관리 정보를 고유하게 식별하는 데 필요한 아래 필드에 대한 세부 정보를 제공하는 json 개체입니다. 확장의 이 섹션에 제공된 세부 정보는 Data Manager for Agriculture Marketplace의 외부 고객에게 표시됩니다. 따라서 extensionId
및 extensionName
(쉬운 식별을 위한) 및 description
(가치 제안을 위한)은 고객 중심적이어야 합니다.
샘플 공급자 메타데이터
"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"
}
공급자 메타데이터 세부 정보
이름 | 형식 | 설명 |
---|---|---|
extensionId | string | 조직 이름(Contoso) 및 서비스(날씨) 형식으로 제공된 ID 예: org.service . extensionId는 확장의 고유 식별자이며 사용자가 Data Manager for Agriculture 플랫폼에서 확장 API와 상호 작용하는 데 사용할 식별자입니다. |
extensionName | string | Data Manager for Agriculture 확장 마켓플레이스에서 사용할 확장의 이름입니다. |
description | string | 확장에서 제공하는 기능 및 서비스를 나타내는 설명입니다. |
dataCategory | string | 날씨 확장의 경우 weather 를 사용합니다. |
farmBeatsSchemaVersion | string | Data Manager for Agriculture 쪽의 매니페스트 파일 버전입니다. 기존 매니페스트 파일을 업데이트하면 이 필드에 대한 새 버전 업데이트가 발생합니다. |
extensionVersion | string | 확장 파일의 버전입니다. 1.0 부터 시작합니다. 확장 파일을 업데이트하면 주요 업데이트 및 사소한 업데이트 규칙에 따라 이 버전 번호가 증가합니다. |
supportUrl | string | 지원 쿼리 및 FAQ를 높이기 위한 웹 사이트 링크 |
supportEmail | string | 지원 쿼리에서 보낼 이메일입니다. |
API 정보
API 정보 JSON 배열(apiInfos
)은 다음 구조 요소로 더 자세히 나눌 수 있습니다.
- API 메타데이터
- 인증 매개 변수
- API 입력 매개 변수
- 추출된 API 입력 매개 변수
- 기능 매개 변수
- 단위 시스템
- 플랫폼 및 사용자 지정 매개 변수
- 플랫폼 및 사용자 지정 템플릿
API 메타데이터
이 섹션은 Data Manager for Agriculture에서 apiName
(사용자가 명시적으로 호출함)을 식별하고 적절한 requestType
을 기반으로 API 요청을 올바른 endpoint
로 리디렉션하는 데 사용하는 API에 대한 기본 정보로 구성됩니다.
샘플 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"
}
]
API 메타데이터 세부 정보
이름 | 형식 | 설명 |
---|---|---|
apiInfos | array | 각 API가 apiInfos 배열 내의 개체인 개체의 JSON 배열입니다. |
apiName | string | 확장에서 지원하는 API 이름으로, 사용자가 확장 API로 호출하는 데 사용하는 정확한 이름입니다. API 설명서에 설명된 것과 동일한 명명 규칙을 따르세요. |
description | string | API 설명 |
endpoint | string | apiName 에 호출할 Data Manager for Agriculture의 API 엔드포인트입니다. |
requestType | string | apiName 에서 지원되는 GET 또는 POST 또는 PUT 요청 형식입니다. |
isLoadAPI | 부울 값 | apiName 이 현재 날씨 데이터와 같은 통과 API인 경우 이 키를 false 로 만듭니다. 모든 로드 API(기록 및 예측)에 대해 이 필드를 true 로 유지합니다. isLoadAPI 키가 false 이면 API 응답이 사용자에게 직접 전송되고 Data Manager for Agriculture 스토리지 서비스에 저장되지 않습니다. |
typeOfData | string | 현재 지원되는 값은 Historical 및 Forecast 입니다. |
세분성 | string | 현재 지원되는 값은 Daily 및 Hourly 입니다. |
defaultUnitSystem | string | apiName 에서 지원하는 기본 단위 시스템의 이름을 제공합니다. |
인증 매개 변수
이 섹션에서는 apiName
에서 지원하는 인증 관련 매개 변수를 사용합니다. Data Manager for Agriculture는 API 헤더 섹션에서 두 가지 유형의 인증 관련 키(x-ms-farmBeats-data-provider-id
및 x-ms-farmBeats-data-provider-key
)를 지원하므로 확장 파일은 apiName
에서 요구하는 대로 해당 인증 키의 키 이름을 명시적으로 제공해야 합니다.
Data Manager for Agriculture는 API 헤더(날씨 작업 만들기 API에서)를 통해 인증 정보를 수집합니다. 필요에 따라 Data Manager for Agriculture가 확장에 따라 키를 전달할 수 있도록 인증 매개변수 맵핑이 수행됩니다.
샘플 인증 매개 변수
"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"
}
]
]
인증 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
authInputParameters | array | 각 개체가 지원되는 인증 유형을 나타내는 인증 매개 변수의 JSON 배열입니다. 확장에서 지원하는 인증 유형에 따라 키를 사용합니다. |
farmBeatsAuthMapping | string | 현재 두 가지 유형의 인증 관련 키가 지원됩니다. API 키 기반 인증의 경우 x-ms-farmBeats-data-provider-key 개체만 사용하는 반면, APP ID 및 APP Key 기반 인증의 경우 x-ms-farmBeats-data-provider-id 및 x-ms-farmBeats-data-provider-key 개체를 모두 사용합니다. |
name | string | apiName 에서 지원하는 인증 키의 이름입니다. |
isRequired | 부울 값 | 이 이름은 apiName에 대한 필수 매개 변수인가요? true 또는 false 값을 제공합니다. |
providerDataType | string | name 매개 변수의 데이터 형식을 제공합니다. |
description | string | Data Manager for Agriculture는 각 개체 내에서 각 farmBeatsAuthMapping 이 의미하는 바를 설명합니다. |
location | string | API에서 name 매개 변수를 보내야 하는 위치입니다. 현재 지원되는 값은 apiQuery 및 apiHeader 입니다. |
API 입력 매개 변수
이 섹션에서는 apiName
을 성공적으로 호출하기 위한 API 서명(입력 매개 변수)에 대한 세부 정보를 제공합니다.
샘플 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"
},
]
]
API 입력 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
apiInputParameters | array | 각 개체가 apiName 에서 지원하는 입력 매개 변수를 나타내는 API 입력 매개 변수의 JSON 배열입니다. |
name | string | apiName 에서 지원하는 입력 매개 변수의 이름입니다. |
isRequired | 부울 값 | 이 이름은 apiName에 대한 필수 매개 변수인가요? true 또는 false 값을 제공합니다. |
providerDataType | string | name 매개 변수의 데이터 형식을 제공합니다. |
description | string | name 매개 변수의 의미에 대한 설명을 제공합니다. |
location | string | API에서 name 매개 변수를 보내야 하는 위치입니다. 현재 지원되는 값은 apiQuery 및 apiHeader 입니다. |
추출된 API 입력 매개 변수
이 섹션은 Data Manager가 계산 및 저장을 위해 API 요청에 전달된 입력 매개 변수를 추출하는 데 사용됩니다. 이 예제에서 Data Manager for Agriculture는 API 입력 요청에서 위치 정보(위도 및 경도)를 추출하여 Data Manager for Agriculture의 각 날씨 출력의 일부로 저장합니다.
따라서 확장은 위치 정보를 추출하는 방법에 대한 HandleBars 템플릿을 제공해야 합니다. 아래 예제에서는 확장 API가 위치 정보를 "latitude"
의 경우 "lat"
로, "longitude"
의 경우 "lon"
으로 수집하는 것을 제안합니다.
추출된 샘플 API 입력 매개 변수
"extractedApiInputParameters": [
{
"name": "location",
"template": "{ \"latitude\": \"{{lat}}\", \"longitude\": \"{{lon}}\" } "
}
]
추출된 API 입력 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
extractedApiInputParameters | array | 추출 기능의 JSON 배열. 여기서 각 개체는 추출해야 하는 정보를 나타냅니다. 현재 location 은 이러한 추출 중 하나입니다. |
name | string | 추출 이름. 현재 지원되는 값은 location 입니다. |
템플릿 | string | API 입력 매개 변수에서 위도 및 경도 정보가 수집되는 방법을 설명하는 HandleBars 템플릿입니다. |
기능 매개 변수
이 섹션은 Data Manager for Agriculture에서 빌드한 기능 전용입니다. 날씨 확장의 경우 중심 계산이 그러한 기능 중 하나입니다.
사용자가 위도/경도 좌표를 제공하지 않으면 Data Manager for Agriculture는 필드의 기본 기하 도형(사용자가 전달한 ID)을 사용하여 중심을 계산합니다. 계산된 중심 좌표는 확장(데이터 공급자)에 위도 및 경도로 전달됩니다. 따라서 Data Manager for Agriculture가 위치 좌표의 사용을 이해할 수 있도록 기능 매개 변수 섹션이 사용됩니다.
Data Manager for Agriculture가 apiName
입력 매개 변수에서 위도 및 경도의 사용을 이해하려면 확장은 위치 정보를 수집하는 데 사용되는 name
키와 위도 및 경도 값을 전달해야 하는 방법을 암시하는 핸들바 템플릿을 제공해야 합니다.
샘플 기능 매개 변수
"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}}\" } "
}
]
}
],
]
기능 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
functionalParameters | array | 각 개체가 Data Manager for Agriculture에서 지원하는 기능을 나타내는 기능의 JSON 배열입니다. 현재 CentroidCalculation 은 이러한 기능 중 하나입니다. |
name | string | 기능 이름, 현재 지원되는 값은 CentroidCalculation 입니다. |
description | string | Data Manager for Agriculture 기능 설명. |
functionalParameterEntities | array | 각 개체가 위도 및 경도와 관련된 개체의 JSON 배열입니다. |
단위 시스템
이 섹션은 Data Manager for Agriculture에서 확장이 지원하는 다양한 유형의 단위 시스템을 이해하는 데 사용됩니다. 따라서 확장은 API 입력에서 단위 정보를 수집하는 데 사용되는 key
이름과 apiName
에서 지원하는 다양한 단위 시스템 이름(예: us-std)을 제공해야 합니다.
샘플 단위 시스템
"unitSystems":
{
"key": "unitcode",
"values": [
"us-std",
"si-std",
"us-std-precise",
"si-std-precise"
]
}
단위 시스템 세부 정보
이름 | 형식 | 설명 |
---|---|---|
unitSystems | 개체 | 단위 시스템 정보를 수집하는 JSON 개체입니다. |
key | string | API 입력에서 단위 정보를 수집하는 데 사용되는 매개 변수의 이름입니다. |
values | string | 확장에서 지원하는 단위 시스템 이름 목록입니다. |
플랫폼 및 사용자 지정 매개 변수
각 날씨 API 응답에서 출력의 일부로 전송되는 날씨 측정값(예: 온도, 이슬점 등)을 매개 변수로 호출합니다.
따라서 매개 변수와 관련하여 Data Manager for Agriculture는 내부적으로 다음 매개 변수 세트를 지원하고 Platform parameters
로 처리합니다.
- cloudCover
- dateTime
- dewPoint
- growingDegreeDay
- precipitation
- pressure
- relativeHumidity
- soilMoisture
- soilTemperature
- 온도
- visibility
- wetBulbTemperature
- windChill
- windDirection
- windGust
- windSpeed
따라서 플랫폼 매개 변수에 속하지 않는 날씨 매개 변수를 전송하는 모든 확장은 이를 Custom parameters
의 일부로 전송합니다. 플랫폼 및 고객 매개 변수 간의 주요 차이점은 Data Manager for Agriculture 날씨 API를 사용하는 사용자는 사용자 지정 매개 변수가 아닌 플랫폼 매개 변수(예: 온도 > 30)를 쿼리하고 필터링할 수 있다는 것입니다. 그러나 사용자 지정 매개 변수는 날씨 쿼리 출력의 일부로 전송됩니다.
이 섹션에서 확장은 지원되는 모든 단위 시스템의 각 매개 변수에 대한 단위 정보를 제공합니다. 이 Data Manager for Agriculture를 사용하면 확장의 이 섹션에 제공된 정보를 기반으로 각 날씨 매개 변수의 기본 측정 단위가 무엇인지 알 수 있습니다.
참고 항목
- 단위를 적용할 수 없는 경우 특정 매개 변수에 대해서는 해당 단위만 언급하지 마세요(예: weatherDescriptor).
- 특정 매개 변수의 경우 단위가 모든 단위 시스템에 대해 동일하면 모든 단위 시스템에서 동일한 단위를 언급합니다. (예: cloudCover)
샘플 플랫폼 및 사용자 지정 매개 변수
"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"
}
]
},
]
플랫폼 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
platformParameters | array | 각 개체가 하나의 플랫폼 매개 변수인 플랫폼 매개 변수의 JSON 배열입니다. |
farmBeatsName | string | Data Manager for Agriculture에서 제공하는 매개 변수의 이름입니다. |
farmBeatsDataType | string | Data Manager for Agriculture에서 제공하는 매개 변수의 데이터 형식입니다. |
description | string | Data Manager for Agriculture에서 제공하는 매개 변수에 대한 설명입니다. |
measurementUnits | string | 확장에서 지원하는 각 단위 시스템 values 에 대한 JSON 단위 배열입니다. |
unitSystem | string | 확장에서 지원하는 단위 시스템 value 입니다. |
unit | string | 특정 날씨 매개 변수(예: dewPoint의 경우 F )에 대한 측정 단위입니다. |
사용자 지정 매개 변수 세부 정보
이름 | 형식 | 설명 |
---|---|---|
customParameters | 개체 | 각 개체가 하나의 사용자 지정 매개 변수인 사용자 지정 매개 변수의 JSON 배열입니다. |
providerName | string | 확장에서 제공하는 매개 변수의 이름입니다. |
providerDataType | string | 확장에서 제공하는 매개 변수의 데이터 형식입니다. |
description | string | 확장에서 제공하는 매개 변수에 대한 설명입니다. |
measurementUnits | string | 확장에서 지원하는 각 단위 시스템 values 에 대한 JSON 단위 배열입니다. |
unitSystem | string | 확장에서 지원하는 단위 시스템 value 입니다. |
unit | string | 특정 날씨 매개 변수(예: airTempMax의 경우 F )에 대한 측정 단위입니다. |
플랫폼 및 사용자 지정 템플릿
템플릿은 확장 API 출력(JSON 응답)을 Data Manager for Agriculture에서 예상하는 형식으로 변환하기 위해 확장에서 제공하는 매핑 정보입니다. 이제 이 다양한 API 출력 형식을 사용하여 하나의 단일 형식으로 균일하게 매핑/변환할 수 있습니다.
템플릿 솔루션은 확장에서 제공하는 JSON 출력을 구문 분석하는 가장 효과적인 방법 중 하나입니다. 날씨 확장의 경우 Data Manager for Agriculture는 HandleBars 템플릿을 사용하여 확장을 작성할 것으로 예상합니다. HandleBars는 식을 사용하기 쉬운 오픈 소스 템플릿 언어입니다.
참고 항목
제공된 예제에서 HandleBars 템플릿을 사용해 보고 도우미 함수를 사용하여 Data Manager for Agriculture에서 아직 제공하지 않은 경우 사용자 고유의 구문 분석 논리를 빌드하는 방법을 알아보는 것이 좋습니다.
대략적으로 API 응답을 입력으로 사용하고 Data Manager for Agriculture에서 예상하는 형식으로 출력을 생성하여 템플릿이 작동하는 방식입니다.
위의 그림과 같이 해당 API 응답에 대해 템플릿의 유효성을 검사하고 확장에서 유효성이 검사된 템플릿을 사용합니다. 다음은 API 응답과 해당 플랫폼 및 사용자 지정 템플릿의 예입니다.
샘플 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
}
}
}
}
}
위의 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}} }"
}
}
참고 항목
HandleBars에서 생성된 템플릿은 \"<text>\"
을 추가하여 JSON 형식과 호환되도록 문자열화됩니다.
도우미 함수
도우미 함수는 템플릿에서 기본적으로 지원되지 않는 데이터에 대한 특정 변환을 수행하는 데 사용됩니다. Data Manager for Agriculture에서 지원하는 도우미 함수는 다음과 같습니다.
샘플 도우미 함수
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);
});
이러한 도우미 함수는 어떤 작업을 수행하나요?
- SplitAndTake(object valueObject, string separator, int index) - 이 함수는 구분 기호를 기반으로 문자열(예: "47,-97")을 분할하는 데 사용되며 지정된 인덱스에서 요소를 사용합니다(예: index=0은 "47"을 제공함).
- ConvertDateInFormatToDateTime(object dateObject, string format) - 이 함수는 지정된 형식(예: 2016-12-15)의 날짜를 DateTime 문자열로 구문 분석하는 데 사용됩니다.
- ConvertUnixTimeToDateTime(object unixTimeStamp) - 이 함수는 unix 타임스탬프(예: 1392267600)를 날짜/시간 문자열로 변환하는 데 사용됩니다.
- GetObjectFromListWithKeyValuePair(Array listOfObjects, string key, string value) - 개체 목록이 지정된 경우 키(
type
) 값(RAIN
) 쌍을 기반으로 개체를 가져옵니다. 아래 예에서는"type": "RAIN"
의 강수량을 선택하기 위해 이 함수가 사용됩니다.
{
"precipitation": [
{
"type": "SNOW",
"amount": 0
},
{
"type": "RAIN",
"amount": 0.01
}
]
}
- GetValueFromObject(string jsonString, string key) - json 개체를 문자열로 지정하면 키에 따라 값을 가져옵니다.
참고 항목
작성 중인 확장에 API 응답을 구문 분석하기 위한 추가 도우미 함수가 필요한 경우 지원 티켓을 만들어 문의하세요.