From fe2bd98589faf41669edf2d79fcb85b4b4700b65 Mon Sep 17 00:00:00 2001 From: tamara Date: Tue, 12 Mar 2024 11:42:16 +0100 Subject: [PATCH] added target and threshold definitions + changed productionPurposeCode to be functional --- FarmmapsKPI/KPIApplication.cs | 2 +- FarmmapsKPI/KPIInput.json | 18 +++++++++--------- .../KPIdefinitionsTargetsThresholds.csv | 18 +++++++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/FarmmapsKPI/KPIApplication.cs b/FarmmapsKPI/KPIApplication.cs index a81248b..149e0fd 100644 --- a/FarmmapsKPI/KPIApplication.cs +++ b/FarmmapsKPI/KPIApplication.cs @@ -403,7 +403,7 @@ namespace FarmmapsKPI if (kpio.id != kpioPrevious.id) { KPIelementsOfBalance kPIelementsOfBalance = kpio.data.values; - if (kpio.id == "A1") //TtD not functional + if (kpio.id == "A1") //TtD { //Make a new dataList = new line to be written //Fill the datalist with this kpi diff --git a/FarmmapsKPI/KPIInput.json b/FarmmapsKPI/KPIInput.json index 9484ba4..99f33e8 100644 --- a/FarmmapsKPI/KPIInput.json +++ b/FarmmapsKPI/KPIInput.json @@ -17,7 +17,7 @@ "soilName": "Sand", //From codelist CL405 "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 - "productionPurposeCode": "003", //From codelist CL251. For testing, see case with consumption & starch potato + "productionPurposeCode": "3", //From codelist CL251. For testing, see case with consumption & starch potato "productionPurposeName": "consumption" //From codelist CL251 }, "CropRecordingItemCode": "", // could contain for example this: "314aa1b6480b493ba28a5f55039a01d4" if this is the CropRecordingItemCode of the provided CropfieldItemCode. And then if useExistingCropfieldWithChildren = true, this would be used @@ -81,7 +81,7 @@ "soilName": "Clay", //From codelist CL405 "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 - "productionPurposeCode": "003", //From codelist CL251. For testing, see case with consumption & starch potato + "productionPurposeCode": "3", //From codelist CL251. For testing, see case with consumption & starch potato "productionPurposeName": "consumption" //From codelist CL251 }, "CropRecordingItemCode": "", // could contain for example this: "314aa1b6480b493ba28a5f55039a01d4" if this is the CropRecordingItemCode of the provided CropfieldItemCode. And then if useExistingCropfieldWithChildren = true, this would be used @@ -145,7 +145,7 @@ "soilName": "Sand", "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 - "productionPurposeCode": "002", //From codelist CL251. For testing, see case with consumption & starch potato + "productionPurposeCode": "2", //From codelist CL251. For testing, see case with consumption & starch potato "productionPurposeName": "starch" //From codelist CL251 }, "CropRecordingItemCode": "", // could contain for example this: "314aa1b6480b493ba28a5f55039a01d4" if this is the CropRecordingItemCode of the provided CropfieldItemCode. And then if useExistingCropfieldWithChildren = true, this would be used @@ -205,7 +205,7 @@ "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property //"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property - "productionPurposeCode": "003", //From codelist CL251. Can be omitted if unknown + "productionPurposeCode": "3", //From codelist CL251. Can be omitted if unknown "productionPurposeName": "consumption" //From codelist CL251. Can be omitted if unknown }, "CropRecordingItemCode": "", @@ -298,7 +298,7 @@ "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property //"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property - "productionPurposeCode": "003", //From codelist CL251. Can be omitted if unknown + "productionPurposeCode": "3", //From codelist CL251. Can be omitted if unknown "productionPurposeName": "consumption" //From codelist CL251. Can be omitted if unknown }, "CropRecordingItemCode": "", @@ -373,7 +373,7 @@ "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property //"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property - "productionPurposeCode": "003", //From codelist CL251. Can be omitted if unknown + "productionPurposeCode": "3", //From codelist CL251. Can be omitted if unknown "productionPurposeName": "consumption" //From codelist CL251. Can be omitted if unknown }, "CropRecordingItemCode": "", @@ -448,7 +448,7 @@ "cropTypeName": "Potato", //From codelist CL263 //"rootDepthMax": 45, //not needed for KPI calculation, but shown here to know this is a possible property //"emergenceDate": "2022-05-16T00:00:00", //not needed for KPI calculation, but shown here to know this is a possible property - "productionPurposeCode": "003", //From codelist CL251. Can be omitted if unknown + "productionPurposeCode": "3", //From codelist CL251. Can be omitted if unknown "productionPurposeName": "consumption" //From codelist CL251. Can be omitted if unknown }, "CropRecordingItemCode": "", @@ -518,7 +518,7 @@ "final": true, //always true "cropTypeCode": "1010101", //From codelist CL263 "cropTypeName": "Potato", //From codelist CL263 - "productionPurposeCode": "003", //From codelist CL251. Can be omitted if unknown + "productionPurposeCode": "3", //From codelist CL251. Can be omitted if unknown "productionPurposeName": "consumption" //From codelist CL251. Can be omitted if unknown }, "CropRecordingItemCode": "", // could contain for example this: "314aa1b6480b493ba28a5f55039a01d4" if this is the CropRecordingItemCode of the provided CropfieldItemCode. And then if useExistingCropfieldWithChildren = true, this would be used @@ -781,7 +781,7 @@ { "code": "fm009", //TODO: which codelist? "label": "strawyield", - "value": "5.9" + "value": "6.8" //was 5.9 } ], "CropYear": 2022, diff --git a/FarmmapsKPI/KPIdefinitionsTargetsThresholds.csv b/FarmmapsKPI/KPIdefinitionsTargetsThresholds.csv index 4d80804..665266c 100644 --- a/FarmmapsKPI/KPIdefinitionsTargetsThresholds.csv +++ b/FarmmapsKPI/KPIdefinitionsTargetsThresholds.csv @@ -1,9 +1,9 @@ -KPIid,KPIvariable,KPItargetvalue,KPIthresholdValue -A1,yield,target value as in benchmark value for same crop in same region. E.g. cropyield target is from Central Bureau of Statistics (CBS) for same crop in region in which the cropfield (geometry) is located,no threshold for this KPI -B1,nitrogen,etc, -B2,phosphate,, -C1,effective organic matter supply,, -D1,pesticides,, -E1,mpb,, -F1,greenness,, -F2,rotationindex,, +KPIid,KPIvariable,KPItargetvalue,KPIthresholdValue, +A1,yield,target value as in benchmark value for same crop in same region. E.g. cropyield target is from Central Bureau of Statistics (CBS) for same crop in region in which the cropfield (geometry) is located.,No threshold for this KPI., +B1,nitrogen,The target value depends on the soil type. To calculate the threshold and target values data from CBS and RIVM are used. The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw).,The threshold value depends on soil type and groundwater levels. To calculate the threshold and target values data from CBS and RIVM are used. The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw)., +B2,phosphate,The phosphate target value is set at 20 kg/ha ,No threshold for this KPI., +C1,effective organic matter supply,The target value for this KPI is the amount of EOM that companies with ‘ Goede Landbouwpraktijk’ supply (2500 kg EOM/ha/year). ,The threshold value is 2000 kg EOM/ha/year. This value comes from van Doorn et al. (2022) which states that on average 2000 kg of EOM/ha degrades on Dutch agricultural land. This is the also the threshold value from biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw), +D1,pesticides,The target value fort his KPI is to reduce pesticide use to 50% of the amount used in the Netherlands during 2020. Data for 2020 is obtained from CBS statline ,No threshold for this KPI., +E1,mpb,"0 applications with exceedances of either the target MBP or risks. MBP's consist of three categories (groundwater, soil life, and aquatic life). An value of <100 in either or these categories counts as exceedance. Each application of pesticides cannot have more then one exceedance for MBP. Risks consist of two categories (natural enemies and pollinators), a value of B or C in either category counts as exceedance. Each application of pesticides cannot have more then one exceedance for risks. Values and methodology come from Environmental Yardstick for Pesticides (https://www.milieumeetlat.nl/). The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw).","0 applications with exceedances of either the target MBP or risks. MBP's consist of three categories (groundwater, soil life, and aquatic life). An value of <10 in either or these categories counts as exceedance. Each application of pesticides cannot have more then one exceedance for MBP. Risks consist of two categories (natural enemies and pollinators), a value of B or C in either category counts as exceedance. Each application of pesticides cannot have more then one exceedance for risks. Values and methodology come from Environmental Yardstick for Pesticides (https://www.milieumeetlat.nl/). The same calculation method is also used in biodiversiteitsmonitoring akkerbouw (https://www.bo-akkerbouw.nl/kennis-en-innovatie/pps-biodiversiteitsmonitor-akkerbouw).", +F1,greenness,Target value is 75%.,Threshold value is 25%., +F2,rotationindex,Target value is 75%.,Threshold value is 25%.,